瀏覽代碼

运行质控1.0.0接口开发

zhoutg 5 年之前
父節點
當前提交
c9a9f85589

+ 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)

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

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/4/15 12:24
+ */
+@Getter
+@Setter
+public class AnalyzeRunDTO {
+    //得分
+    private BigDecimal scoreRes;
+    //等级
+    private String level;
+    // 缺陷条目
+    Map<String, List<MsgDTO>> msgMap = new LinkedHashMap<>();
+    // 选中的模块名称
+    private String selectMode;
+}

+ 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;

+ 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;
+
+}

+ 212 - 3
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;
@@ -24,6 +25,7 @@ import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.entity.HomeDiagnoseInfo;
 import com.diagbot.entity.HomeOperationInfo;
 import com.diagbot.entity.HomePage;
+import com.diagbot.entity.QcModelHospital;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -38,6 +40,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 +104,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     Boolean encryptFlag;
     @Autowired
     QcQuestionFacade qcQuestionFacade;
+    @Autowired
+    QcModelHospitalFacade qcModelHospitalFacade;
 
     public IPage<BehospitalInfoDTO> pageFac(BehospitalPageVO behospitalPageVO) {
         //入参验证
@@ -329,9 +335,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) {
@@ -772,4 +782,203 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+    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.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("术后首次病程及谈话记录", "手术记录",
+                        "术前讨论、术前小结", "手术知情同意书", "手术安全核查表"));
+
+        // 医嘱
+        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());
+
+        // 返回缺陷提示信息
+        Map<String, List<MsgDTO>> msgMap = new LinkedHashMap<>();
+        String selectMode = "";
+        if (ListUtil.isNotEmpty(codeList)) {
+            AnalyzeCodeVO analyzeCodeVO = new AnalyzeCodeVO();
+            analyzeCodeVO.setCodeList(codeList);
+            analyzeCodeVO.setHospitalId(hospitalId);
+            Map<String, QcModelHospital> qcModelHospitalMap = qcModelHospitalFacade.getHospitalModel();
+            if (qcModelHospitalMap.containsKey(hospitalId + "##" + analyzeRunVO.getHosModelname())) {
+                QcModelHospital qcModelHospital = qcModelHospitalMap.get(hospitalId + "##" + analyzeRunVO.getHosModelname());
+                if (qcModelHospital != null) {
+                    selectMode = qcModelHospital.getStandModelName();
+                    // 1:筛选相应的模块内容,其他值:获取全部
+                    if (1 == analyzeRunVO.getFlag()) {
+                        analyzeCodeVO.setModeId(qcModelHospital.getStandModelId());
+                    }
+                }
+            }
+
+            // 获取缺陷条目信息
+            List<MsgDTO> 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);
+                    }
+                }
+            }
+            msgMap = EntityUtil.makeEntityListMap(msgDTOList, "modelName");
+        }
+
+        //返回参数组装
+        AnalyzeRunDTO analyzeRunDTO = new AnalyzeRunDTO();
+        analyzeRunDTO.setScoreRes(algorithmDTO.getScore());
+        analyzeRunDTO.setLevel(algorithmDTO.getLevel());
+        analyzeRunDTO.setMsgMap(msgMap);
+        analyzeRunDTO.setSelectMode(selectMode);
+        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);
+
     /**
      * 缺陷排行列表统计
      *

+ 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;
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class AnalyzeRunVO {
+    // 病历id
+    private String behospitalCode;
+    // 医院ID
+    private Long hospitalId;
+    // 医院文书类型
+    private String hosModelname;
+    // 返回质控条目标识,1:只返回hosModelname对应的缺陷模块,其他值:全部返回
+    private int flag;
+}

+ 18 - 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;
@@ -65,7 +67,6 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(data);
     }
 
-
     @ApiOperation(value = "评分[by:zhoutg]",
             notes = "")
     @PostMapping("/analyze")
@@ -75,6 +76,22 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(behospitalInfoFacade.analyze(analyzeVO));
     }
 
+    @ApiOperation(value = "评分-运行质控[by:zhoutg]",
+            notes = "    // 病历id\n" +
+                    "     String behospitalCode;\n" +
+                    "    // 医院ID\n" +
+                    "     Long hospitalId;\n" +
+                    "    // 医院文书类型\n" +
+                    "     String hosModelname;\n" +
+                    "    // 返回质控条目标识,1:只返回hosModelname对应的缺陷模块,其他值:全部返回\n" +
+                    "     int flag;")
+    @PostMapping("/analyze_run")
+    @SysLogger("analyze_run")
+    @Transactional
+    public RespDTO<AnalyzeRunDTO> analyzeRun(@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">

+ 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);