chengyao 4 tahun lalu
induk
melakukan
28cd824bc2

+ 0 - 6
doc/031.20210326v2.0.3/qc_initv2.0.3.sql

@@ -28,12 +28,6 @@ INSERT INTO `qc_cases_relevance_entry` VALUES ('8', '9', '4', 'MR检查记录24
 INSERT INTO `qc_cases_relevance_entry` VALUES ('9', '10', '4', '病理检查完成率', '3116', '病理检查缺少病理检查报告单', 'N');
 INSERT INTO `qc_cases_relevance_entry` VALUES ('10', '10', '4', '病理检查完成率', '3111', '手术病理检查存在手术记录中无病理相关记录', 'N');
 INSERT INTO `qc_cases_relevance_entry` VALUES ('11', '10', '4', '病理检查完成率', '3117', '病理检查存在病程记录中无病理报告结果', 'N');
-INSERT INTO `qc_cases_relevance_entry` VALUES ('12', '11', '4', '测试', '2528', '测试1111', 'N');
-INSERT INTO `qc_cases_relevance_entry` VALUES ('13', '11', '4', '测试2', '2370', '测试2222', 'N');
-INSERT INTO `qc_cases_relevance_entry` VALUES ('14', '11', '4', '测试3', '2522', '测试3333', 'N');
-INSERT INTO `qc_cases_relevance_entry` VALUES ('15', '11', '4', '测试4', '2555', '测试4444', 'N');
-INSERT INTO `qc_cases_relevance_entry` VALUES ('16', '11', '4', '测试5', '2560', '测试5555', 'N');
-INSERT INTO `qc_cases_relevance_entry` VALUES ('17', '11', '4', '测试6', '2604', '测试6666', 'N');
 INSERT INTO `qc_cases_relevance_entry` VALUES ('18', '17', '4', '医师查房记录完成率', '2655', '每周无2次副主任医师/主任医师查房记录', 'N');
 INSERT INTO `qc_cases_relevance_entry` VALUES ('19', '17', '4', '医师查房记录完成率', '2654', '每周无3次主治医师查房记录', 'N');
 INSERT INTO `qc_cases_relevance_entry` VALUES ('20', '17', '4', '医师查房记录完成率', '2468', '缺少术后首次病程记录', 'N');

+ 66 - 55
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -2611,44 +2611,46 @@ public class ConsoleFacade {
 
         //接受抢救的质控病历总数
         double count = manageList.stream().map(MedManageParamsDTO::getBehospitalCode).distinct().count();
+        String num = null;
         if(StringUtils.isNotEmpty(String.valueOf(count)) &&  count != 0d){
             double rescueDo = currencyCal(count, triggeringRulesMap.get("rescueNum"));
-            LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-            String num = String.valueOf(rescueDo);
-            firMap.put("name","患者抢救记录及时完成率");
-            firMap.put("notCopiedStr",num+"%");
-            firMap.put("num",num);
-            retList.add(firMap);
+             num = String.valueOf(rescueDo);
         };
+        LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
+        firMap.put("name","患者抢救记录及时完成率");
+        firMap.put("notCopiedStr",StringUtils.isEmpty(num)? null:(num+"%"));
+        firMap.put("num",num);
+        retList.add(firMap);
         return retList;
     };
 
     //指标十七 医师查房记录
     private List<Map<String, String>> WardRoundMethod( List<Map<String, String>> retList, Map<String, Object> baseIndex, Map<String, Long> triggeringRulesMap){
+        String num = null;
         if( triggeringRulesMap.containsKey("WardRoundNum") && baseIndex.containsKey("forWorkNum") && !baseIndex.get("forWorkNum").toString().equals("0")){
             double wardRoundDo = currencyCal(baseIndex.get("forWorkNum"), triggeringRulesMap.get("WardRoundNum"));
-            LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-            String num = String.valueOf(wardRoundDo);
-            firMap.put("name","医师查房记录完成率");
-            firMap.put("notCopiedStr",num+"%");
-            firMap.put("num",num);
-            retList.add(firMap);
+             num = String.valueOf(wardRoundDo);
         };
+        LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
+        firMap.put("name","医师查房记录完成率");
+        firMap.put("notCopiedStr",StringUtils.isEmpty(num)? null:(num+"%"));
+        firMap.put("num",num);
+        retList.add(firMap);
         return retList;
     }
 
     //指标十四 手术记录
     private  List<Map<String, String>> operationMethod( List<Map<String, String>>retList, String operationFeeNum, Map<String, Long> triggeringRulesMap){
+        String num = null;
         if( triggeringRulesMap.containsKey("operationRecordNum") && StringUtils.isNotEmpty(operationFeeNum) && ! operationFeeNum.equals("0")){
             double operationRecordDo = currencyCal(operationFeeNum, triggeringRulesMap.get("operationRecordNum"));
-            LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-            String num = String.valueOf(operationRecordDo);
-            firMap.put("name","手术相关记录完成率");
-            firMap.put("notCopiedStr",num+"%");
-            firMap.put("num",num);
-            retList.add(firMap);
-
+             num = String.valueOf(operationRecordDo);
         };
+        LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
+        firMap.put("name","手术相关记录完成率");
+        firMap.put("notCopiedStr",StringUtils.isEmpty(num)? null:(num+"%"));
+        firMap.put("num",num);
+        retList.add(firMap);
         return retList;
     }
 
@@ -2666,16 +2668,17 @@ public class ConsoleFacade {
             }
             //临床用血的质控病历总数
             double count = manageList.stream().map(MedManageParamsDTO::getBehospitalCode).distinct().count();
+            String num = null;
             if(StringUtils.isNotEmpty(String.valueOf(count)) &&  count != 0d){
                 //指标十七
                 double rescueDo = currencyCal(count, triggeringRulesMap.get("bloodNum"));
-                LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-                String num = String.valueOf(rescueDo);
-                firMap.put("name","临床用血相关记录符合率");
-                firMap.put("notCopiedStr",num+"%");
-                firMap.put("num",num);
-                retList.add(firMap);
+                  num = String.valueOf(rescueDo);
             }
+            LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
+            firMap.put("name","临床用血相关记录符合率");
+            firMap.put("notCopiedStr",StringUtils.isEmpty(num)? null:(num+"%"));
+            firMap.put("num",num);
+            retList.add(firMap);
         }
         return retList;
     }
@@ -2694,6 +2697,8 @@ public class ConsoleFacade {
         DecimalFormat df = new DecimalFormat("#0.00");
         query.eq("hospital_id", filterVO.getHospitalId())
                 .eq("is_deleted", IsDeleteEnum.N)
+                .ne("qc_type_id", 0)
+                .eq("is_placefile", 1)
                 // .eq("is_placefile", filterVO.getIsPlacefile())
                 .isNotNull("leave_hospital_date")
                 .ge("leave_hospital_date",filterVO.getStartDate())
@@ -2702,35 +2707,36 @@ public class ConsoleFacade {
         Iterator<BehospitalInfo> iterator = list.iterator();
         while (iterator.hasNext()){
             BehospitalInfo beh = iterator.next();
-            Boolean flag = getTrueSecFile(beh.getBehospitalDate(), beh.getLeaveHospitalDate(), TimeContent.getHolidaysTimeList());
+            Boolean flag = getTrueSecFile(beh.getLeaveHospitalDate(), beh.getPlacefileDate(), TimeContent.getHolidaysTimeList());
             //时间截止则删除元素
             if(!flag){
                 iterator.remove();
             }
         }
         double count = list.stream().distinct().map(BehospitalInfo::getBedCode).count();
+        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());
             double firGradeStr = Double.parseDouble(df.format(retNum));
-            LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-            String num = String.valueOf(firGradeStr);
-            firMap.put("name","出院患者病历2日归档率");
-            firMap.put("notCopiedStr",num+"%");
-            firMap.put("num",num);
-            retList.add(firMap);
+             num = String.valueOf(firGradeStr);
         }
+        LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
+        firMap.put("name","出院患者病历2日归档率");
+        firMap.put("notCopiedStr",StringUtils.isEmpty(num)? null:(num+"%"));
+        firMap.put("num",num);
+        retList.add(firMap);
         return retList;
     };
 
     private Boolean getTrueSecFile(Date date1,Date date2, List<String> holidaysTimeList){
         Date date = date1;
+        Date dateSec = date2;
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         SimpleDateFormat simpleDateFormatRe = new SimpleDateFormat("yyyy-MM-dd");
         Calendar cal = null;
         int count = 0;
         try {
-            String format = simpleDateFormatRe.format(date1);
             date1 = simpleDateFormatRe.parse(simpleDateFormatRe.format(date1));
             date2 = simpleDateFormatRe.parse(simpleDateFormatRe.format(date2));
             cal = Calendar.getInstance();
@@ -2751,7 +2757,7 @@ public class ConsoleFacade {
         ZoneId zone = ZoneId.systemDefault();
         Instant instant = ldt.atZone(zone).toInstant();
         Date endDate = Date.from(instant);
-        if(endDate.after(date2)){
+        if(endDate.after(dateSec)){
             return true;
         }
         return false;
@@ -2795,45 +2801,50 @@ public class ConsoleFacade {
          Double firRecord = 0d;
 
          //指标一
+         String num1 = null;
          if(secMouth != 0d && secMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
-             LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-             String num = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString()) / secMouth));
-             firMap.put("name","住院病案管理人员月均负担出院患者病历数");
-             firMap.put("num",num);
-             retList.add(firMap);
+              num1 = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString()) / secMouth));
          }
+         LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
+         firMap.put("name","住院病案管理人员月均负担出院患者病历数");
+         firMap.put("num",num1);
+         retList.add(firMap);
          //指标三
+         String num2 = null;
          if(thrMouth != 0d && thrMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
-             LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-             String num = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString())/thrMouth));
-             firMap.put("name","病案编码人员月均负担出院患者病历数");
-             firMap.put("num",num);
-             retList.add(firMap);
+              num2 = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString())/thrMouth));
+
          }
+         LinkedHashMap<String, String> secMap = new LinkedHashMap<>();
+         secMap.put("name","病案编码人员月均负担出院患者病历数");
+         secMap.put("num",num2);
+         retList.add(secMap);
 
+         String num3= null;
          if(firMouth != 0d && firMouth != null  && StringUtils.isNotEmpty( baseIndex.get("secWorkNum").toString())){
          //指标二
-             LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-             String num = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("secWorkNum").toString())/firMouth));
-             firMap.put("name","门诊病案管理人员月均负担门诊患者病历数");
-             firMap.put("num",num);
-             retList.add(firMap);
+                num3 = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("secWorkNum").toString())/firMouth));
          }
+         LinkedHashMap<String, String> thrMap = new LinkedHashMap<>();
+         thrMap.put("name","门诊病案管理人员月均负担门诊患者病历数");
+         thrMap.put("num",num3);
+         retList.add(thrMap);
 
          //指标二十七 -甲级病历率
+         String num4= null;
          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));
-             LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
-             String num = String.valueOf(Math.ceil(firGradeStr));
-             firMap.put("name","甲级病历率");
-             firMap.put("notCopiedStr",num+"%");
-             firMap.put("num",num);
-             retList.add(firMap);
+             num4 = String.valueOf(Math.ceil(firGradeStr));
          }
+         LinkedHashMap<String, String> fouMap = new LinkedHashMap<>();
+         fouMap.put("name","甲级病历率");
+         fouMap.put("notCopiedStr",StringUtils.isEmpty(num4)? null:(num4+"%"));
+         fouMap.put("num",num4);
+         retList.add(fouMap);
          return retList;
      };
    private void timeTrans(FilterVO filterVO){