Przeglądaj źródła

代码还原2.0.0

chengyao 4 lat temu
rodzic
commit
d76d2985b1

+ 0 - 25
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -164,31 +164,6 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/data/getColumnZhAndCh").permitAll()
                 .antMatchers("/qc/data/analyseRec").permitAll()
                 .antMatchers("/qc/data/hisDataDeal").permitAll()
-                .antMatchers("/qc/data_str/sendAdmissionNote").permitAll()
-                .antMatchers("/qc/data_str/sendBloodResult").permitAll()
-                .antMatchers("/qc/data_str/sendBloodTransfusion").permitAll()
-                .antMatchers("/qc/data_str/sendConsultationApply").permitAll()
-                .antMatchers("/qc/data_str/sendConsultationNote").permitAll()
-                .antMatchers("/qc/data_str/sendConsultationRecord").permitAll()
-                .antMatchers("/qc/data_str/sendConsultationResult").permitAll()
-                .antMatchers("/qc/data_str/sendCrisisNote").permitAll()
-                .antMatchers("/qc/data_str/sendDeathDiscussion").permitAll()
-                .antMatchers("/qc/data_str/sendDeathNote").permitAll()
-                .antMatchers("/qc/data_str/sendDifficultCase").permitAll()
-                .antMatchers("/qc/data_str/sendFirstRecord").permitAll()
-                .antMatchers("/qc/data_str/sendIllCritically").permitAll()
-                .antMatchers("/qc/data_str/sendIllSeriousl").permitAll()
-                .antMatchers("/qc/data_str/sendLeaveHospital").permitAll()
-                .antMatchers("/qc/data_str/sendOperativeFirstRecord").permitAll()
-                .antMatchers("/qc/data_str/sendOperativeNote").permitAll()
-                .antMatchers("/qc/data_str/sendWardRecord").permitAll()
-                .antMatchers("/qc/data_str/sendTransferOutNote").permitAll()
-                .antMatchers("/qc/data_str/sendTransferInNote").permitAll()
-                .antMatchers("/qc/data_str/sendRescueNote").permitAll()
-                .antMatchers("/qc/data_str/sendPeriodConclusion").permitAll()
-                .antMatchers("/qc/data_str/sendPreoperativeDiscussion").permitAll()
-                .antMatchers("/qc/data_str/sendTalkInform").permitAll()
-                .antMatchers("/qc/data_str/sendInformedConsent").permitAll()
                 .antMatchers("/qc/doctoradvice/getPage").permitAll()
                 .antMatchers("/qc/medPacsInfo/getCheckPage").permitAll()
                 .antMatchers("/qc/medLisInfo/getExaminePage").permitAll()

+ 0 - 25
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -208,31 +208,6 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/data/getColumnZhAndCh", request)
                 || matchers("/qc/data/analyseRec", request)
                 || matchers("/qc/data/hisDataDeal", request)
-                || matchers("/qc/data_str/sendAdmissionNote", request)
-                || matchers("/qc/data_str/sendBloodResult", request)
-                || matchers("/qc/data_str/sendBloodTransfusion", request)
-                || matchers("/qc/data_str/sendConsultationApply", request)
-                || matchers("/qc/data_str/sendConsultationNote", request)
-                || matchers("/qc/data_str/sendConsultationRecord", request)
-                || matchers("/qc/data_str/sendConsultationResult", request)
-                || matchers("/qc/data_str/sendCrisisNote", request)
-                || matchers("/qc/data_str/sendDeathDiscussion", request)
-                || matchers("/qc/data_str/sendDeathNote", request)
-                || matchers("/qc/data_str/sendDifficultCase", request)
-                || matchers("/qc/data_str/sendFirstRecord", request)
-                || matchers("/qc/data_str/sendIllCritically", request)
-                || matchers("/qc/data_str/sendIllSeriousl", request)
-                || matchers("/qc/data_str/sendLeaveHospital", request)
-                || matchers("/qc/data_str/sendOperativeFirstRecord", request)
-                || matchers("/qc/data_str/sendOperativeNote", request)
-                || matchers("/qc/data_str/sendWardRecord", request)
-                || matchers("/qc/data_str/sendTransferOutNote", request)
-                || matchers("/qc/data_str/sendTransferInNote", request)
-                || matchers("/qc/data_str/sendRescueNote", request)
-                || matchers("/qc/data_str/sendPeriodConclusion", request)
-                || matchers("/qc/data_str/sendPreoperativeDiscussion", request)
-                || matchers("/qc/data_str/sendTalkInform", request)
-                || matchers("/qc/data_str/sendInformedConsent", request)
                 || matchers("/qc/doctoradvice/getPage", request)
                 || matchers("/qc/medPacsInfo/getCheckPage", request)
                 || matchers("/qc/medLisInfo/getExaminePage", request)

+ 7 - 8
src/main/java/com/diagbot/dto/QcResultApiDTO.java

@@ -18,14 +18,13 @@ public class QcResultApiDTO implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 等级
-     */
-    private String level;
-
-    /**
-     * 最后得分
-     */
+    //得分
     private BigDecimal scoreRes;
+    //等级
+    private String level;
+    //缺陷总数
+    private Long num;
+    //缺陷总扣分
+    private BigDecimal numScore;
 
 }

+ 167 - 78
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -46,6 +46,7 @@ import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -156,6 +157,9 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     MedTransferRecordFacade medTransferRecordFacade;
     @Autowired
     MedNurseFacade medNurseFacade;
+    @Autowired
+    SysHospitalSetFacade sysHospitalSetFacade;
+
 
 
     /**
@@ -270,48 +274,6 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
-    /**
-     *  仅获取缺陷总揽提示信息
-     *
-     * @param analyzeRunVO
-     * @return
-     */
-    public List<MsgDTO> getMsgByBehospitalCode(AnalyzeRunVO analyzeRunVO) {
-        // 获取病历信息
-        BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("hospital_id", analyzeRunVO.getHospitalId())
-                .eq("behospital_code", analyzeRunVO.getBehospitalCode()), false
-        );
-        if (null == behospitalInfo) {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该病历不存在或已删除!");
-        }
-        // 获取质控条目
-        AnalyzeVO analyzeVO = new AnalyzeVO();
-        BeanUtil.copyProperties(analyzeRunVO, analyzeVO);
-        List<QcCasesEntryDTO> qcCasesEntryDTOList = qcCasesEntryFacade.getQcCasesEntry(analyzeVO);
-        if (ListUtil.isEmpty(qcCasesEntryDTOList)) {
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
-        }
-
-        List<MsgDTO> msgDTOList = getMsg(analyzeVO);
-            if (ListUtil.isNotEmpty(msgDTOList)) {
-                // 从qc_question_info的cases_entry_ids获取
-                Map<String, Object> paramMap = new HashMap<>();
-                paramMap.put("hospitalId",  analyzeRunVO.getHospitalId());
-                paramMap.put("casesEntryIds", msgDTOList.stream().map(r -> r.getCasesEntryId()).collect(Collectors.toList()));
-                Map<Long, List<QuestionEntryDTO>> quesEntryMap = qcQuestionFacade.getByCaseEntryIdsFac(paramMap);
-                for (MsgDTO msgDTO : msgDTOList) {
-                    if (quesEntryMap.get(msgDTO.getCasesEntryId()) != null) {
-                        msgDTO.setPageKeyList(quesEntryMap.get(msgDTO.getCasesEntryId())
-                                .stream().map(r -> r.getId()).collect(Collectors.toList()));
-                    }
-                }
-            }
-        return msgDTOList;
-    }
-
-
     /**
      * 处理数据(公共方法)
      *
@@ -950,9 +912,14 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         }
 
         // 病案首页
-        if (homePage != null) {
+        //义乌数据回来还要处理
+        if(analyzeVO.getHospitalId()==5 && ListUtil.isNotEmpty(recMap.get("病案首页"))){
+            addDataWithInnerKey("病案首页", recMap, medrecVoList);
+        }else {
+            if(homePage != null){
             addDataWithFirstPage("病案首页", homePage, medrecVoList, dicMap,
                     homePageList, homeOperationInfoList);
+             }
         }
 
         queryVo.setMedrec(medrecVoList);
@@ -974,7 +941,6 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         analyzeVO.setHospitalId(hospitalId);
 
         // 处理公共数据
-
             QueryVo  queryVo = dealCommonData(hospitalId, analyzeVO);
         queryVo.setUseCrfCache(analyzeVO.isUseCrfCache());
         //  调用质控接口
@@ -1566,23 +1532,115 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     /**
      * 评分api
      *
-     * @param analyzeApiVO
+     * @param analyzeRunVO
      * @return
      */
-    public Map<String, Object> analyzeApi(AnalyzeApiVO analyzeApiVO) {
+    public Map<String, Object> analyzeApi(AnalyzeRunVO analyzeRunVO) {
+        Map<String, Object> resMapData = new HashMap<>(); // 返回结果
         AnalyzeVO analyzeVO = new AnalyzeVO();
-        BeanUtil.copyProperties(analyzeApiVO, analyzeVO);
-        // 评分
-        analyze(analyzeVO);
-        // 获取结果
-        GetDetailVO getDetailVO = new GetDetailVO();
-        getDetailVO.setHospitalId(analyzeApiVO.getHospitalId());
-        getDetailVO.setBehospitalCode(analyzeApiVO.getBehospitalCode());
-        getDetailVO.setNeedGroup(analyzeApiVO.getNeedGroup());
-        return getByBehospitalCodeApi(getDetailVO);
+        BeanUtil.copyProperties(analyzeRunVO, analyzeVO);
+        Long hospitalId = analyzeVO.getHospitalId();
+        // 获取病历信息
+        BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", analyzeRunVO.getHospitalId())
+                .eq("behospital_code", analyzeRunVO.getBehospitalCode()), false
+        );
+        if (null == behospitalInfo) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该病历不存在或已删除!");
+        }
+        // 处理公共数据
+        QueryVo queryVo = dealCommonData(hospitalId, analyzeVO);
+        //  调用质控接口
+        Response<OutputInfo> response = qcServiceClient.extract(queryVo);
+        if (response == null || response.getData() == null) {
+            if (null == response) {
+                throw new CommonException(CommonErrorCode.RPC_ERROR, "远程质控接口没有返回数据!【" + analyzeVO.getBehospitalCode() + "】");
+            } else {
+                throw new CommonException(CommonErrorCode.RPC_ERROR,
+                        "远程质控接口没有返回数据!【" + analyzeVO.getBehospitalCode() + "】错误原因:" + response.getMsg());
+            }
+        }
+        OutputInfo outputInfo = response.getData();
+        // 质控编码列表
+        List<String> codeList = new ArrayList<>();
+        // code和info的映射map
+        Map<String, String> codeToInfoMap = new LinkedHashMap<>();
+        // 对codeList 和 codeToInfoMap进行赋值
+        setCodeData(outputInfo, codeList, codeToInfoMap);
+        AlgorithmDTO algorithmDTO = new AlgorithmDTO();
+        // 如果是1,说明已是终末质控,不再保存质控结果数据;如果是0,则保存质控结果数据
+        if ("0".equals(analyzeRunVO.getIsPlacefile())) {
+            Map<String, Object> resMap = calScoreAndSave(outputInfo, codeList, codeToInfoMap, analyzeVO, queryVo.getBehospitalInfo().getIsPlacefile());
+            algorithmDTO = (AlgorithmDTO) resMap.get("algorithmDTO");
+        }else{
+            //终末质控不保存数据
+            Map<String, Object> resMap = calScore(outputInfo, codeList, codeToInfoMap, analyzeVO, queryVo.getBehospitalInfo().getIsPlacefile());
+            algorithmDTO = (AlgorithmDTO) resMap.get("algorithmDTO");
+        }
+
+        List<MsgDTO> msgDTOList = getMsg(analyzeVO);
+        if (ListUtil.isNotEmpty(msgDTOList)) {
+            // 从qc_question_info的cases_entry_ids获取
+            Map<String, Object> paramMap = new HashMap<>();
+            paramMap.put("hospitalId",  analyzeRunVO.getHospitalId());
+            paramMap.put("casesEntryIds", msgDTOList.stream().map(r -> r.getCasesEntryId()).collect(Collectors.toList()));
+            Map<Long, List<QuestionEntryDTO>> quesEntryMap = qcQuestionFacade.getByCaseEntryIdsFac(paramMap);
+            for (MsgDTO msgDTO : msgDTOList) {
+                if (quesEntryMap.get(msgDTO.getCasesEntryId()) != null) {
+                    msgDTO.setPageKeyList(quesEntryMap.get(msgDTO.getCasesEntryId())
+                            .stream().map(r -> r.getId()).collect(Collectors.toList()));
+                }
+            }
+        }
+
+        //返回参数组装
+        BigDecimal bigDecimal = new BigDecimal(0);
+        BigDecimal res = new BigDecimal(120);
+        BigDecimal resPr = new BigDecimal(100);
+        String reNum = "0";
+        SysHospitalSet sysHospitalSet
+                = sysHospitalSetFacade.getOne(new QueryWrapper<SysHospitalSet>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("hospital_id", analyzeRunVO.getHospitalId())
+                , false);
+        if (null != sysHospitalSet && sysHospitalSet.getValue().equals("1")) {
+            //百分制
+            reNum = "1";
+        }
+        QcResultApiDTO qcResultApiDTO = new QcResultApiDTO();
+        if(StringUtils.isNotEmpty(algorithmDTO.getLevel()) && algorithmDTO.getScore()!=null && msgDTOList != null){
+            if("1".equals(reNum)) {
+                bigDecimal = resPr.subtract(algorithmDTO.getScore());
+            }else if("0".equals(reNum)){
+                bigDecimal = res.subtract(algorithmDTO.getScore().multiply(new BigDecimal(120))
+                        .divide(new BigDecimal(100), 1, RoundingMode.HALF_UP));
+            }
+
+        //缺陷总数
+        Long num = msgDTOList
+                .stream()
+                .filter(Objects::nonNull)
+                .count();
+            qcResultApiDTO.setScoreRes(algorithmDTO.getScore());
+            qcResultApiDTO.setLevel(algorithmDTO.getLevel());
+            qcResultApiDTO.setNum(num);
+            qcResultApiDTO.setNumScore(bigDecimal);
+            resMapData.put("result", qcResultApiDTO);
+            List<MsgApiDTO> msgApiDTOList = BeanUtil.listCopyTo(msgDTOList, MsgApiDTO.class);
+            if (analyzeRunVO.getNeedGroup() == 0) {
+                resMapData.put("details", msgApiDTOList);
+            } else {
+                Map<String, List<MsgApiDTO>> msgMap = EntityUtil.makeEntityListMap(msgApiDTOList, "modelName");
+                resMapData.put("details", msgMap);
+            }
+        };
+        return resMapData;
     }
 
 
+
+
     /**
      * 获取明细api
      *
@@ -1668,31 +1726,62 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
      * @return
      */
     public AnalyzeRunDTO analyzeRun(AnalyzeRunVO analyzeRunVO) {
-        List<MsgDTO> msgDTOList = this.getMsgByBehospitalCode(analyzeRunVO);
+        Long modeId = analyzeRunVO.getModeId();
+        analyzeRunVO.setModeId(null);
+        AnalyzeVO analyzeVO = new AnalyzeVO();
+        BeanUtil.copyProperties(analyzeRunVO, analyzeVO);
+        Long hospitalId = analyzeVO.getHospitalId();
+
+        // 处理公共数据
+            QueryVo queryVo = dealCommonData(hospitalId, analyzeVO);
+        //  调用质控接口
+        Response<OutputInfo> response = qcServiceClient.extract(queryVo);
+        if (response == null || response.getData() == null) {
+            if (null == response) {
+                throw new CommonException(CommonErrorCode.RPC_ERROR, "远程质控接口没有返回数据!【" + analyzeVO.getBehospitalCode() + "】");
+            } else {
+                throw new CommonException(CommonErrorCode.RPC_ERROR,
+                        "远程质控接口没有返回数据!【" + analyzeVO.getBehospitalCode() + "】错误原因:" + response.getMsg());
+            }
+        }
+        OutputInfo outputInfo = response.getData();
+        // 质控编码列表
+        List<String> codeList = new ArrayList<>();
+        // code和info的映射map
+        Map<String, String> codeToInfoMap = new LinkedHashMap<>();
+        // 对codeList 和 codeToInfoMap进行赋值
+        setCodeData(outputInfo, codeList, codeToInfoMap);
+
+        // 如果是1,说明已是终末质控,不再保存质控结果数据;如果是0,则保存质控结果数据
+        if ("0".equals(analyzeRunVO.getIsPlacefile())) {
+            // 计算分值并保存结果至数据库
+            Map<String, Object> resMap = calScoreAndSave(outputInfo, codeList, codeToInfoMap, analyzeVO, queryVo.getBehospitalInfo().getIsPlacefile());
+        }
+
+        // 返回缺陷提示信息
+        List<MsgDTO> msgDTOList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(codeList)) {
+            AnalyzeCodeVO analyzeCodeVO = new AnalyzeCodeVO();
+            analyzeCodeVO.setCodeList(codeList);
+            analyzeCodeVO.setHospitalId(hospitalId);
+            analyzeCodeVO.setModeId(modeId);
+            // 获取缺陷条目信息
+            msgDTOList = getMsgByEntryCode(analyzeCodeVO);
+            // 设置info信息
+            if (codeToInfoMap != null && !codeToInfoMap.isEmpty()) {
+                for (MsgDTO msgDTO : msgDTOList) {
+                    String info = codeToInfoMap.get(msgDTO.getCode());
+                    if (StringUtil.isNotBlank(info)) {
+                        msgDTO.setInfo(info);
+                    }
+                }
+            }
+        }
+
         //返回参数组装
         AnalyzeRunDTO analyzeRunDTO = new AnalyzeRunDTO();
-        //缺陷总扣分
-        BigDecimal numScore = msgDTOList
-                .stream()
-                .map(MsgDTO::getScore)
-                .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-        //缺陷总数
-        Long num = msgDTOList
-                .stream()
-                .filter(Objects::nonNull)
-                .count();
-        analyzeRunDTO.setNum(num);
-        analyzeRunDTO.setNumScore(numScore);
-        QcresultInfo qcresultInfo = qcresultInfoFacade.getOne(new QueryWrapper<QcresultInfo>()
-                .eq("behospital_code", analyzeRunVO.getBehospitalCode())
-                .eq("hospital_id", analyzeRunVO.getHospitalId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .select("behospital_code", "level", "score_res"));
-        BigDecimal bigDecimal = new BigDecimal(0);
-        if(null != qcresultInfo){
-            analyzeRunDTO.setLevel(qcresultInfo.getLevel()==null?"":qcresultInfo.getLevel());
-            analyzeRunDTO.setScoreRes(qcresultInfo.getScoreRes() ==null ? bigDecimal : qcresultInfo.getScoreRes());
-        }
+        // analyzeRunDTO.setScoreRes(algorithmDTO.getScore());
+        // analyzeRunDTO.setLevel(algorithmDTO.getLevel());
         analyzeRunDTO.setMsgDTOList(msgDTOList);
         return analyzeRunDTO;
     }

+ 2 - 0
src/main/java/com/diagbot/vo/AnalyzeRunVO.java

@@ -22,4 +22,6 @@ public class AnalyzeRunVO {
     private Long modeId;
     // 归档字段
     private String isPlacefile = "0";
+
+    private Integer NeedGroup = 0;
 }

+ 2 - 2
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -122,8 +122,8 @@ public class BehospitalInfoController {
     @SysLogger("analyze_api")
     @Transactional
     //    @ApiIgnore
-    public RespDTO<Map<String, Object>> analyzeApi(@RequestBody AnalyzeApiVO analyzeApiVO) {
-        return RespDTO.onSuc(behospitalInfoFacade.analyzeApi(analyzeApiVO));
+    public RespDTO<Map<String, Object> > analyzeApi(@RequestBody AnalyzeRunVO analyzeRunVO) {
+        return RespDTO.onSuc(behospitalInfoFacade.analyzeApi(analyzeRunVO));
     }
 
 

+ 1 - 5
src/main/resources/application-dev.yml

@@ -175,8 +175,4 @@ xml_analyse:
 
 #函数初始化modeId开关
 initmodeid:
-  enable: false
-
-#对接过程中是否记录正常流程的日志
-log_switch:
-  enable: true
+  enable: false

+ 3 - 7
src/main/resources/application-local.yml

@@ -59,7 +59,7 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://127.0.0.1:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
       # 连接池的配置信息
@@ -112,7 +112,7 @@ spring:
       cache: 8 # cache索引
       token: 8 # Token索引
     host: 192.168.2.236  #Redis服务器地址
-    port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
+    port: 6378 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
     password: lantone # Redis服务器连接密码(默认为空)
     lettuce:
       pool:
@@ -175,8 +175,4 @@ xml_analyse:
 
 #函数初始化modeId开关
 initmodeid:
-  enable: false
-
-#对接过程中是否记录正常流程的日志
-log_switch:
-  enable: true
+  enable: false

+ 1 - 5
src/main/resources/application-pre.yml

@@ -175,8 +175,4 @@ xml_analyse:
 
 #函数初始化modeId开关
 initmodeid:
-  enable: false
-
-#对接过程中是否记录正常流程的日志
-log_switch:
-  enable: true
+  enable: false

+ 1 - 5
src/main/resources/application-pro.yml

@@ -175,8 +175,4 @@ xml_analyse:
 
 #函数初始化modeId开关
 initmodeid:
-  enable: false
-
-#对接过程中是否记录正常流程的日志
-log_switch:
-  enable: true
+  enable: false

+ 1 - 5
src/main/resources/application-test.yml

@@ -175,8 +175,4 @@ xml_analyse:
 
 #函数初始化modeId开关
 initmodeid:
-  enable: false
-
-#对接过程中是否记录正常流程的日志
-log_switch:
-  enable: true
+  enable: false