Browse Source

修改整合

zhanghang 4 years ago
parent
commit
5a00fd8c6b

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

@@ -22,6 +22,12 @@ public class QualityContent {
     public static List<String> NEED_MEDICAL_ADVICE = Arrays.asList("",
             "手术记录24小时内完成率","手术相关记录完成率","患者抢救记录及时完成率","临床用血相关记录符合率","CT检查记录符合率","MRI检查记录符合率","病理检查记录符合率"
     );
+    /**
+     * 关联首页无code需要去医嘱查询指标
+     */
+    public static List<String> NORecord_NEED_MEDICAL_ADVICE = Arrays.asList("全部",
+            "手术记录24小时内完成率","病理检查记录符合率","抗菌药物使用记录符合率"
+    );
     /**
      * 所有指标名称
      */

+ 1 - 1
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -2352,7 +2352,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
      * @param filterVO
      * @return
      */
-    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO){
+    public List<String> malignancy(@Param("filterVO") FilterVO filterVO){
         return  baseMapper.malignancy(filterVO);
     }
 }

+ 139 - 142
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -410,11 +410,15 @@ public class ConsoleFacade {
         Long OutHospitalRecords = triggeringRulesMap.get(QualityContent.CYJLWWC_24H);
         Long recordHomePage = triggeringRulesMap.get(QualityContent.BASYWWC_24H);
         //病理手术
-        Long antibiosisNum = triggeringRulesMap.get("antibiosisNum");
+        Long operationPathologyFee = triggeringRulesMap.get("operationPathologyFee");
         //CT
         Long ct = triggeringRulesMap.get("CT");
         //MR
         Long mr = triggeringRulesMap.get("MR");
+        //抗菌药物
+        Long antibiosis = 0L;
+        //恶性肿瘤化学治疗
+        Long chemotherapyMalignantTumors = 0L;
         if(indexName!=null) {
             if(QualityContent.NO_MEDICAL_ADVICE.contains(indexName)){
                 //入院记录24小时完成率
@@ -428,7 +432,6 @@ public class ConsoleFacade {
                         hashMapArrayList.add(stringStringHashMap);
                     }
                 }
-
                 //出院记录24小时完成率
                 //出院记录完成人数为
                 if(indexName.equals(QualityContent.CYJL_24H_WCL)||indexName.equals(QualityContent.QB)) {
@@ -470,10 +473,16 @@ public class ConsoleFacade {
                 Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
                 Long operationPathology = adviceNum.get("operationPathology");
                 operationPathologyFeeNum = operationPathologyFeeNum + operationPathology;
+                //抗菌药物人数
+                Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
+                Long antibiosisNum = adviceNum.get("antibiosis");
+                antibiosisFeeNum = antibiosisFeeNum + antibiosisNum;
+                //恶性肿瘤化学治疗人数
+                Long chemotherapyMalignantTumorsNum = adviceNum.get("chemotherapyMalignantTumors");
                 //手术记录完成率
                 //手术完成人数为
                 if (indexName.equals(QualityContent.SSJL_24H_WCL)||indexName.equals(QualityContent.QB)) {
-                    if (operationCount != null && operationFeeNum != null) {
+                    if (operationFeeNum != null && operationCount != null) {
                         LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
                         stringStringHashMap.put("name", QualityContent.SSJL_24H_WCL);
                         stringStringHashMap.put("notCopiedStr", getResult(operationFeeNum - operationCount, operationFeeNum));
@@ -502,32 +511,39 @@ public class ConsoleFacade {
                     }
                 }
                 if (indexName.equals(QualityContent.BL_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
-                    if (operationPathologyFeeNum != null && antibiosisNum != null) {
+                    if (operationPathologyFeeNum != null && operationPathologyFee != null) {
                         //病理完成率为
                         Map<String, String> stringStringHashMap = new LinkedHashMap<>();
                         stringStringHashMap.put("name", QualityContent.BL_JCJL_FHL);
-                        stringStringHashMap.put("notCopiedStr", getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
+                        stringStringHashMap.put("notCopiedStr", getResult(operationPathologyFeeNum - operationPathologyFee, operationPathologyFeeNum));
                         stringStringHashMap.put("num", Double.valueOf(operationPathologyFeeNum).toString());
                         hashMapArrayList.add(stringStringHashMap);
                     }
                 }
+                if (indexName.equals(QualityContent.KJYW_SY_FHL)||indexName.equals(QualityContent.QB)) {
+                    if (antibiosisFeeNum != null && antibiosis != null) {
+                        //抗菌
+                        Map<String, String> stringStringHashMap = new LinkedHashMap<>();
+                        stringStringHashMap.put("name", QualityContent.KJYW_SY_FHL);
+                        stringStringHashMap.put("notCopiedStr", getResult(antibiosisFeeNum - antibiosis, antibiosisFeeNum));
+                        stringStringHashMap.put("num", Double.valueOf(antibiosisFeeNum).toString());
+                        hashMapArrayList.add(stringStringHashMap);
+                    }
+                }
+                if (indexName.equals(QualityContent.EXZL_HXZL_FHL)||indexName.equals(QualityContent.QB)) {
+                    if (chemotherapyMalignantTumorsNum != null && chemotherapyMalignantTumors != null) {
+                        //恶性肿瘤化学治疗
+                        Map<String, String> stringStringHashMap = new LinkedHashMap<>();
+                        stringStringHashMap.put("name", QualityContent.EXZL_HXZL_FHL);
+                        stringStringHashMap.put("notCopiedStr", getResult(chemotherapyMalignantTumorsNum - chemotherapyMalignantTumors, chemotherapyMalignantTumorsNum));
+                        stringStringHashMap.put("num", Double.valueOf(chemotherapyMalignantTumorsNum).toString());
+                        hashMapArrayList.add(stringStringHashMap);
+                    }
+                }
             }
 
-
-
-        //抗菌人数
-     //   Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
-    //    Integer antibiosis = Integer.valueOf(getAntibiosisNum(filterVO));
-    //    antibiosisFeeNum = antibiosisFeeNum + antibiosis;
-
-
         //细菌培养
         Long bacterialCulture = triggeringRulesMap.get("bacterialCulture");
-
-        //抗菌完成率
-      //    medQualityControlDTO.setAdmissionStr(getResult(antibiosisFeeNum-0,antibiosisFeeNum));
-
-
         /**
          * =================================标示线========================================
          */
@@ -672,13 +688,19 @@ public class ConsoleFacade {
      */
     public Map<String,Long> getAdviceNum(FilterVO filterVO,List<MedManageParamsDTO> doctorAdviceMedManageParamsList) {
         CopyOnWriteArrayList<MedManageParamsDTO> doctorAdviceMedManageParams = new CopyOnWriteArrayList<>(doctorAdviceMedManageParamsList);
+        String indexName = filterVO.getIndexName();
         Map map = new HashMap<String,Integer>();
         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> antibiosisBehospitalCode = new CopyOnWriteArrayList<>();
+        List<String> chemotherapyMalignantTumorsBehospitalCode = new CopyOnWriteArrayList<>();
+        //无首页code
         List<String> behospitalCodeList = adviceVerify(filterVO);
+        //首页为肿瘤code
+        List<String> malignancyCodeList = behospitalInfoFacade.malignancy(filterVO);
         ForkJoinPool myPool = new ForkJoinPool(4);
         try {
             myPool.submit(() ->
@@ -688,57 +710,104 @@ public class ConsoleFacade {
                 String doctorAdviceType = adviceMedManageParam.getDoctorAdviceType();
                 //得到与手术相关
                 if(StringUtil.isNotEmpty(daItemName)) {
-                    //当code存在于无首页code集合中
-                    if (behospitalCodeList.contains(behospitalCode)) {
-                        //code也不存在于以保存的code集合
-                        if(!operationBehospitalCode.contains(behospitalCode)){
-                        String[][] operationList = QualityContent.OPERATION_LIST;
-                        Boolean stair = stairCondition(daItemName, operationList);
-                        if(stair) {
-                            String[][] operationArg = QualityContent.OPERATION_ARG;
-                            Boolean levelCondition = secondLevelCondition(daItemName, operationArg);
-                            if (levelCondition) {
-                                operationBehospitalCode.add(behospitalCode);
+                    if(QualityContent.NORecord_NEED_MEDICAL_ADVICE.contains(indexName)) {
+                        //当code存在于无首页code集合中
+                        if (behospitalCodeList.contains(behospitalCode)) {
+                            //code也不存在于以保存的code集合
+                            //手术
+                            if(indexName.equals(QualityContent.SSJL_24H_WCL)||indexName.equals(QualityContent.BL_JCJL_FHL)||indexName.equals(QualityContent.QB)){
+                            if (!operationBehospitalCode.contains(behospitalCode)) {
+                                String[][] operationList = QualityContent.OPERATION_LIST;
+                                Boolean stair = stairCondition(daItemName, operationList);
+                                if (stair) {
+                                    String[][] operationArg = QualityContent.OPERATION_ARG;
+                                    Boolean levelCondition = secondLevelCondition(daItemName, operationArg);
+                                    if (levelCondition) {
+                                        operationBehospitalCode.add(behospitalCode);
+                                    }
+                                }
                             }
-                        }
-                      }
-                        if(!pathologyBehospitalCode.contains(behospitalCode)){
-                            Boolean condition = stairCondition(daItemName, QualityContent.BL_LIST);
-                            if (condition) {
-                                pathologyBehospitalCode.add(behospitalCode);
+                            }
+                            //手术病理
+                            if(indexName.equals(QualityContent.BL_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
+                                if (!pathologyBehospitalCode.contains(behospitalCode)) {
+                                    Boolean condition = stairCondition(daItemName, QualityContent.BL_LIST);
+                                    if (condition) {
+                                        pathologyBehospitalCode.add(behospitalCode);
+                                    }
+                                }
+                            }
+                            //取临时和长期
+                            if (doctorAdviceType.equals(QualityContent.STAT_ORDER) || doctorAdviceType.equals(QualityContent.STANDING_ORDER)) {
+                                //抗菌药物
+                                if(indexName.equals(QualityContent.KJYW_SY_FHL)||indexName.equals(QualityContent.QB)) {
+                                    if (!antibiosisBehospitalCode.contains(behospitalCode)) {
+                                        List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
+                                        for (String antimicrobialDrug : antimicrobialDrugList) {
+                                            if (daItemName.contains(antimicrobialDrug)) {
+                                                //包含抗菌药物
+                                                antibiosisBehospitalCode.add(behospitalCode);
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     }
                         //得到为临时医嘱
                         if (StringUtil.isNotEmpty(doctorAdviceType)) {
                             if (doctorAdviceType.equals(QualityContent.STAT_ORDER)) {
-                                if (!CTBehospitalCode.contains(behospitalCode)) {
-                                    //筛选与CT相关
-                                    //一级条件
-                                    String[][] ctList = QualityContent.CT_LIST;
-                                    Boolean stair = stairCondition(daItemName, ctList);
-                                    if (stair) {
-                                        String[][] ctRegulation = QualityContent.CT_REGULATION;
-                                        Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
-                                        if (levelCondition) {
-                                            CTBehospitalCode.add(behospitalCode);
+                                if(indexName.equals(QualityContent.CT_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
+                                    if (!CTBehospitalCode.contains(behospitalCode)) {
+                                        //筛选与CT相关
+                                        //一级条件
+                                        String[][] ctList = QualityContent.CT_LIST;
+                                        Boolean stair = stairCondition(daItemName, ctList);
+                                        if (stair) {
+                                            String[][] ctRegulation = QualityContent.CT_REGULATION;
+                                            Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
+                                            if (levelCondition) {
+                                                CTBehospitalCode.add(behospitalCode);
+                                            }
                                         }
                                     }
                                 }
                                 //与MR相关
-                                if (!MRBehospitalCode.contains(behospitalCode)) {
-                                    String[][] mrList = QualityContent.MR_LIST;
-                                    Boolean stair = stairCondition(daItemName, mrList);
-                                    if (stair) {
-                                        String[][] ctRegulation = QualityContent.CT_REGULATION;
-                                        Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
-                                        if (levelCondition) {
-                                            MRBehospitalCode.add(behospitalCode);
+                                if(indexName.equals(QualityContent.MR_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
+                                    if (!MRBehospitalCode.contains(behospitalCode)) {
+                                        String[][] mrList = QualityContent.MR_LIST;
+                                        Boolean stair = stairCondition(daItemName, mrList);
+                                        if (stair) {
+                                            String[][] ctRegulation = QualityContent.CT_REGULATION;
+                                            Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
+                                            if (levelCondition) {
+                                                MRBehospitalCode.add(behospitalCode);
+                                            }
                                         }
                                     }
                                 }
                             }
                         }
+                    //获取为长期医嘱或临时医嘱的医嘱
+                    if(StringUtil.isNotEmpty(doctorAdviceType)) {
+                        if (indexName.equals(QualityContent.EXZL_HXZL_FHL)||indexName.equals(QualityContent.QB)) {
+                            if (ListUtil.isNotEmpty(malignancyCodeList)) {
+                                if (malignancyCodeList.contains(behospitalCode)) {
+                                    if (!chemotherapyMalignantTumorsBehospitalCode.contains(behospitalCode)) {
+                                        if (doctorAdviceType.equals(QualityContent.STAT_ORDER) || doctorAdviceType.equals(QualityContent.STANDING_ORDER)) {
+                                            List<String> chemotherapyDrugList = QualityContent.Chemotherapy_Drug_List;
+                                            for (String chemotherapyDrug : chemotherapyDrugList) {
+                                                if (daItemName.contains(chemotherapyDrug)) {
+                                                    //医嘱含有化疗药物
+                                                    chemotherapyMalignantTumorsBehospitalCode.add(behospitalCode);
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
                 }
         })).get();
         } catch (InterruptedException e) {
@@ -747,11 +816,7 @@ public class ConsoleFacade {
             e.printStackTrace();
         }finally {
             myPool.shutdown();
-            for (String operation : operationBehospitalCode) {
-                if(pathologyBehospitalCode.contains(operation)){
-                    operationPathologyBehospitalCode.add(operation);
-                }
-            }
+
             if(ListUtil.isEmpty(CTBehospitalCode)){
                 map.put("CT",Long.valueOf(0));
             }else {
@@ -767,98 +832,30 @@ public class ConsoleFacade {
             }else {
                 map.put("operation",Long.valueOf(operationBehospitalCode.size()));
             }
-            if(ListUtil.isEmpty(operationPathologyBehospitalCode)){
+            if(ListUtil.isEmpty(operationBehospitalCode)||ListUtil.isEmpty(operationPathologyBehospitalCode)){
                 map.put("operationPathology",Long.valueOf(0));
             }else {
-                map.put("operationPathology",Long.valueOf(operationPathologyBehospitalCode.size()));
-            }
-            return map;
-        }
-    }
-
-
-    /**
-     * 获取无病案首页抗菌药物使用人数
-     * @param filterVO
-     * @return
-     */
-    public int getAntibiosisNum(FilterVO filterVO) {
-        List<String> adviceVerify = adviceVerify(filterVO);
-        int operationNum = 0;
-        if (ListUtil.isNotEmpty(adviceVerify) && adviceVerify.size() > 0) {
-            for (String behospitalCode : adviceVerify) {
-                QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
-                dtoQueryWrapper.eq("behospital_code", behospitalCode)
-                        .eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .eq("da_status", QualityContent.IN_USE);
-                //查医嘱表
-                List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
-                if (ListUtil.isNotEmpty(doctorAdvices) && doctorAdvices.size() > 0) {
-                    doc:
-                    for (DoctorAdvice doctorAdvice : doctorAdvices) {
-                        String daItemName = doctorAdvice.getDaItemName();
-                        if (StringUtil.isNotEmpty(daItemName)) {
-                            List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
-                            for (String antimicrobialDrug : antimicrobialDrugList) {
-                                if (daItemName.contains(antimicrobialDrug)) {
-                                    //医嘱包含抗菌药物名称        若非抗菌药物使用患者可能有取消字眼
-                                    if(daItemName.contains(QualityContent.COUNTERMAND)){
-                                        continue ;
-                                    }else {
-                                        operationNum++;
-                                        break doc;
-                                    }
-                                }
-                            }
-                        }
+                for (String operation : operationBehospitalCode) {
+                    if(pathologyBehospitalCode.contains(operation)){
+                        operationPathologyBehospitalCode.add(operation);
                     }
                 }
+                map.put("operationPathology",Long.valueOf(operationPathologyBehospitalCode.size()));
             }
-        }
-        return operationNum;
-    }
-
-    /**
-     * 恶性肿瘤化学治疗患者
-     * @param filterVO
-     * @return
-     */
-    public Integer chemotherapyMalignantTumors(FilterVO filterVO){
-        filterVO.setFlagStr("2");
-        int chemotherapyMalignantTumorsNum=0;
-        //得到首页判断为恶性肿瘤病历
-        List<Map<String, String>> malignancy = behospitalInfoFacade.malignancy(filterVO);
-        if(ListUtil.isNotEmpty(malignancy)&&malignancy.size()>0) {
-            for (Map<String, String> malignancyMap : malignancy) {
-                String behospitalCode = malignancyMap.get("behospital_code");
-                QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
-                dtoQueryWrapper.eq("behospital_code", behospitalCode)
-                        .eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .eq("da_status", QualityContent.IN_USE);
-                List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
-                if(ListUtil.isNotEmpty(doctorAdvices)&&doctorAdvices.size()>0){
-                    doc:
-                    for (DoctorAdvice doctorAdvice : doctorAdvices) {
-                        String daItemName = doctorAdvice.getDaItemName();
-                        if(StringUtil.isNotEmpty(daItemName)){
-                            List<String> chemotherapyDrugList = QualityContent.Chemotherapy_Drug_List;
-                            for (String chemotherapyDrug : chemotherapyDrugList) {
-                                if (daItemName.contains(chemotherapyDrug)) {
-                                    //医嘱包含化疗药物
-                                    if (daItemName.contains(QualityContent.COUNTERMAND)) {
-                                        //病人为化疗
-                                        chemotherapyMalignantTumorsNum++;
-                                        break doc;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
+            if(ListUtil.isEmpty(antibiosisBehospitalCode)){
+                map.put("antibiosis",Long.valueOf(0));
+            }else {
+                map.put("antibiosis",Long.valueOf(antibiosisBehospitalCode.size()));
             }
+            if(ListUtil.isEmpty(chemotherapyMalignantTumorsBehospitalCode)){
+                map.put("chemotherapyMalignantTumors",Long.valueOf(0));
+            }else {
+                map.put("chemotherapyMalignantTumors",Long.valueOf(chemotherapyMalignantTumorsBehospitalCode.size()));
+            }
+            return map;
         }
-        return chemotherapyMalignantTumorsNum;
     }
+
     /**
      * 质控病历统计
      *

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

@@ -728,5 +728,5 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param filterVO
      * @return
      */
-    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO);
+    public List<String> malignancy(@Param("filterVO") FilterVO filterVO);
 }

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

@@ -683,6 +683,6 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param filterVO
      * @return
      */
-    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO);
+    public List<String> malignancy(@Param("filterVO") FilterVO filterVO);
 
 }

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

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

+ 1 - 1
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -17729,7 +17729,7 @@
         ELSE
         NULL
         END
-        ) AS 'antibiosisNum',
+        ) AS 'operationPathologyFee',
         count(
         DISTINCT
         CASE