Browse Source

Merge branch 'dev/20210326_2.0.2' into debug

zhanghang 4 years atrás
parent
commit
78c53a860a

+ 17 - 3
doc/031.20210326v2.0.2/qc_initv2.0.2.sql

@@ -284,14 +284,12 @@ CREATE TABLE `med_index_result` (
   `operation_complete_result` double(5,0) DEFAULT NULL COMMENT '手术相关记录完成率-分母',
   `implants_result` double(5,0) DEFAULT NULL COMMENT '植入物相关记录符合率-分母',
   `blood_result` double(5,0) DEFAULT NULL COMMENT '临床用血相关记录符合率-分母',
-  `
-ward_round_result` double(5,0) DEFAULT NULL COMMENT '医师查房记录完整率-分母',
+  `ward_round_result` double(5,0) DEFAULT NULL COMMENT '医师查房记录完整率-分母',
   `rescue_result` double(5,0) DEFAULT NULL COMMENT '患者抢救记录及时完成率-分母',
   `sec_file_result` double(5,0) DEFAULT NULL COMMENT '出院患者病历2日归档率-分子',
   `file_complete_result` double(5,0) DEFAULT NULL COMMENT '出院患者病历归档完整率-分母',
   `no_copy_result` double(5,0) DEFAULT NULL COMMENT '不合理复制病历发生率-分母',
   `record_sign_result` double(5,0) DEFAULT NULL COMMENT '知情同意书规范签署率-分母',
-  `fir_record_result` double(5,0) DEFAULT NULL COMMENT '甲级病历率-分母',
   `start_date` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
   `end_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
   `is_deleted` char(3) DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
@@ -304,3 +302,19 @@ ward_round_result` double(5,0) DEFAULT NULL COMMENT '医师查房记录完整率
 ) ENGINE=InnoDB AUTO_INCREMENT=1207 DEFAULT CHARSET=utf8;
 
 
+CREATE TABLE `med_index_relevance` (
+  `id` int(10) NOT NULL AUTO_INCREMENT,
+  `index_result_id` int(10) DEFAULT NULL COMMENT '主缓存表id',
+  `relevance_type` int(10) DEFAULT NULL COMMENT '病历条目关联表type',
+  `hospital_id` tinyint(3) DEFAULT NULL COMMENT '医院ID',
+  `behospital_code` varchar(255) DEFAULT NULL COMMENT '病人病历号',
+  `start_date` datetime DEFAULT NULL,
+  `end_date` datetime DEFAULT NULL,
+  `is_deleted` char(3) DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(60) DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(60) DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `index_all` (`relevance_type`,`hospital_id`,`behospital_code`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=345204 DEFAULT CHARSET=utf8;

+ 77 - 0
src/main/java/com/diagbot/entity/MedIndexRelevance.java

@@ -0,0 +1,77 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+@Data
+public class MedIndexRelevance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 主缓存表id
+     */
+    private Integer indexResultId;
+
+    /**
+     * 病历条目关联表type
+     */
+    private Integer relevanceType;
+
+    /**
+     * 医院ID
+     */
+    private String hospitalId;
+
+    /**
+     * 病人病历号
+     */
+    private String behospitalCode;
+
+    private String startDate;
+
+    private String endDate;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+
+}

+ 1 - 0
src/main/java/com/diagbot/enums/QualityContent.java

@@ -13,6 +13,7 @@ public class QualityContent {
     public static final String NUMBER_OF_HOSPITAL = "入院人数";
     public static final String NO_RECORD_OPERATION = "无病案首页手术患者";
     public static final String NO_RECORD_OPERATION_PATHOLOGY = "无病案首页手术病理患者";
+    public static final double pathologyFee = 68.00;
     /**
      * 是否需要用到医嘱的指标名称
      */

+ 0 - 4
src/main/java/com/diagbot/enums/TimeContent.java

@@ -30,10 +30,6 @@ public class TimeContent {
             "2021-11-06", "2021-11-07", "2021-11-13", "2021-11-14", "2021-11-20", "2021-11-21", "2021-11-27", "2021-11-28",//十一月周末假日
             "2021-12-04", "2021-12-06", "2021-12-11", "2021-12-12", "2021-12-18", "2021-12-19", "2021-12-25", "2021-12-26" //十二周末假日
     );
-
-    public static List<String> getHolidaysTimeList() {
-        return HolidaysTimeList;
-    }
 }
 
 

+ 12 - 24
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -15,10 +15,8 @@ import com.diagbot.util.*;
 import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -162,7 +160,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
      * @param
      * @return
      */
-    public List<ColumnDTO> getMedQualityControl() {
+    public List<ColumnDTO> getMedQualityControl(BasDeptInfoVO basDeptInfoVO) {
         long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
         //colums
         QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
@@ -174,32 +172,23 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
             return columns;
         }
+       List<String> strings = new ArrayList<>();
 
         //表头生成
         List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
         Integer orderNo = 1;
-        ColumnDTO columnDeptId = new ColumnDTO();
-   /*     columnDeptId.setOrderNo(orderNo);
-        columnDeptId.setFieldName("deptId");
-        columnDeptId.setColumnName("科室编码");
-        columnDeptId.setIsShow(0);
-        columns.add(columnDeptId);
-        orderNo++;
-        ColumnDTO columnDeptName = new ColumnDTO();
-        columnDeptName.setOrderNo(orderNo);
-        columnDeptName.setFieldName("deptName");
-        columnDeptName.setColumnName("科室");
-        columnDeptName.setIsShow(1);
-        columns.add(columnDeptName);
-        orderNo++;*/
         for (String valueStr : columnSet) {
             String[] keyValue = valueStr.split("--");
             if (keyValue != null || keyValue.length > 1) {
+                strings.add(keyValue[1]);
+            }
+        }
+        for (String str : strings) {
+            if(str.contains(basDeptInfoVO.getInputStr())){
                 ColumnDTO columnNum = new ColumnDTO();
                 columnNum.setOrderNo(orderNo);
-                columnNum.setId(Long.valueOf(keyValue[0]));
-                columnNum.setFieldName("entry_" + keyValue[0] + "_name");
-                columnNum.setColumnName(keyValue[1]);
+                columnNum.setColumnName(str);
+                columnNum.setFieldName("entry_" + str + "_name");
                 columnNum.setIsShow(1);
                 columns.add(columnNum);
                 orderNo++;
@@ -617,7 +606,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("behospital_code", analyzeVO.getBehospitalCode())
                 .eq("hospital_id", hospitalId)
-                .in("mode_id", Arrays.asList(53))
+                .in("mode_id", Arrays.asList(53,16))
                 .orderByAsc("rec_date")
         );
         List<MedicalRecordDTO> medicalRecordDTOList = BeanUtil.listCopyTo(recordList, MedicalRecordDTO.class);
@@ -731,7 +720,6 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         //使用sql进行关联优化数据查询
         List<MedPacsResultDTO> medPacsResultList = medPacsResultFacade.getMedPacsResultList(behospitalInfoList.get(0));
 
-
         /**
          * 结构化/文书数据兼容处理
          */
@@ -933,7 +921,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         addData("日常病程录", recMap, medrecVoList);
 
         DataWithKey("知情同意书", medicalRecordDTOList, medrecVoList);
-        addDataWithInnerKey("知情同意书", recMap, medrecVoList);
+        //addDataWithInnerKey("知情同意书", recMap, medrecVoList);
         addDataWithInnerKey("谈话告知书", recMap, medrecVoList);
 
         //==============文书====================
@@ -2327,7 +2315,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
      * @param filterVO
      * @return
      */
-    public Map<String,Long> selectOperationNum( FilterVO filterVO){
+    public List<Map<String, String>> selectOperationNum( FilterVO filterVO){
         return   baseMapper.selectOperationNum(filterVO);
     }
     /**

+ 274 - 71
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -21,6 +21,7 @@ import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
+import org.apache.poi.hssf.record.DVALRecord;
 import org.apache.poi.ss.formula.functions.Na;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -77,7 +78,8 @@ public class ConsoleFacade {
     private DoctorAdviceFacade doctorAdviceFacade;
     @Autowired
     private MedIndexResultFacade medIndexResultFacade;
-
+    @Autowired
+    private MedIndexRelevanceFacade medIndexRelevanceFacade;
     //region-----------------------聚合接口开始-------------------------------
 
     /**
@@ -579,6 +581,11 @@ public class ConsoleFacade {
         qw.ge("start_date",filterVO.getStartDate()+" 00:00:00");
         qw.le("end_date", handleTime(filterVO.getEndDate()));
         medIndexResultFacade.remove(qw);
+        QueryWrapper<MedIndexRelevance> qwa = new QueryWrapper<>();
+        qwa.eq("hospital_id",filterVO.getHospitalId());
+        qwa.ge("start_date",filterVO.getStartDate()+" 00:00:00");
+        qwa.le("end_date", handleTime(filterVO.getEndDate()));
+        medIndexRelevanceFacade.remove(qwa);
         for (String startTime : timeList) {
             filterVO.setStartDate(startTime);
             filterVO.setEndDate( handleTime(startTime));
@@ -596,31 +603,96 @@ public class ConsoleFacade {
      */
     public void getMedicaIndicator(FilterVO filterVO){
         MedIndexResult medIndexResult = new MedIndexResult();
-        Map<String, Long> selectOperationNumMap = behospitalInfoFacade.selectOperationNum(filterVO);
-        //出院人数
-        Long startCount = selectOperationNumMap.get(QualityContent.DISCHARGED_PATIENTS);
+       List<Map<String, String>> selectOperationNumMap = behospitalInfoFacade.selectOperationNum(filterVO);
+        if(ListUtil.isNotEmpty(selectOperationNumMap)) {
+            Set<String> outHospitalCode = new CopyOnWriteArraySet<>();
+            Set<String> operationCode = new CopyOnWriteArraySet<>();
+            Set<String> operationPathologyCode = new CopyOnWriteArraySet<>();
+            Set<String> antibiosisCode = new CopyOnWriteArraySet<>();
+            List<String> adviceVerify = adviceVerify(filterVO);
             Long operationFeeNum = 0L;
-                filterVO.setFlagStr("2");
-        List<MedManageParamsDTO> doctorAdviceMedManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
-                Map<String, Long> adviceNum = getAdviceNum(filterVO,doctorAdviceMedManageParams);
-                //手术人数
-                operationFeeNum = selectOperationNumMap.get("operationFee");
-                Long operation = adviceNum.get("operation");
-                operationFeeNum = operationFeeNum + operation;
+            filterVO.setFlagStr("2");
+            List<MedManageParamsDTO> doctorAdviceMedManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
+            Map<String, List<String>> adviceNum = getAdviceNum(filterVO, doctorAdviceMedManageParams);
+                for (Map<String, String> stringStringMap : selectOperationNumMap) {
+                    String behospitalCode = stringStringMap.get("behospitalCode");
+                    //出院code
+                    outHospitalCode.add(behospitalCode);
+                    if (Double.parseDouble(stringStringMap.get("operationFee"))>0){
+                        //手术code
+                        operationCode.add(behospitalCode);
+                    }
+                    if (Double.parseDouble(stringStringMap.get("operationFee"))>0 && Double.parseDouble(stringStringMap.get("pathologyFee"))>QualityContent.pathologyFee){
+                        //病理code
+                        operationPathologyCode.add(behospitalCode);
+                    }
+                    if (Double.parseDouble(stringStringMap.get("antibiosisFee"))>0){
+                        //抗菌code
+                        antibiosisCode.add(behospitalCode);
+                    }
+                }
+                if(ListUtil.isNotEmpty(adviceVerify)){
+                    for (String code : adviceVerify) {
+                        outHospitalCode.add(code);
+                    }
+                }
+            Long startCount = Long.valueOf(outHospitalCode.size());
+            //手术人
+                List<String> operationList = adviceNum.get("operation");
+                if(ListUtil.isNotEmpty(operationList)){
+                    for (String s : operationList) {
+                        operationCode.add(s);
+                    }
+                }
+                if(operationCode.size()>0&&operationCode!=null) {
+                    operationFeeNum = Long.valueOf(operationCode.size());
+                }
                 //CT人数
-                Long CTNum = adviceNum.get("CT");
+                List<String> ctList = adviceNum.get("CT");
+                Long CTNum=0L;
+                if(ListUtil.isNotEmpty(ctList)) {
+                    CTNum = Long.valueOf(ctList.size());
+                }
                 //MR人数
-                Long MRNum = adviceNum.get("MR");
+                List<String> mrList = adviceNum.get("MR");
+                Long MRNum=0L;
+                if(ListUtil.isNotEmpty(mrList)) {
+                    MRNum = Long.valueOf(mrList.size());
+                }
                 //手术病理人数
-                Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
-                Long operationPathology = adviceNum.get("operationPathology");
-                operationPathologyFeeNum = operationPathologyFeeNum + operationPathology;
+                Long operationPathologyFeeNum=0L;
+                List<String> operationPathologyList = adviceNum.get("operationPathology");
+                if(ListUtil.isNotEmpty(operationPathologyList)){
+                    for (String s : operationPathologyList) {
+                        operationPathologyCode.add(s);
+                    }
+                }
+                if(operationPathologyCode.size()>0&&operationPathologyCode!=null) {
+                    operationPathologyFeeNum = Long.valueOf(operationPathologyCode.size());
+                }
+                //细菌培养人数
+                List<String> bacterialCultureList = adviceNum.get("bacterialCulture");
+                Long bacterialCultureNum=0L;
+                if(ListUtil.isNotEmpty(bacterialCultureList)) {
+                    bacterialCultureNum = Long.valueOf(bacterialCultureList.size());
+                }
                 //抗菌药物人数
-                Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
-                Long antibiosisNum = adviceNum.get("antibiosis");
-                antibiosisFeeNum = antibiosisFeeNum + antibiosisNum;
+                List<String> antibiosisList = adviceNum.get("antibiosis");
+                if(ListUtil.isNotEmpty(antibiosisList)) {
+                    for (String s : antibiosisList) {
+                        antibiosisCode.add(s);
+                    }
+                }
+                Long antibiosisFeeNum =0L;
+                if(antibiosisCode.size()>0&&antibiosisCode!=null) {
+                    antibiosisFeeNum = Long.valueOf(antibiosisCode.size());
+                }
                 //恶性肿瘤化学治疗人数
-                Long chemotherapyMalignantTumorsNum = adviceNum.get("chemotherapyMalignantTumors");
+                List<String> chemotherapyMalignantTumorsList = adviceNum.get("chemotherapyMalignantTumors");
+                Long chemotherapyMalignantTumorsNum =0L;
+                if(ListUtil.isNotEmpty(chemotherapyMalignantTumorsList)) {
+                    chemotherapyMalignantTumorsNum=   Long.valueOf(chemotherapyMalignantTumorsList.size());
+                }
                 //出院人数
                     if(startCount!=null){
                         medIndexResult.setAdmissionResult(Double.valueOf(startCount));
@@ -641,6 +713,10 @@ public class ConsoleFacade {
                     if (operationPathologyFeeNum != null) {
                         medIndexResult.setPathologyResult(Double.valueOf(operationPathologyFeeNum));
                     }
+                 //细菌培养人数
+                    if (bacterialCultureNum != null) {
+                        medIndexResult.setGermResult(Double.valueOf(bacterialCultureNum));
+                    }
                 //抗菌人数
                     if (antibiosisFeeNum != null ) {
                         medIndexResult.setAntibiosisResult(Double.valueOf(antibiosisFeeNum));
@@ -656,27 +732,130 @@ public class ConsoleFacade {
         MedIndexFilterVO timeVo = new MedIndexFilterVO();
         BeanUtils.copyProperties(filterVO,timeVo);
         timeTrans(timeVo);
-        Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(timeVo);
+            Set<String> rescueCode = new CopyOnWriteArraySet<>();
+            Set<String> bloodCode = new CopyOnWriteArraySet<>();
         //指标二十七
 
         //指标十七 医师查房记录
 
         //指标十八 抢救记录
-        rescueMethods(doctorAdviceMedManageParams,medIndexResult);
+        rescueMethods(doctorAdviceMedManageParams,medIndexResult,rescueCode);
         //指标十九 出院患者病历2日归档
-        getfileSecAmounts(filterVO,baseIndex,medIndexResult);
+        getfileSecAmounts(filterVO,medIndexResult);
         //指标十四 手术记录
         medIndexResult.setOperationCompleteResult(Double.parseDouble(operationFeeNum+""));
         //指标十六  临床用血相关记录符合率
         filterVO.setFlagStr("1");
         List<MedManageParamsDTO> medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
-        bloodMethods(doctorAdviceMedManageParams, medManageParams,medIndexResult);
+        bloodMethods(doctorAdviceMedManageParams, medManageParams,medIndexResult,bloodCode);
         medIndexResult.setHospitalId(filterVO.getHospitalId());
         medIndexResult.setStartDate(filterVO.getStartDate());
         medIndexResult.setEndDate(filterVO.getEndDate());
         medIndexResult.setGmtCreate(new Date());
         medIndexResultFacade.save(medIndexResult);
-
+        Integer id = medIndexResult.getId();
+        MedIndexRelevance medIndexRelevance = new MedIndexRelevance();
+        medIndexRelevance.setIndexResultId(id);
+        medIndexRelevance.setHospitalId(filterVO.getHospitalId());
+        medIndexRelevance.setStartDate(filterVO.getStartDate());
+        medIndexRelevance.setEndDate(filterVO.getEndDate());
+        medIndexRelevance.setGmtCreate(new Date());
+            if(outHospitalCode.size()>0&&outHospitalCode!=null) {
+                medIndexRelevance.setRelevanceType(4);
+                for (String Code : outHospitalCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+                medIndexRelevance.setRelevanceType(6);
+                for (String Code : outHospitalCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+                medIndexRelevance.setRelevanceType(7);
+                for (String Code : outHospitalCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(operationCode.size()>0&&operationCode!=null) {
+                medIndexRelevance.setRelevanceType(5);
+                for (String Code : operationCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+        if(ListUtil.isNotEmpty(ctList)) {
+            medIndexRelevance.setRelevanceType(8);
+            for (String CTCode : ctList) {
+                medIndexRelevance.setBehospitalCode(CTCode);
+                medIndexRelevanceFacade.save(medIndexRelevance);
+            }
+        }
+        if(ListUtil.isNotEmpty(mrList)) {
+            medIndexRelevance.setRelevanceType(9);
+            for (String MrCode : mrList) {
+                medIndexRelevance.setBehospitalCode(MrCode);
+                medIndexRelevanceFacade.save(medIndexRelevance);
+            }
+        }
+            if(operationPathologyCode.size()>0&&operationPathologyCode!=null) {
+                medIndexRelevance.setRelevanceType(10);
+                for (String Code : operationPathologyCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(ListUtil.isNotEmpty(bacterialCultureList)) {
+                medIndexRelevance.setRelevanceType(11);
+                for (String Code : bacterialCultureList) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(antibiosisCode.size()>0&&antibiosisCode!=null) {
+                medIndexRelevance.setRelevanceType(12);
+                for (String Code : antibiosisCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(ListUtil.isNotEmpty(chemotherapyMalignantTumorsList)) {
+                medIndexRelevance.setRelevanceType(13);
+                for (String Code : chemotherapyMalignantTumorsList) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(operationCode.size()>0&&operationCode!=null) {
+                medIndexRelevance.setRelevanceType(15);
+                for (String Code : operationCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(bloodCode.size()>0&&bloodCode!=null) {
+                medIndexRelevance.setRelevanceType(17);
+                for (String Code : bloodCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(outHospitalCode.size()>0&&outHospitalCode!=null) {
+                medIndexRelevance.setRelevanceType(18);
+                for (String Code : outHospitalCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            if(rescueCode.size()>0&&rescueCode!=null) {
+                medIndexRelevance.setRelevanceType(19);
+                for (String Code : rescueCode) {
+                    medIndexRelevance.setBehospitalCode(Code);
+                    medIndexRelevanceFacade.save(medIndexRelevance);
+                }
+            }
+            System.out.println(operationPathologyCode.size());
+        }
     }
     /**
      * 两数据相除得到百分比
@@ -757,15 +936,16 @@ public class ConsoleFacade {
     /**
      * 遍历医嘱信息存入相关数据
      */
-    public Map<String,Long> getAdviceNum(FilterVO filterVO,List<MedManageParamsDTO> doctorAdviceMedManageParamsList) {
+    public Map<String,List<String>> getAdviceNum(FilterVO filterVO, List<MedManageParamsDTO> doctorAdviceMedManageParamsList) {
         CopyOnWriteArrayList<MedManageParamsDTO> doctorAdviceMedManageParams = new CopyOnWriteArrayList<>(doctorAdviceMedManageParamsList);
         String indexName = filterVO.getIndexName();
-        Map map = new HashMap<String,Integer>();
+        Map mapCode = new HashMap<String,List<String>>();
         List<String> CTBehospitalCode = new CopyOnWriteArrayList<>();
         List<String> operationPathologyBehospitalCode = new CopyOnWriteArrayList<>();
         List<String> MRBehospitalCode = new CopyOnWriteArrayList<>();
         List<String> operationBehospitalCode = new CopyOnWriteArrayList<>();
         List<String> pathologyBehospitalCode = new CopyOnWriteArrayList<>();
+        List<String> bacterialCultureCode = new CopyOnWriteArrayList<>();
         List<String> antibiosisBehospitalCode = new CopyOnWriteArrayList<>();
         List<String> chemotherapyMalignantTumorsBehospitalCode = new CopyOnWriteArrayList<>();
         //无首页code
@@ -859,6 +1039,14 @@ public class ConsoleFacade {
                                         }
                                     }
                                 }
+                                //细菌培养
+                                if (indexName.equals(QualityContent.XJPY_JCJL_FHL) || indexName.equals(QualityContent.QB)) {
+                                    if(!bacterialCultureCode.contains(behospitalCode)){
+                                        if(daItemName.contains(QualityContent.BACTERIAL_CULTURE)){
+                                            bacterialCultureCode.add(behospitalCode);
+                                        }
+                                    }
+                                }
                             }
                         }
                         //获取为长期医嘱或临时医嘱的医嘱
@@ -892,42 +1080,46 @@ public class ConsoleFacade {
             myPool.shutdown();
 
             if(ListUtil.isEmpty(CTBehospitalCode)){
-                map.put("CT",Long.valueOf(0));
+                mapCode.put("CT",null);
             }else {
-                map.put("CT",Long.valueOf(CTBehospitalCode.size()));
+                mapCode.put("CT",CTBehospitalCode);
             }
             if(ListUtil.isEmpty(MRBehospitalCode)){
-                map.put("MR",Long.valueOf(0));
+                mapCode.put("MR",null);
             }else {
-                map.put("MR",Long.valueOf(MRBehospitalCode.size()));
+                mapCode.put("MR",MRBehospitalCode);
             }
             if(ListUtil.isEmpty(operationBehospitalCode)){
-                map.put("operation",Long.valueOf(0));
+                mapCode.put("operation",null);
             }else {
-                map.put("operation",Long.valueOf(operationBehospitalCode.size()));
+                mapCode.put("operation",operationBehospitalCode);
             }
             if(ListUtil.isEmpty(operationBehospitalCode)||ListUtil.isEmpty(operationPathologyBehospitalCode)){
-                map.put("operationPathology",Long.valueOf(0));
+                mapCode.put("operationPathology",null);
             }else {
                 for (String operation : operationBehospitalCode) {
                     if(pathologyBehospitalCode.contains(operation)){
                         operationPathologyBehospitalCode.add(operation);
                     }
                 }
-                map.put("operationPathology",Long.valueOf(operationPathologyBehospitalCode.size()));
+                mapCode.put("operationPathology",operationBehospitalCode);
+            }
+            if(ListUtil.isEmpty(bacterialCultureCode)){
+                mapCode.put("bacterialCulture",null);
+            }else {
+                mapCode.put("bacterialCulture",bacterialCultureCode);
             }
             if(ListUtil.isEmpty(antibiosisBehospitalCode)){
-                map.put("antibiosis",Long.valueOf(0));
+                mapCode.put("antibiosis",null);
             }else {
-                map.put("antibiosis",Long.valueOf(antibiosisBehospitalCode.size()));
+                mapCode.put("antibiosis",antibiosisBehospitalCode);
             }
             if(ListUtil.isEmpty(chemotherapyMalignantTumorsBehospitalCode)){
-                map.put("chemotherapyMalignantTumors",Long.valueOf(0));
+                mapCode.put("chemotherapyMalignantTumors",null);
             }else {
-                map.put("chemotherapyMalignantTumors",Long.valueOf(chemotherapyMalignantTumorsBehospitalCode.size()));
+                mapCode.put("chemotherapyMalignantTumors",antibiosisBehospitalCode);
             }
-
-            return map;
+            return mapCode;
         }
     }
     /**
@@ -2778,6 +2970,9 @@ public class ConsoleFacade {
         if(StringUtils.isNotEmpty(String.valueOf(count)) &&  count != 0d){
             double rescueDo = currencyCal(count, triggeringRulesMap.get("rescueNum"));
             num = String.valueOf(rescueDo);
+            if(rescueDo<0d){
+                num = null;
+            }
         };
         LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
         firMap.put("name","患者抢救记录及时完成率");
@@ -2792,6 +2987,9 @@ public class ConsoleFacade {
         if( triggeringRulesMap.containsKey("WardRoundNum") && baseIndex.containsKey("forWorkNum") && !baseIndex.get("forWorkNum").toString().equals("0")){
             double wardRoundDo = currencyCal(baseIndex.get("forWorkNum"), triggeringRulesMap.get("WardRoundNum"));
             num = String.valueOf(wardRoundDo);
+            if(wardRoundDo<0d){
+                num = null;
+            }
         };
         LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
         firMap.put("name","医师查房记录完成率");
@@ -2807,6 +3005,9 @@ public class ConsoleFacade {
         if( triggeringRulesMap.containsKey("operationRecordNum") && StringUtils.isNotEmpty(operationFeeNum) && ! operationFeeNum.equals("0")){
             double operationRecordDo = currencyCal(operationFeeNum, triggeringRulesMap.get("operationRecordNum"));
             num = String.valueOf(operationRecordDo);
+            if(operationRecordDo<0d){
+                num = null;
+            }
         };
         LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
         firMap.put("name","手术相关记录完成率");
@@ -2822,8 +3023,11 @@ public class ConsoleFacade {
         String num = null;
         if(StringUtils.isNotEmpty(String.valueOf(count)) &&  count != 0d){
             //指标十七
-            double rescueDo = currencyCal(count, triggeringRulesMap.get("bloodNum"));
-            num = String.valueOf(rescueDo);
+            double bloodDo = currencyCal(count, triggeringRulesMap.get("bloodNum"));
+            num = String.valueOf(bloodDo);
+            if(bloodDo<0d){
+                num = null;
+            }
         }
         LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
         firMap.put("name","临床用血相关记录符合率");
@@ -2848,8 +3052,8 @@ public class ConsoleFacade {
         DecimalFormat df = new DecimalFormat("#0.00");
         double count = medManageParams.get("sec_file_result");
         String num = null;
-        if(StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString()) && ! baseIndex.get("firWorkNum").toString().equals("0") ){
-            double retNum =count* 100/Double.parseDouble(baseIndex.get("firWorkNum").toString());
+        if(StringUtils.isNotEmpty( baseIndex.get("sevenWorkNum").toString()) && ! baseIndex.get("sevenWorkNum").toString().equals("0") ){
+            double retNum =count* 100/Double.parseDouble(baseIndex.get("sevenWorkNum").toString());
             double firGradeStr = Double.parseDouble(df.format(retNum));
             num = String.valueOf(firGradeStr);
         }
@@ -2880,10 +3084,13 @@ public class ConsoleFacade {
             if(secOp.isPresent()){
                 secMouth = secOp.get();
             }
+            if(secMouth == 0d){
+                secMouth = 5d;
+            }
             //指标一
             String num1 = "0";
             if(secMouth != 0d && secMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
-                num1 = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString()) / secMouth));
+                num1 = String.valueOf(Math.round(Double.parseDouble(baseIndex.get("firWorkNum").toString()) / secMouth));
             }
             LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
             firMap.put("name","住院病案管理人员月均负担出院患者病历数");
@@ -2898,10 +3105,13 @@ public class ConsoleFacade {
             if(firOp.isPresent()){
                 firMouth = firOp.get();
             }
+            if(firMouth == 0d){
+                firMouth = 5d;
+            }
             String num3 = "0";
             if(firMouth != 0d && firMouth != null  && StringUtils.isNotEmpty( baseIndex.get("secWorkNum").toString())){
                 //指标二
-                num3 = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("secWorkNum").toString())/firMouth));
+                num3 = String.valueOf(Math.round(Double.parseDouble(baseIndex.get("secWorkNum").toString())/firMouth));
             }
             LinkedHashMap<String, String> thrMap = new LinkedHashMap<>();
             thrMap.put("name","门诊病案管理人员月均负担门诊患者病历数");
@@ -2916,11 +3126,13 @@ public class ConsoleFacade {
             if(thrOp.isPresent()){
                 thrMouth = thrOp.get();
             }
-
+            if(thrMouth == 0d){
+                thrMouth = 5d;
+            }
             //指标三
             String num2 = "0";
             if(thrMouth != 0d && thrMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
-                num2 = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString())/thrMouth));
+                num2 = String.valueOf(Math.round(Double.parseDouble(baseIndex.get("firWorkNum").toString())/thrMouth));
 
             }
             LinkedHashMap<String, String> secMap = new LinkedHashMap<>();
@@ -2944,7 +3156,7 @@ public class ConsoleFacade {
             if( firRecord != 0d && StringUtils.isNotEmpty( baseIndex.get("sixWorkNum").toString()) ){
                 double retNum = Double.parseDouble(baseIndex.get("sixWorkNum").toString()) * 100 / firRecord;
                 double firGradeStr = Double.parseDouble(df.format(retNum));
-                num4 = String.valueOf(Math.ceil(firGradeStr));
+                num4 = String.valueOf(firGradeStr);
             }
             LinkedHashMap<String, String> fouMap = new LinkedHashMap<>();
             fouMap.put("name","甲级病历率");
@@ -2959,7 +3171,7 @@ public class ConsoleFacade {
      * ==============================后台维护===============================
      */
     //指标十八 抢救记录
-    private  void rescueMethods(List<MedManageParamsDTO> medManageParams,MedIndexResult medIndexResult){
+    private  void rescueMethods(List<MedManageParamsDTO> medManageParams,MedIndexResult medIndexResult, Set<String> rescueCode){
         List<MedManageParamsDTO> manageList= new ArrayList<>();
         List<String> rescueDrugList = QualityContent.RESCUEDRUGLIST;
         for (int i = 0; i < medManageParams.size(); i++) {
@@ -2967,8 +3179,9 @@ public class ConsoleFacade {
             String doctorAdviceType = medManageParams.get(i).getDoctorAdviceType();
             String da_status = medManageParams.get(i).getDaStatus();
             for (String str : rescueDrugList) {
-                if(StringUtils.isNotEmpty(daItemName) && daItemName.contains(str) && StringUtils.isNotEmpty(doctorAdviceType) && doctorAdviceType.equals(QualityContent.STAT_ORDER) && (StringUtils.isEmpty(da_status) || (StringUtils.isNotEmpty(da_status) && ! doctorAdviceType.equals(QualityContent.CANCELLATION_ORDER)))){
+                if(StringUtils.isNotEmpty(daItemName) && daItemName.contains(str) && StringUtils.isNotEmpty(doctorAdviceType) && doctorAdviceType.equals(QualityContent.STAT_ORDER) && (StringUtils.isEmpty(da_status) || (StringUtils.isNotEmpty(da_status) && ! da_status.equals(QualityContent.CANCELLATION_ORDER)))){
                     manageList.add(medManageParams.get(i));
+                    rescueCode.add(medManageParams.get(i).getBehospitalCode());
                 }
             }
         }
@@ -2981,7 +3194,7 @@ public class ConsoleFacade {
     }
 
     //指标十六  临床用血相关记录符合率
-    private void bloodMethods(List<MedManageParamsDTO> doctorAdviceList, List<MedManageParamsDTO> medManageParams,MedIndexResult medIndexResult){
+    private void bloodMethods(List<MedManageParamsDTO> doctorAdviceList, List<MedManageParamsDTO> medManageParams,MedIndexResult medIndexResult, Set<String> bloodCode){
         Set<String> manageList= new CopyOnWriteArraySet<>();
         List<String> blood_list = QualityContent.BLOODLIST;
         //lis项目存在用血住院病历号
@@ -2996,10 +3209,10 @@ public class ConsoleFacade {
         doctorAdviceList.parallelStream()
                 .filter(obj -> beCode.contains(obj.getBehospitalCode()) && obj.getDoctorAdviceType()
                         .equals(QualityContent.STAT_ORDER) && blood_list.contains(obj.getDaItemName()) &&
-                        (StringUtils.isEmpty(obj.getDaStatus())) || (StringUtils.isNotEmpty(obj.getDaStatus()) && ! obj.getDaStatus()
-                        .equals(QualityContent.CANCELLATION_ORDER)))
+                        (StringUtils.isEmpty(obj.getDaStatus()) || (StringUtils.isNotEmpty(obj.getDaStatus()) && ! obj.getDaStatus()
+                        .equals(QualityContent.CANCELLATION_ORDER))))
                 .distinct()
-                .map(obj -> manageList.add(obj.getBehospitalCode()))
+                .map(obj -> {manageList.add(obj.getBehospitalCode());return bloodCode.add(obj.getBehospitalCode());})
                 .collect(Collectors.toList());
         long xx3= System.currentTimeMillis();
         System.out.println("advice体现lis项目存在用血的住院病历号 = " + (xx3-xx2));
@@ -3014,7 +3227,7 @@ public class ConsoleFacade {
 
 
     //指标十九 出院患者病历2日归档
-    private void getfileSecAmounts(FilterVO filterVO,Map<String, Object> baseIndex,MedIndexResult medIndexResult){
+    private void getfileSecAmounts(FilterVO filterVO,MedIndexResult medIndexResult){
         QueryWrapper<BehospitalInfo> query = new QueryWrapper<>();
         DecimalFormat df = new DecimalFormat("#0.00");
         query.eq("hospital_id", filterVO.getHospitalId())
@@ -3029,7 +3242,7 @@ public class ConsoleFacade {
         Iterator<BehospitalInfo> iterator = list.iterator();
         while (iterator.hasNext()){
             BehospitalInfo beh = iterator.next();
-            Boolean flag = getTrueSecFile(beh.getLeaveHospitalDate(), beh.getPlacefileDate(), TimeContent.getHolidaysTimeList());
+            Boolean flag = getTrueSecFile(beh.getLeaveHospitalDate(), beh.getPlacefileDate(), TimeContent.HolidaysTimeList);
             //时间截止则删除元素
             if(!flag){
                 iterator.remove();
@@ -3043,6 +3256,9 @@ public class ConsoleFacade {
     }
 
     private Boolean getTrueSecFile(Date date1,Date date2, List<String> holidaysTimeList){
+        if(date1.after(date2)){
+            return false;
+        }
         Date date = date1;
         Date dateSec = date2;
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -3077,19 +3293,6 @@ public class ConsoleFacade {
         return false;
     }
 
-    private void firMethods(String indexName, Map<String, Object> baseIndex, MedIndexResult medIndexResult){
-        DecimalFormat df = new DecimalFormat("0.00");
-        //指标二十七 -甲级病历率
-        Double firRecord = 0d;
-        if(StringUtils.isNotEmpty( baseIndex.get("forWorkNum").toString())){
-            firRecord =Double.parseDouble(baseIndex.get("forWorkNum").toString());
-        }
-        if( firRecord != 0d && StringUtils.isNotEmpty( baseIndex.get("sixWorkNum").toString()) ){
-            double retNum = Double.parseDouble(baseIndex.get("sixWorkNum").toString()) * 100 / firRecord;
-            double firGradeStr = Double.parseDouble(df.format(retNum));
-            medIndexResult.setFirRecordResult(firGradeStr);
-        }
-    };
 
     private void timeTrans( MedIndexFilterVO  filterVO){
         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");

+ 14 - 0
src/main/java/com/diagbot/facade/MedIndexRelevanceFacade.java

@@ -0,0 +1,14 @@
+package com.diagbot.facade;
+import com.diagbot.service.impl.MedIndexRelevanceServiceImpl;
+
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class MedIndexRelevanceFacade extends MedIndexRelevanceServiceImpl {
+}

+ 1 - 1
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -707,7 +707,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param filterVO
      * @return
      */
-    public Map<String,Long> selectOperationNum(@Param("filterVO") FilterVO filterVO);
+    public List<Map<String, String>> selectOperationNum(@Param("filterVO") FilterVO filterVO);
 
     /**
      * 病理CT/MR触发多规则人数

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedIndexRelevance;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+public interface MedIndexRelevanceMapper extends BaseMapper<MedIndexRelevance> {
+
+}

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

@@ -17,6 +17,5 @@ import java.util.List;
  */
 public interface MedPacsResultMapper extends BaseMapper<MedPacsResult> {
     public List<MedPacsResultDTO> getMedPacsResults(BehospitalInfo behospitalInfo);
-
     void updateBatchByKey(List<MedPacsResult> list);
 }

+ 1 - 1
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -662,7 +662,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param filterVO
      * @return
      */
-    public Map<String,Long> selectOperationNum(@Param("filterVO")FilterVO filterVO);
+    public List<Map<String, String>> selectOperationNum(@Param("filterVO")FilterVO filterVO);
 
     /**
      * 触发规则人数

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedIndexRelevance;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+public interface MedIndexRelevanceService extends IService<MedIndexRelevance> {
+
+}

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

@@ -1101,7 +1101,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @param  filterVO
      * @return
      */
-    public Map<String,Long> selectOperationNum(@Param("filterVO")FilterVO filterVO){
+    public List<Map<String, String>> selectOperationNum(@Param("filterVO")FilterVO filterVO){
         return  baseMapper.selectOperationNum(filterVO);
 
     }

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedIndexRelevance;
+import com.diagbot.mapper.MedIndexRelevanceMapper;
+import com.diagbot.service.MedIndexRelevanceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+@Service
+public class MedIndexRelevanceServiceImpl extends ServiceImpl<MedIndexRelevanceMapper, MedIndexRelevance> implements MedIndexRelevanceService {
+
+}

+ 1 - 1
src/main/java/com/diagbot/util/ExcelUtils.java

@@ -115,7 +115,7 @@ public class ExcelUtils {
 
     private static void userExport2(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
                                     ExportParams exportParams, float height, Boolean havTitle) {
-        if(exportParams.getTitle().equals("病历质控报表")){
+        if(StringUtils.isNotEmpty(exportParams.getTitle()) && exportParams.getTitle().equals("病历质控报表")){
             exportParams.setTitleHeight(Short.valueOf("20"));
         };
         Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);

+ 1 - 1
src/main/java/com/diagbot/vo/BasDeptInfoVO.java

@@ -15,7 +15,7 @@ public class BasDeptInfoVO {
     /**
      * 搜索参数
      */
-    private String inputStr;
+    private String inputStr = "";
 
     @ApiModelProperty(hidden = true)
     private Long hospitalId;

+ 3 - 11
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -6,15 +6,7 @@ import com.diagbot.dto.*;
 import com.diagbot.entity.QcCasesRelevanceEntry;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.QcresultInfoFacade;
-import com.diagbot.vo.AnalyzeApiVO;
-import com.diagbot.vo.AnalyzeCdsVO;
-import com.diagbot.vo.AnalyzeRunVO;
-import com.diagbot.vo.AnalyzeVO;
-import com.diagbot.vo.BehospitalPageVO;
-import com.diagbot.vo.ExportQcresultVO;
-import com.diagbot.vo.GetDetailVO;
-import com.diagbot.vo.QcresultVO;
-import com.diagbot.vo.TaskVO;
+import com.diagbot.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -82,8 +74,8 @@ public class BehospitalInfoController {
             notes = "")
     @PostMapping("/getMedQualityCoList")
     @SysLogger("getMedQualityCoList")
-    public RespDTO<List<ColumnDTO>> getMedQualityControl() {
-        List<ColumnDTO> data = behospitalInfoFacade.getMedQualityControl();
+    public RespDTO<List<ColumnDTO>> getMedQualityControl(@RequestBody BasDeptInfoVO basDeptInfoVO) {
+        List<ColumnDTO> data = behospitalInfoFacade.getMedQualityControl(basDeptInfoVO);
         return  RespDTO.onSuc(data);
     }
 

+ 47 - 65
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -721,7 +721,8 @@
         f2.secWorkNum,
         f3.thrWorkNum,
         f3.forWorkNum,
-        f3.sixWorkNum
+        f3.sixWorkNum,
+        f4.sevenWorkNum
         from (
         SELECT  count(*)  as firWorkNum
         FROM
@@ -772,7 +773,23 @@
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
         </if>)m
-            )f3
+            )f3,(
+        SELECT  count(*)  as sevenWorkNum
+        FROM
+        med_behospital_info a
+        WHERE
+        a.is_deleted = 'N'
+        AND a.is_placefile = 1
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ AND a.leave_hospital_date >= #{startDate}]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[ AND a.leave_hospital_date <= #{endDate}]]>
+        </if>)f4
     </select>
 
     <!-- 病案管理规则质控缺陷病历总数查询-->
@@ -17565,9 +17582,7 @@
         AND a.is_placefile = #{filterVO.isPlacefile}
         <if test="filterVO.startDate != null and  filterVO.endDate != null">
             <![CDATA[ and a.leave_hospital_date >= #{filterVO.startDate}]]>
-            <![CDATA[ AND a
-
-            .leave_hospital_date <= #{filterVO.endDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
         </if>
         <![CDATA[ and  a.qc_type_id <>'0' ]]>
         AND a.behospital_code = c.behospital_code
@@ -17589,54 +17604,10 @@
     <!--  时间段出院,住院, 手术费,抗菌药物,手术和病理费等含有人数 -->
     <select id="selectOperationNum" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
         select
-        <if test="filterVO.startDate != null and  filterVO.endDate != null">
-        count(
-        CASE
-        WHEN   <![CDATA[  d.leave_hospital_date >= #{filterVO.startDate}]]>
-            <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]> THEN
-        1
-        ELSE
-        NULL
-        END
-        )  AS '出院人数',
-        count(
-        CASE
-        WHEN   <![CDATA[  d.leave_hospital_date >= #{filterVO.startDate}]]>
-            <![CDATA[ AND d.leave_hospital_date <= #{filterVO.endDate}]]> THEN
-        1
-        ELSE
-        NULL
-        END
-        )  AS '入院人数',
-        </if>
-        count(
-        CASE
-        WHEN   b.operation_fee > 0
-        THEN
-        1
-        ELSE
-        NULL
-        END
-        ) AS 'operationFee',
-        count(
-        CASE
-        WHEN   b.antibiosis_fee > 0
-        THEN
-        1
-        ELSE
-        NULL
-        END
-        ) AS 'antibiosisFee',
-        count(
-        CASE
-        WHEN   b.operation_fee > 0
-        AND   b.pathology_fee > 0
-        THEN
-        1
-        ELSE
-        NULL
-        END
-        ) AS 'operationPathologyFee'
+        d.behospital_code behospitalCode,
+        b.operation_fee operationFee,
+        b.pathology_fee pathologyFee,
+        b.antibiosis_fee antibiosisFee
         FROM
         (
         SELECT
@@ -17660,7 +17631,7 @@
         AND a.hospital_id = #{filterVO.hospitalId}
         and a.behospital_code = c.behospital_code
         ) d
-        LEFT JOIN med_home_page b ON b.behospital_code = d.behospital_code
+        JOIN med_home_page b ON b.behospital_code = d.behospital_code
         AND d.hospital_id = b.hospital_id
         AND b.is_deleted = 'N'
     </select>
@@ -17670,7 +17641,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type=5 THEN
+        WHEN a.type=5 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17679,7 +17650,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 4 THEN
+        WHEN a.type = 4 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17688,7 +17659,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 6 THEN
+        WHEN a.type = 6 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17697,7 +17668,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 7 THEN
+        WHEN a.type = 7 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17706,7 +17677,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type=8 THEN
+        WHEN a.type=8 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17715,7 +17686,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 9 THEN
+        WHEN a.type = 9 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17724,7 +17695,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 10 THEN
+        WHEN a.type = 10 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17733,7 +17704,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 15 THEN
+        WHEN a.type = 15 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17742,7 +17713,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 17 THEN
+        WHEN a.type = 17 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17751,7 +17722,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 18 THEN
+        WHEN a.type = 18 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17760,7 +17731,7 @@
         count(
         DISTINCT
         CASE
-        WHEN q.type = 19 THEN
+        WHEN a.type = 19 THEN
         a.behospital_code
         ELSE
         NULL
@@ -17770,6 +17741,12 @@
         (
         SELECT
         a.behospital_code,
+        a.hospital_id,
+        q.type
+        FROM
+        (
+        SELECT
+        a.behospital_code,
         a.cases_entry_id,
         a.hospital_id
         FROM
@@ -17807,6 +17784,11 @@
         ) a
         JOIN qc_cases_relevance_entry q ON a.cases_entry_id = q.relevance_id
         AND a.hospital_id = q.hospital_id
+        ) a
+        JOIN med_index_relevance r ON r.behospital_code = a.behospital_code
+        AND r.relevance_type = a.type
+        AND r.is_deleted = 'N'
+        AND a.hospital_id = r.hospital_id
     </select>
 
 <!--    跟病案首页关联的出院病历-->

+ 21 - 0
src/main/resources/mapper/MedIndexRelevanceMapper.xml

@@ -0,0 +1,21 @@
+<?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.MedIndexRelevanceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedIndexRelevance">
+        <id column="id" property="id" />
+        <result column="index_result_id" property="indexResultId" />
+        <result column="relevance_type" property="relevanceType" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="behospital_code" property="behospitalCode" />
+        <result column="start_date" property="startDate" />
+        <result column="end_date" property="endDate" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+    </resultMap>
+
+</mapper>