Parcourir la source

Merge branch 'dev/20200513run_1.0.0' into develop

gaodm il y a 5 ans
Parent
commit
0ba76058bb
32 fichiers modifiés avec 535 ajouts et 32 suppressions
  1. 2 0
      doc/003.20200513运行质控1.0.0/qc_init.sql
  2. 1 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  3. 1 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  4. 23 0
      src/main/java/com/diagbot/dto/AnalyzeRunDTO.java
  5. 2 0
      src/main/java/com/diagbot/dto/MsgDTO.java
  6. 4 0
      src/main/java/com/diagbot/entity/BasDeptInfo.java
  7. 3 0
      src/main/java/com/diagbot/entity/BehospitalInfo.java
  8. 27 24
      src/main/java/com/diagbot/entity/DoctorAdvice.java
  9. 3 0
      src/main/java/com/diagbot/entity/HomeDiagnoseInfo.java
  10. 3 0
      src/main/java/com/diagbot/entity/HomeOperationInfo.java
  11. 3 0
      src/main/java/com/diagbot/entity/HomePage.java
  12. 4 0
      src/main/java/com/diagbot/entity/MedRecordType.java
  13. 3 0
      src/main/java/com/diagbot/entity/MedicalRecord.java
  14. 3 0
      src/main/java/com/diagbot/entity/MedicalRecordContent.java
  15. 28 0
      src/main/java/com/diagbot/entity/QcModelHospital.java
  16. 220 5
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  17. 39 0
      src/main/java/com/diagbot/facade/QcModelHospitalFacade.java
  18. 3 0
      src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java
  19. 1 0
      src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java
  20. 16 0
      src/main/java/com/diagbot/mapper/QcModelHospitalMapper.java
  21. 3 0
      src/main/java/com/diagbot/service/BehospitalInfoService.java
  22. 16 0
      src/main/java/com/diagbot/service/QcModelHospitalService.java
  23. 6 0
      src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java
  24. 20 0
      src/main/java/com/diagbot/service/impl/QcModelHospitalServiceImpl.java
  25. 20 0
      src/main/java/com/diagbot/vo/AnalyzeCodeVO.java
  26. 24 0
      src/main/java/com/diagbot/vo/AnalyzeRunVO.java
  27. 2 0
      src/main/java/com/diagbot/vo/AnalyzeVO.java
  28. 17 1
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  29. 19 0
      src/main/resources/mapper/BehospitalInfoMapper.xml
  30. 3 0
      src/main/resources/mapper/QcCasesEntryMapper.xml
  31. 14 0
      src/main/resources/mapper/QcModelHospitalMapper.xml
  32. 2 2
      src/test/java/com/diagbot/CodeGeneration.java

+ 2 - 0
doc/003.20200513运行质控1.0.0/qc_init.sql

@@ -0,0 +1,2 @@
+use `qc`;
+alter table qc_model_hospital add column `is_deleted` char(3) DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除';

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

@@ -47,6 +47,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/behospitalInfo/execule").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_rpc").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_api").permitAll()
+                .antMatchers("/qc/behospitalInfo/analyze_run").permitAll()
                 .antMatchers("/qc/module/getById").permitAll()
                 .antMatchers("/qc/module/getModuleMap").permitAll()
                 .antMatchers("/qc/cases/getQcCases").permitAll()

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

@@ -90,6 +90,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/behospitalInfo/execule", request)
                 || matchers("/qc/behospitalInfo/analyze_rpc", request)
                 || matchers("/qc/behospitalInfo/analyze_api", request)
+                || matchers("/qc/behospitalInfo/analyze_run", request)
                 || matchers("/qc/module/getById", request)
                 || matchers("/qc/module/getModuleMap", request)
                 || matchers("/qc/cases/getQcCases", request)

+ 23 - 0
src/main/java/com/diagbot/dto/AnalyzeRunDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/15 12:24
+ */
+@Getter
+@Setter
+public class AnalyzeRunDTO {
+    // //得分
+    // private BigDecimal scoreRes;
+    // //等级
+    // private String level;
+    // 缺陷条目
+    private List<MsgDTO> msgDTOList = new ArrayList<>();
+}

+ 2 - 0
src/main/java/com/diagbot/dto/MsgDTO.java

@@ -22,6 +22,8 @@ public class MsgDTO {
     //提示信息
     private String msg;
     //提示信息
+    private String code;
+    //提示信息
     private String info;
     //标准提示信息
     private String standardMsg;

+ 4 - 0
src/main/java/com/diagbot/entity/BasDeptInfo.java

@@ -1,5 +1,8 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
 import java.io.Serializable;
 
@@ -18,6 +21,7 @@ public class BasDeptInfo implements Serializable {
     /**
      * 科室编码(HIS导入)
      */
+    @TableId(value = "dept_id",type = IdType.INPUT)
     private String deptId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/BehospitalInfo.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class BehospitalInfo implements Serializable {
     /**
      * 病人住院ID
      */
+    @TableId(value = "behospital_code",type = IdType.INPUT)
     private String behospitalCode;
 
     /**

+ 27 - 24
src/main/java/com/diagbot/entity/DoctorAdvice.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class DoctorAdvice implements Serializable {
     /**
      * 病人医嘱ID
      */
+    @TableId(value = "doctor_advice_id",type = IdType.INPUT)
     private String doctorAdviceId;
 
     /**
@@ -140,28 +143,28 @@ public class DoctorAdvice implements Serializable {
      */
     private String doctorName;
 
-//    /**
-//     * 是否删除,N:未删除,Y:删除
-//     */
-//    private String isDeleted;
-//
-//    /**
-//     * 记录创建时间
-//     */
-//    private Date gmtCreate;
-//
-//    /**
-//     * 记录修改时间,如果时间是1970年则表示纪录未修改
-//     */
-//    private Date gmtModified;
-//
-//    /**
-//     * 创建人,0表示无创建人值
-//     */
-//    private String creator;
-//
-//    /**
-//     * 修改人,如果为0则表示纪录未修改
-//     */
-//    private String modifier;
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 }

+ 3 - 0
src/main/java/com/diagbot/entity/HomeDiagnoseInfo.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class HomeDiagnoseInfo implements Serializable {
     /**
      * 病案首页ID
      */
+    @TableId(value = "home_page_id",type = IdType.INPUT)
     private String homePageId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/HomeOperationInfo.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class HomeOperationInfo implements Serializable {
     /**
      * 病案首页ID
      */
+    @TableId(value = "home_page_id",type = IdType.INPUT)
     private String homePageId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/HomePage.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class HomePage implements Serializable {
     /**
      * 病案首页编号
      */
+    @TableId(value = "home_page_id",type = IdType.INPUT)
     private String homePageId;
 
     /**

+ 4 - 0
src/main/java/com/diagbot/entity/MedRecordType.java

@@ -1,5 +1,8 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.io.Serializable;
 
 /**
@@ -17,6 +20,7 @@ public class MedRecordType implements Serializable {
     /**
      * 类别ID
      */
+    @TableId(value = "type_id",type = IdType.INPUT)
     private String typeId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/MedicalRecord.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -20,6 +22,7 @@ public class MedicalRecord implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableId(value = "rec_id",type = IdType.INPUT)
     private String recId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/MedicalRecordContent.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -24,6 +26,7 @@ public class MedicalRecordContent implements Serializable {
     /**
      * 病历ID
      */
+    @TableId(value = "rec_id",type = IdType.INPUT)
     private String recId;
 
     /**

+ 28 - 0
src/main/java/com/diagbot/entity/QcModelHospital.java

@@ -0,0 +1,28 @@
+package com.diagbot.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+@Data
+public class QcModelHospital implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long hospitalId;
+
+    private String hospitalModelName;
+
+    private Long standModelId;
+
+    private String standModelName;
+
+}

+ 220 - 5
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.client.AuthServiceClient;
 import com.diagbot.client.QcServiceClient;
 import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.dto.AnalyzeDTO;
+import com.diagbot.dto.AnalyzeRunDTO;
 import com.diagbot.dto.BehosDTO;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.MsgApiDTO;
@@ -38,6 +39,8 @@ import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.AlgorithmVO;
 import com.diagbot.vo.AnalyzeApiVO;
+import com.diagbot.vo.AnalyzeCodeVO;
+import com.diagbot.vo.AnalyzeRunVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.GetDetailVO;
@@ -100,6 +103,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     Boolean encryptFlag;
     @Autowired
     QcQuestionFacade qcQuestionFacade;
+    @Autowired
+    QcModelHospitalFacade qcModelHospitalFacade;
 
     public IPage<BehospitalInfoDTO> pageFac(BehospitalPageVO behospitalPageVO) {
         //入参验证
@@ -192,7 +197,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
-
+    /**
+     * 评分-终末质控
+     *
+     * @param analyzeVO
+     * @return
+     */
     public AnalyzeDTO analyze(AnalyzeVO analyzeVO) {
         Long hospitalId = analyzeVO.getHospitalId();
         if (!analyzeVO.getIsTask()) {
@@ -203,7 +213,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         // 获取质控条目
         List<QcCasesEntryDTO> qcCasesEntryDTOList = qcCasesEntryFacade.getQcCasesEntry(analyzeVO);
         if(ListUtil.isEmpty(qcCasesEntryDTOList)){
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历找不到质控条目!");
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
         }
 
         // 获取病历所有数据
@@ -297,6 +307,10 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 Arrays.asList("术后首次病程及谈话记录", "手术记录",
                         "术前讨论、术前小结", "手术知情同意书", "手术安全核查表"));
 
+        // 转科
+        addDataWithKey("转科", recMap, medrecVoList,
+                Arrays.asList("转入记录", "转出记录"));
+
         // 医嘱
         if (ListUtil.isNotEmpty(doctorAdviceList)) {
             addDataWithKeyConvert("医嘱信息", doctorAdviceList, medrecVoList,
@@ -330,9 +344,13 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 codeToInfoMap.put(key, mapInfo.get("info"));
             }
         }
-        qcResultAlgQueryVO.setCodeList(codeList);
-        qcResultAlgQueryVO.setHospitalId(hospitalId);
-        List<QcResultAlgVO> qcResultAlgVOList = qcCasesEntryFacade.getQcResultAlgVO(qcResultAlgQueryVO);
+        // 判断code是否为空
+        List<QcResultAlgVO> qcResultAlgVOList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(codeList)) {
+            qcResultAlgQueryVO.setCodeList(codeList);
+            qcResultAlgQueryVO.setHospitalId(hospitalId);
+            qcResultAlgVOList = qcCasesEntryFacade.getQcResultAlgVO(qcResultAlgQueryVO);
+        }
 
         // 对info赋值
         for(QcResultAlgVO bean : qcResultAlgVOList) {
@@ -773,4 +791,201 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+    /**
+     * 评分-运行质控
+     *
+     * @param analyzeRunVO
+     * @return
+     */
+    public AnalyzeRunDTO analyzeRun(AnalyzeRunVO analyzeRunVO) {
+        AnalyzeVO analyzeVO = new AnalyzeVO();
+        BeanUtil.copyProperties(analyzeRunVO, analyzeVO);
+        Long hospitalId = analyzeVO.getHospitalId();
+
+        // 获取质控条目
+        List<QcCasesEntryDTO> qcCasesEntryDTOList = qcCasesEntryFacade.getQcCasesEntry(analyzeVO);
+        if(ListUtil.isEmpty(qcCasesEntryDTOList)){
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
+        }
+
+        // 获取病历所有数据
+        Map<String, Map<String, String>> dicMap = sysDictionaryFacade.getDictionaryWithKey(); // 获取字典信息
+        // 获取文书信息
+        RecordContentVO recordContentVO = new RecordContentVO();
+        BeanUtil.copyProperties(analyzeVO, recordContentVO);
+        List<RecordContentDTO> recordContentDTOList = medicalRecordFacade.getRecordContentFac(recordContentVO);
+        String recTitle = "";
+        // 解密数据
+        if (encryptFlag) {
+            try {
+                EncrypDES encrypDES = new EncrypDES();
+                for (RecordContentDTO recordContentDTO : recordContentDTOList) {
+                    recTitle = recordContentDTO.getRecTitle();
+                    recordContentDTO.setXmlText(encrypDES.decryptor(recordContentDTO.getXmlText()));
+                }
+            } catch (Exception e) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                        "解密错误!病历号=【" + analyzeVO.getBehospitalCode() + "】,医院文书名称=【" + recTitle + "】");
+            }
+        }
+
+        Map<String, List<RecordContentDTO>> recMap = EntityUtil.makeEntityListMap(recordContentDTOList, "standModelName");
+
+        // 获取医嘱
+        List<DoctorAdvice> doctorAdviceList = doctorAdviceFacade.list(new QueryWrapper<DoctorAdvice>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("behospital_code", analyzeVO.getBehospitalCode())
+        );
+
+        // 获取病案首页
+        HomePage homePage = homePageFacade.getOne(new QueryWrapper<HomePage>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("behospital_code", analyzeVO.getBehospitalCode()), false
+        );
+
+        List<HomeDiagnoseInfo> homePageList = new ArrayList<>();
+        List<HomeOperationInfo> homeOperationInfoList = new ArrayList<>();
+        if (homePage != null) {
+            // 获取首页出院诊断、病理诊断
+            homePageList = homeDiagnoseInfoFacade.list(new QueryWrapper<HomeDiagnoseInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .eq("home_page_id", homePage.getHomePageId())
+            );
+
+            // 获取首页手术信息
+            homeOperationInfoList = homeOperationInfoFacade.list(new QueryWrapper<HomeOperationInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .eq("home_page_id", homePage.getHomePageId())
+            );
+        }
+
+        // 拼接数据
+        String hosCode = basHospitalInfoFacade.getHosCode(hospitalId);
+        QueryVo queryVo = new QueryVo();
+        queryVo.setCid(hosCode); // 设置医院编码
+        queryVo.setHospitalId(String.valueOf(hospitalId));
+        queryVo.setInputCatalogueMap(getInputCatalogueMap(qcCasesEntryDTOList)); // 设置质控条目编码
+        List<MedrecVo> medrecVoList = new ArrayList<>(); // 设置内容
+
+        addData("入院记录", recMap, medrecVoList);
+        addData("病危通知书", recMap, medrecVoList);
+        addData("阶段小结", recMap, medrecVoList);
+        addData("抢救记录", recMap, medrecVoList);
+        addData("查房记录", recMap, medrecVoList);
+        addData("首次病程录", recMap, medrecVoList);
+        addData("输血/血制品病程记录", recMap, medrecVoList);
+        addData("输血后效果评价", recMap, medrecVoList);
+        addData("死亡病例讨论记录", recMap, medrecVoList);
+        addData("死亡记录", recMap, medrecVoList);
+        addData("危急值记录", recMap, medrecVoList);
+        addData("出院小结", recMap, medrecVoList);
+        addData("疑难病例讨论记录", recMap, medrecVoList);
+        addData("输血后效果评价", recMap, medrecVoList);
+        addData("病理检验送检单", recMap, medrecVoList);
+
+        addDataWithInnerKey("知情同意书", recMap, medrecVoList);
+        addDataWithInnerKey("谈话告知书", recMap, medrecVoList);
+
+        // 会诊记录
+        addDataWithKey("会诊", recMap, medrecVoList,
+                Arrays.asList("会诊记录", "会诊结果单", "会诊申请单"));
+
+        // 手术
+        addDataWithKey("手术", recMap, medrecVoList,
+                Arrays.asList("术后首次病程及谈话记录", "手术记录",
+                        "术前讨论、术前小结", "手术知情同意书", "手术安全核查表"));
+
+        // 转科
+        addDataWithKey("转科", recMap, medrecVoList,
+                Arrays.asList("转入记录", "转出记录"));
+
+        // 医嘱
+        if (ListUtil.isNotEmpty(doctorAdviceList)) {
+            addDataWithKeyConvert("医嘱信息", doctorAdviceList, medrecVoList,
+                    dicMap.get("1"), Arrays.asList("daStartDate", "daStopDate"));
+        }
+
+        // 病案首页
+        if (homePage != null) {
+            addDataWithFirstPage("病案首页", homePage, medrecVoList, dicMap,
+                    homePageList, homeOperationInfoList);
+        }
+
+        queryVo.setMedrec(medrecVoList);
+
+        //  调用质控接口
+        Response<OutputInfo> response = qcServiceClient.extract(queryVo);
+        if (response == null || response.getData() == null) {
+            throw new CommonException(CommonErrorCode.RPC_ERROR, "远程质控接口没有返回数据!");
+        }
+        OutputInfo outputInfo = response.getData();
+        //根据质控结果获取质控条目
+        // QcResultAlgQueryVO qcResultAlgQueryVO = new QcResultAlgQueryVO();
+        List<String> codeList = new ArrayList<>();
+        // code和info的映射map
+        Map<String, String> codeToInfoMap = new LinkedHashMap<>();
+        Map<String, Map<String, String>> codeMap = outputInfo.getResult();
+        for (String key : codeMap.keySet()) {
+            codeList.add(key);
+            Map<String, String> mapInfo = codeMap.get(key);
+            if (mapInfo != null && StringUtil.isNotBlank(mapInfo.get("info"))) {
+                codeToInfoMap.put(key, mapInfo.get("info"));
+            }
+        }
+        // List<QcResultAlgVO> qcResultAlgVOList = new ArrayList<>();
+        // if (ListUtil.isNotEmpty(codeList)) {
+        //     qcResultAlgQueryVO.setCodeList(codeList);
+        //     qcResultAlgQueryVO.setHospitalId(hospitalId);
+        //     qcResultAlgVOList = qcCasesEntryFacade.getQcResultAlgVO(qcResultAlgQueryVO);
+        // }
+        //
+        // // 评分
+        // AlgorithmVO algorithmVO = new AlgorithmVO();
+        // algorithmVO.setType(0);
+        // algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+        // AlgorithmDTO algorithmDTO = algorithmFacade.getAlgorithmRes(algorithmVO);
+
+        //保存
+        // Map<String, Object> pageMap = outputInfo.getPageData();
+        // String pageData = JSON.toJSONString(pageMap);
+        // 获取菜单信息
+        // List<QcModeDTO> qcModeDTOList = qcModeFacade.getMenu(pageMap);
+        // String menuData = JSON.toJSONString(qcModeDTOList);
+
+        // 运行质控不保存评分结果信息
+        // Date date = qcresultInfoFacade.saveQcResult(algorithmDTO, algorithmVO, analyzeVO, pageData, menuData, analyzeVO.getIsTask());
+
+        // 返回缺陷提示信息
+        List<MsgDTO> msgDTOList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(codeList)) {
+            AnalyzeCodeVO analyzeCodeVO = new AnalyzeCodeVO();
+            analyzeCodeVO.setCodeList(codeList);
+            analyzeCodeVO.setHospitalId(hospitalId);
+            analyzeCodeVO.setModeId(analyzeRunVO.getModeId());
+
+            // 获取缺陷条目信息
+            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();
+        // analyzeRunDTO.setScoreRes(algorithmDTO.getScore());
+        // analyzeRunDTO.setLevel(algorithmDTO.getLevel());
+        analyzeRunDTO.setMsgDTOList(msgDTOList);
+        return analyzeRunDTO;
+    }
+
 }

+ 39 - 0
src/main/java/com/diagbot/facade/QcModelHospitalFacade.java

@@ -0,0 +1,39 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.QcModelHospital;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.QcModelHospitalServiceImpl;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class QcModelHospitalFacade extends QcModelHospitalServiceImpl {
+
+    /**
+     * 获取医院对应的模块信息
+     */
+    @Cacheable(value = "cache", key = "'qcHosModel'")
+    public Map<String, QcModelHospital> getHospitalModel() {
+        Map<String, QcModelHospital> hospitalModelMap = new LinkedHashMap<>();
+        List<QcModelHospital> basHospitalInfoList = this.list(new QueryWrapper<QcModelHospital>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .isNotNull("stand_model_id")
+                .isNotNull("stand_model_name")
+        );
+        hospitalModelMap = basHospitalInfoList.stream()
+                .collect(Collectors.toMap(r -> r.getHospitalId() + "##" + r.getHospitalModelName(), r -> r));
+        return hospitalModelMap;
+    }
+
+}

+ 3 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterByDeptVO;
@@ -29,6 +30,8 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
 
     public List<MsgDTO> getMsg(AnalyzeVO analyzeVO);
 
+    public List<MsgDTO> getMsgByEntryCode(AnalyzeCodeVO analyzeCodeVO);
+
     /**
      * 缺陷排行列表统计
      *

+ 1 - 0
src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java

@@ -18,6 +18,7 @@ import java.util.List;
  * @since 2020-04-13
  */
 public interface QcCasesEntryMapper extends BaseMapper<QcCasesEntry> {
+
     List<QcCasesEntryDTO> getQcCasesEntry(AnalyzeVO analyzeVO);
 
     List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO);

+ 16 - 0
src/main/java/com/diagbot/mapper/QcModelHospitalMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.QcModelHospital;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+public interface QcModelHospitalMapper extends BaseMapper<QcModelHospital> {
+
+}

+ 3 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterByDeptVO;
@@ -29,6 +30,8 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
 
     public List<MsgDTO> getMsg(AnalyzeVO analyzeVO);
 
+    public List<MsgDTO> getMsgByEntryCode(AnalyzeCodeVO analyzeCodeVO);
+
     /**
      * 缺陷排行列表统计
      *

+ 16 - 0
src/main/java/com/diagbot/service/QcModelHospitalService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.QcModelHospital;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+public interface QcModelHospitalService extends IService<QcModelHospital> {
+
+}

+ 6 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.mapper.BehospitalInfoMapper;
 import com.diagbot.service.BehospitalInfoService;
+import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterByDeptVO;
@@ -39,6 +40,11 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return baseMapper.getMsg(analyzeVO);
     }
 
+    @Override
+    public List<MsgDTO> getMsgByEntryCode(AnalyzeCodeVO analyzeCodeVO) {
+        return baseMapper.getMsgByEntryCode(analyzeCodeVO);
+    }
+
     /**
      * 缺陷排行列表统计
      *

+ 20 - 0
src/main/java/com/diagbot/service/impl/QcModelHospitalServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.QcModelHospital;
+import com.diagbot.mapper.QcModelHospitalMapper;
+import com.diagbot.service.QcModelHospitalService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+@Service
+public class QcModelHospitalServiceImpl extends ServiceImpl<QcModelHospitalMapper, QcModelHospital> implements QcModelHospitalService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/vo/AnalyzeCodeVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class AnalyzeCodeVO {
+    // 条目编码
+    private List<String> codeList;
+    // 医院ID
+    private Long hospitalId;
+    // modeId
+    private Long modeId;
+}

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

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class AnalyzeRunVO {
+    // 病历id
+    @NotBlank(message = "behospitalCode不能为空")
+    private String behospitalCode;
+    // 医院ID
+    @NotNull(message = "hospitalId不能为空")
+    private Long hospitalId;
+    // 模块id
+    @NotNull(message = "modeId不能为空")
+    private Long modeId;
+}

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

@@ -16,4 +16,6 @@ public class AnalyzeVO {
     private Long hospitalId; //医院ID
     @ApiModelProperty(hidden = true)
     private Boolean isTask = false;
+    @ApiModelProperty(hidden = true)
+    private Long modeId;
 }

+ 17 - 1
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -3,11 +3,13 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.AnalyzeDTO;
+import com.diagbot.dto.AnalyzeRunDTO;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.QcresultInfoFacade;
 import com.diagbot.vo.AnalyzeApiVO;
+import com.diagbot.vo.AnalyzeRunVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.GetDetailVO;
@@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.validation.Valid;
 import java.util.Map;
 
 /**
@@ -65,7 +68,6 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(data);
     }
 
-
     @ApiOperation(value = "评分[by:zhoutg]",
             notes = "")
     @PostMapping("/analyze")
@@ -75,6 +77,20 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(behospitalInfoFacade.analyze(analyzeVO));
     }
 
+    @ApiOperation(value = "评分-运行质控[by:zhoutg]",
+            notes = "    // 病历id\n" +
+                    "     String behospitalCode;\n" +
+                    "    // 医院ID\n" +
+                    "     Long hospitalId;\n" +
+                    "    // 模块id\n" +
+                    "     Long modeId;")
+    @PostMapping("/analyze_run")
+    @SysLogger("analyze_run")
+    @Transactional
+    public RespDTO<AnalyzeRunDTO> analyzeRun(@Valid @RequestBody AnalyzeRunVO analyzeRunVO) {
+        return RespDTO.onSuc(behospitalInfoFacade.analyzeRun(analyzeRunVO));
+    }
+
     @ApiOperation(value = "定时任务评分[by:zhoutg]",
             notes = "")
     @PostMapping("/analyze_rpc")

+ 19 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -100,6 +100,25 @@
         order by b.order_no, a.order_no
     </select>
 
+    <select id="getMsgByEntryCode" resultType="com.diagbot.dto.MsgDTO">
+        SELECT  b.id model_id,b.`name` model_name,
+                d.score,d.msg,d.cases_entry_id,d.is_reject,
+                a.cases_id cases_id, a.name standard_msg,a.code
+        FROM `qc_cases_entry` a, qc_mode b, qc_cases_entry_hospital d
+        where a.is_deleted = 'N' and b.is_deleted = 'N' and d.is_deleted = 'N'
+        and a.mode_id = b.id
+        and a.id = d.cases_entry_id
+        and d.is_used = 1
+        and d.hospital_id = #{hospitalId}
+        and a.code in
+        <foreach collection="codeList" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        <if test="modeId != null">
+            and a.mode_id = #{modeId}
+        </if>
+        order by b.order_no, a.order_no;
+    </select>
 
     <!-- 缺陷排行列表 -->
     <select id="resultStatistics"  parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.NumDTO">

+ 3 - 0
src/main/resources/mapper/QcCasesEntryMapper.xml

@@ -46,6 +46,9 @@
         <if test="behospitalCode != null and behospitalCode != ''">
             AND t1.behospital_code =  #{behospitalCode}
         </if>
+        <if test="modeId != null">
+            AND t4.mode_id = #{modeId}
+        </if>
 	</select>
 
     <select id="getQcResultAlgVO" parameterType="com.diagbot.vo.QcResultAlgQueryVO" resultType="com.diagbot.vo.QcResultAlgVO">

+ 14 - 0
src/main/resources/mapper/QcModelHospitalMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.QcModelHospitalMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.QcModelHospital">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="hospital_model_name" property="hospitalModelName" />
+        <result column="stand_model_id" property="standModelId" />
+        <result column="stand_model_name" property="standModelName" />
+    </resultMap>
+
+</mapper>

+ 2 - 2
src/test/java/com/diagbot/CodeGeneration.java

@@ -33,7 +33,7 @@ public class CodeGeneration {
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("gaodm");// 作者
+        gc.setAuthor("zhoutg");// 作者
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
         gc.setControllerName("%sController");
@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "med_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "sys_user_hospital"}); // 需要生成的表
+        strategy.setInclude(new String[] { "qc_model_hospital"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);