Quellcode durchsuchen

台州邵逸夫合并

wangsy vor 4 Jahren
Ursprung
Commit
ef2e700a70
50 geänderte Dateien mit 43 neuen und 2093 gelöschten Zeilen
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02918.java
  2. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0411.java
  3. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0422.java
  4. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0493.java
  5. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0112.java
  6. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0115.java
  7. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0338.java
  8. 4 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0340.java
  9. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0342.java
  10. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0118.java
  11. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0119.java
  12. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0120.java
  13. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0553.java
  14. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0093.java
  15. 0 54
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0034.java
  16. 0 59
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0039.java
  17. 0 50
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0044.java
  18. 0 30
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH02918.java
  19. 0 34
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0411.java
  20. 0 45
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0422.java
  21. 0 70
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0442.java
  22. 0 41
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0493.java
  23. 0 28
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathcasediscuss/DEAC0112.java
  24. 0 38
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathcasediscuss/DEAC0114.java
  25. 0 29
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathcasediscuss/DEAC0115.java
  26. 0 52
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathrecord/DEAR0338.java
  27. 0 28
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathrecord/DEAR0342.java
  28. 0 39
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0117.java
  29. 0 39
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0118.java
  30. 0 39
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0119.java
  31. 0 39
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0120.java
  32. 0 39
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0553.java
  33. 0 67
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/firstcourserecord/FIRC0093.java
  34. 0 54
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH0068.java
  35. 0 65
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH02902.java
  36. 0 191
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH02980.java
  37. 0 41
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH03003.java
  38. 0 35
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/deathrecord/DEAR0340.java
  39. 0 62
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/firstpagerecord/FIRP02992.java
  40. 0 54
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/operationdiscussion/OPE0359.java
  41. 0 105
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR02880.java
  42. 0 162
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03014.java
  43. 0 162
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03016.java
  44. 0 63
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03020.java
  45. 0 73
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03021.java
  46. 0 200
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03070.java
  47. 6 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03014.java
  48. 6 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03016.java
  49. 7 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03020.java
  50. 7 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03021.java

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02918.java

@@ -23,7 +23,7 @@ public class BEH02918 extends QCCatalogue {
             return;
         }
         Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if (StringUtil.isBlank(beHospitalStructureMap.get("面容"))) {
+        if (beHospitalStructureMap.containsKey("面容") && StringUtil.isBlank(beHospitalStructureMap.get("面容"))) {
             status.set("-1");
         }
     }

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0411.java

@@ -38,6 +38,7 @@ public class BEH0411 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":                            //长兴
+            case "2":
                 return "记录日期";
             case "7":                            //厦门
                 return "记录日期";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0422.java

@@ -53,6 +53,7 @@ public class BEH0422 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":                            //长兴
+            case "2":
                 return "记录日期";
             default:
                 return "记录时间";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0493.java

@@ -44,6 +44,7 @@ public class BEH0493 extends QCCatalogue {
     private String getKeyByHopitalId() {
         switch (Content.hospital_Id){
             case "1":
+            case "2":
                 return "辅助检查结果";
             default:
                 return "辅助检查";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0112.java

@@ -32,6 +32,7 @@ public class DEAC0112 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "讨论主持人";
             default:
                 return "主持人";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0115.java

@@ -32,6 +32,7 @@ public class DEAC0115 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "记录医师";
             default:
                 return "记录医生";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0338.java

@@ -41,6 +41,7 @@ public class DEAR0338 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "记录医师";
             default:
                 return "医师签字";

+ 4 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0340.java

@@ -4,6 +4,7 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -25,7 +26,9 @@ public class DEAR0340 extends QCCatalogue {
             //     status.set("-1");
             //     return;
             // }
-            if (CatalogueUtil.isEmpty(deathRecordStructureMap.get("入院情况"))) {
+            if (CatalogueUtil.isEmpty(deathRecordStructureMap.get("入院情况"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("实验室检查"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("影像学检查"))) {
                 status.set("-1");
             }
         }

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0342.java

@@ -31,6 +31,7 @@ public class DEAR0342 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "诊疗经过";
             default:
                 return "诊疗经过(重点记录病情演变、抢救经过)";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0118.java

@@ -43,6 +43,7 @@ public class DIF0118 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "主持人";
             default:
                 return "主持人姓名及专业技术职务";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0119.java

@@ -43,6 +43,7 @@ public class DIF0119 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "参加讨论者";
             default:
                 return "参加人员的姓名及专业技术职务";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0120.java

@@ -43,6 +43,7 @@ public class DIF0120 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "讨论内容";
             default:
                 return "具体讨论意见";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0553.java

@@ -42,6 +42,7 @@ public class DIF0553 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "记录者";
             default:
                 return "记录医生签名";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0093.java

@@ -71,6 +71,7 @@ public class FIRC0093 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "1":               //长兴
+            case "2":
                 return "记录时间";
             default:
                 return "病历日期";

+ 0 - 54
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0034.java

@@ -1,54 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.Operation;
-import com.lantone.qc.pub.model.label.PastLabel;
-import com.lantone.qc.pub.util.ListUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @Description: 手术名称未标引号
- * @author: rengb
- * @time: 2020/3/10 14:02
- */
-@Component
-public class BEH0034 extends QCCatalogue {
-
-    @Override
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if(inputInfo.getBeHospitalizedDoc() == null){
-            return;
-        }
-        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
-        List<Operation> operations = pastLabel.getOperations();
-        if (ListUtil.isEmpty(operations)) {
-            return;
-        }
-        List<String> wtOperationNames = CatalogueUtil.noInQuotes(
-                operations.stream()
-                        .filter(i ->
-                                i != null && StringUtil.isNotBlank(i.getName()) && i.getNegative() == null
-                                        && !"手术史".equals(i.getName())  && !"手术".equals(i.getName()) && !"手术治疗".equals(i.getName())
-                        )
-                        .map(i -> i.getName())
-                        .distinct()
-                        .collect(Collectors.toList()),
-                pastLabel.getText().replace("“","\"").replace("”","\"")
-        );
-        if (ListUtil.isNotEmpty(wtOperationNames)) {
-            status.set("-1");
-            for (String wtOperationName : wtOperationNames) {
-                info.set(info.get() + wtOperationName + " ");
-            }
-        }
-    }
-
-}

+ 0 - 59
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0039.java

@@ -1,59 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.Allergy;
-import com.lantone.qc.pub.model.label.PastLabel;
-import com.lantone.qc.pub.util.ListUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * @Description: 食物过敏史描述不完整
- * @author: rengb
- * @time: 2020/3/10 14:02
- */
-@Component
-public class BEH0039 extends QCCatalogue {
-
-    @Override
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            return;
-        }
-        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
-        if (pastLabel == null) {
-            return;
-        }
-        String pastText = pastLabel.getText();
-        if (StringUtil.isNotBlank(pastText) && pastText.contains("食物过敏史")) {
-            return;
-        }
-        List<Allergy> allergies = pastLabel.getAllergies();
-        if (ListUtil.isEmpty(allergies)) {
-            return;
-        }
-        for (Allergy allergy : allergies) {
-            if (allergy == null
-                    || StringUtil.isBlank(allergy.getName())
-                    || allergy.getAllergyFood() == null
-                    || StringUtil.isBlank(allergy.getAllergyFood().getName())) {
-                continue;
-            }
-            if ((allergy.getNegative() == null || StringUtil.isBlank(allergy.getNegative().getName()))
-                    && (allergy.getAllergyFood().getPd() == null || StringUtil.isBlank(allergy.getAllergyFood().getPd().getName()))
-                    && (allergy.getAllergyFood().getDegree() == null || StringUtil.isBlank(allergy.getAllergyFood().getDegree().getName()))
-                    && (allergy.getAllergyFood().getAllergyDesc() == null || StringUtil.isBlank(allergy.getAllergyFood().getAllergyDesc().getName()))) {
-                info.set(info.get() + allergy.getAllergyFood().getName() + " ");
-            }
-        }
-        if (StringUtil.isNotBlank(info.get())) {
-            status.set("-1");
-        }
-    }
-
-}

+ 0 - 50
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0044.java

@@ -1,50 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.EpidemicArea;
-import com.lantone.qc.pub.model.label.PersonalLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @Description: 疫区接触史未描述
- * @author: rengb
- * @time: 2020/3/10 14:02
- */
-@Component
-public class BEH0044 extends QCCatalogue {
-
-    @Override
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if(inputInfo.getBeHospitalizedDoc() == null){
-            status.set("0");
-            return;
-        }
-        //台州结构化
-        Map<String, String> structureMap_beh = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if(StringUtils.isNotEmpty(structureMap_beh.get("疫区居留史"))){
-            status.set("0");
-            return;
-        }
-        PersonalLabel personalLabel = inputInfo.getBeHospitalizedDoc().getPersonalLabel();
-        if (personalLabel == null || StringUtil.isBlank(personalLabel.getText())) {
-            status.set("0");
-            return;
-        }
-        String personalText = personalLabel.getText();
-        if (personalText.contains("详见原病历")) {
-            status.set("0");
-            return;
-        }
-        EpidemicArea epidemicArea = personalLabel.getEpidemicArea();
-        if (epidemicArea != null && StringUtil.isNotBlank(epidemicArea.getName())) {
-            status.set("0");
-        }
-    }
-
-}

+ 0 - 30
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH02918.java

@@ -1,30 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : BEH02918
- * @Description :  体格检查面容未填写
- * @Author : 胡敬
- * @Date: 2020-06-13 15:51
- */
-@Component
-public class BEH02918 extends QCCatalogue {
-    @Override
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            return;
-        }
-        Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if (beHospitalStructureMap.containsKey("面容") && StringUtil.isBlank(beHospitalStructureMap.get("面容"))) {
-            status.set("-1");
-        }
-    }
-}

+ 0 - 34
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0411.java

@@ -1,34 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-
-/**
- * @ClassName : BEH0411
- * @Description :  入院记录记录日期未填写
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class BEH0411 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            return;
-        }
-        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if(structureMap != null){
-            String name = structureMap.get("记录日期");
-            if(CatalogueUtil.isEmpty(name)){
-                status.set("-1");
-            }
-        }
-
-    }
-}

+ 0 - 45
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0422.java

@@ -1,45 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.Map;
-
-
-/**
- * @ClassName : BEH0422
- * @Description :  入院记录记录日期填写错误
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class BEH0422 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        /**
-         * 记录日期比入院日期早就报错
-         */
-        status.set("0");
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        if (beHospitalizedDoc == null) {
-            return;
-        }
-        Map<String, String> docStructureMap = beHospitalizedDoc.getStructureMap();
-        String admissionDateStr = docStructureMap.get("入院日期");
-        String recordDateStr = docStructureMap.get("记录日期");
-        if (StringUtil.isBlank(admissionDateStr) || StringUtil.isBlank(recordDateStr)) {
-            return;
-        }
-        Date admissionDate = StringUtil.parseDateTime(admissionDateStr);
-        Date recordDate = StringUtil.parseDateTime(recordDateStr);
-        if (admissionDate == null || recordDate == null) {
-            return;
-        }
-        if (admissionDate.after(recordDate)) {
-            status.set("-1");
-        }
-    }
-}

+ 0 - 70
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0442.java

@@ -1,70 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.google.common.collect.Lists;
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.General;
-import com.lantone.qc.pub.model.entity.GeneralDesc;
-import com.lantone.qc.pub.model.label.PresentLabel;
-import com.lantone.qc.pub.util.ListUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-
-/**
- * @ClassName : BEH0442
- * @Description :  现病史缺少发病以来二便描述
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class BEH0442 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            status.set("0");
-            return;
-        }
-        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
-        if (presentLabel == null) {
-            status.set("0");
-            return;
-        }
-        String presentText = presentLabel.getText();
-        if (StringUtil.isNotBlank(presentText)) {
-            List<String> words = Lists.newArrayList("二便", "大小便", "小便", "大便", "尿","便秘","腹泻");
-            for (String word : words) {
-                if (presentText.contains(word)) {
-                    status.set("0");
-                    return;
-                }
-            }
-        }
-
-        List<GeneralDesc> generals = presentLabel.getGenerals();
-        List<General> gens = presentLabel.getGens();
-        if (ListUtil.isEmpty(generals) && ListUtil.isEmpty(gens)) {
-            status.set("0");
-            return;
-        }
-
-        if (ListUtil.isNotEmpty(generals)) {
-            for (GeneralDesc general : generals) {
-                if (general.getName().contains("便") || general.getName().contains("尿")) {
-                    status.set("0");
-                    break;
-                }
-            }
-        }
-        if (ListUtil.isNotEmpty(gens)) {
-            for (General general : gens) {
-                if (general.getName().contains("便") || general.getName().contains("尿")) {
-                    status.set("0");
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 41
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/behospitalized/BEH0493.java

@@ -1,41 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
-import com.lantone.qc.pub.model.label.PacsLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-
-/**
- * @ClassName : BEH0493
- * @Description : 辅助检查未填写
- * @Author : 胡敬
- * @Date: 2020-03-26 19:54
- */
-@Component
-public class BEH0493 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            status.set("0");
-            return;
-        }
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        Map<String, String> structureMap = beHospitalizedDoc.getStructureMap();
-        String pacs = structureMap.get("辅助检查结果");
-        String laboratory = structureMap.get("实验室检查");
-        String image = structureMap.get("影像学检查");
-        if (StringUtil.isNotBlank(pacs) || StringUtil.isNotBlank(laboratory) || StringUtil.isNotBlank(image)) {
-            status.set("0");
-            return;
-        }
-        PacsLabel pacsLabel = inputInfo.getBeHospitalizedDoc().getPacsLabel();
-        if (pacsLabel != null && StringUtil.isNotBlank(pacsLabel.getText())) {
-            status.set("0");
-        }
-    }
-}

+ 0 - 28
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathcasediscuss/DEAC0112.java

@@ -1,28 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.deathcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAC0112
- * @Description : 死亡病例讨论记录无主持人姓名
- * @Author : 胡敬
- * @Date: 2020-03-19 11:26
- */
-@Component
-public class DEAC0112 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathCaseDiscussDoc() != null && inputInfo.getDeathCaseDiscussDoc().getStructureMap() != null) {
-            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(deathCaseDiscussStructureMap.get("讨论主持人"))) {
-                status.set("-1");
-            }
-        }
-    }
-}

+ 0 - 38
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathcasediscuss/DEAC0114.java

@@ -1,38 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.deathcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAC0114
- * @Description : 死亡病例讨论记录无死亡原因
- * @Author : 胡敬
- * @Date: 2020-03-19 10:20
- */
-@Component
-public class DEAC0114 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathCaseDiscussDoc() != null && inputInfo.getDeathCaseDiscussDoc().getStructureMap() != null) {
-            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
-            String deathCause = deathCaseDiscussStructureMap.get("死亡原因");
-            boolean findDeathCause = false;
-            if (StringUtil.isNotBlank(deathCause)) {
-                findDeathCause = true;
-            }
-            String discussionContent = deathCaseDiscussStructureMap.get("讨论内容");
-            if (StringUtil.isNotEmpty(discussionContent) && discussionContent.contains("因")) {
-                findDeathCause = true;
-            }
-            if (!findDeathCause) {
-                status.set("-1");
-            }
-        }
-    }
-}

+ 0 - 29
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathcasediscuss/DEAC0115.java

@@ -1,29 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.deathcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAC0115
- * @Description : 死亡病例讨论记录无签名
- * @Author : 胡敬
- * @Date: 2020-03-19 11:26
- */
-@Component
-public class DEAC0115 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathCaseDiscussDoc() != null && inputInfo.getDeathCaseDiscussDoc().getStructureMap() != null) {
-            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
-            String sign = deathCaseDiscussStructureMap.get("记录医师");
-            if (CatalogueUtil.isEmpty(sign)) {
-                status.set("-1");
-            }
-        }
-    }
-}

+ 0 - 52
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathrecord/DEAR0338.java

@@ -1,52 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.deathrecord;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.dbanaly.util.KernelConstants;
-import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAR0338
- * @Description : 死亡记录无副主任医师审核签名
- * @Author : 胡敬
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DEAR0338 extends QCCatalogue {
-    @Autowired
-    private SpecialStorageUtil specialStorageUtil;
-
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getDeathRecordDoc() == null) {
-            status.set("0");
-            return;
-        }
-        Map<String, String> deathRecordStructure = inputInfo.getDeathRecordDoc().getStructureMap();
-        String recordDoctor = deathRecordStructure.get("记录医师");
-        if (StringUtil.isNotBlank(recordDoctor)) {
-            if (findDirectorDoctor(recordDoctor)) {
-                status.set("0");
-            }
-        }
-    }
-
-    private boolean findDirectorDoctor(String recordDoctor) {
-        Map<String, Map<String, Object>> hospitalDoctorMap = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
-        if (hospitalDoctorMap == null) {
-            return false;
-        }
-        if (hospitalDoctorMap.containsKey(recordDoctor)) {
-            Object professor = hospitalDoctorMap.get(recordDoctor).get("professor");
-            if (professor != null) {
-                return professor.toString().contains("主任");
-            }
-        }
-        return false;
-    }
-}

+ 0 - 28
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/deathrecord/DEAR0342.java

@@ -1,28 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.deathrecord;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAR0342
- * @Description : 死亡记录无诊疗经过
- * @Author : 胡敬
- * @Date: 2020-03-18 17:14
- */
-@Component
-public class DEAR0342 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
-            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(deathRecordStructureMap.get("诊疗经过"))) {
-                status.set("-1");
-            }
-        }
-    }
-}

+ 0 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0117.java

@@ -1,39 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.difficultcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : DIF0117
- * @Description : 	疑难病例讨论记录未填写讨论时间
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DIF0117 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
-        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
-            return;
-        }
-        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
-            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
-                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("讨论时间");
-                if(CatalogueUtil.isEmpty(diisDate)){
-                    status.set("-1");
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0118.java

@@ -1,39 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.difficultcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : DIF0118
- * @Description : 	疑难病例讨论记录未填写主持人
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DIF0118 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
-        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
-            return;
-        }
-        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
-            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
-                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("主持人");
-                if(CatalogueUtil.isEmpty(diisDate)){
-                    status.set("-1");
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0119.java

@@ -1,39 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.difficultcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : DIF0119
- * @Description : 	 疑难病例讨论记录未填写参加讨论者(包括职称及姓名)
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DIF0119 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
-        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
-            return;
-        }
-        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
-            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
-                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("参加讨论者");
-                if(CatalogueUtil.isEmpty(diisDate)){
-                    status.set("-1");
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0120.java

@@ -1,39 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.difficultcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : DIF0120
- * @Description : 	 疑难病例讨论记录未填写讨论内容
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DIF0120 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
-        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
-            return;
-        }
-        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
-            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
-                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("讨论内容");
-                if(CatalogueUtil.isEmpty(diisDate)){
-                    status.set("-1");
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/difficultcasediscuss/DIF0553.java

@@ -1,39 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.difficultcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : DIF0553
- * @Description : 	疑难病例讨论无记录者签名
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DIF0553 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
-        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
-            return;
-        }
-        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
-            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
-                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("记录者");
-                if(CatalogueUtil.isEmpty(diisDate)){
-                    status.set("-1");
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 67
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shaoyf/firstcourserecord/FIRC0093.java

@@ -1,67 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.shaoyf.firstcourserecord;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
-import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
-import com.lantone.qc.pub.util.StringUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.text.ParseException;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * @ClassName : FIRC0093
- * @Description :  首次病程未在患者入院8小时内完成
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class FIRC0093 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
-        status.set("0");
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
-        if (firstCourseRecordDoc != null && beHospitalizedDoc != null) {
-            Map<String, String> courseRecordDocStructureMap = firstCourseRecordDoc.getStructureMap();
-            Map<String, String> beHospitalizedDocStructureMap = beHospitalizedDoc.getStructureMap();
-            if (courseRecordDocStructureMap != null && beHospitalizedDocStructureMap != null) {
-                String couDate = courseRecordDocStructureMap.get("记录时间");
-                String beDate = beHospitalizedDocStructureMap.get("入院日期");
-                if (StringUtils.isNotEmpty(couDate) && StringUtils.isNotEmpty(beDate)) {
-                    Date date_in = StringUtil.parseDateTime(beDate);
-                    Date date_out = StringUtil.parseDateTime(couDate);
-                    if (date_in == null || date_out == null) {
-                        return;
-                    }
-                    boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
-                    if (firc) {
-                        status.set("-1");
-                    }
-                }
-            }
-        } else {
-            if (beHospitalizedDoc != null) {
-                Map<String, String> beHospitalizedDocStructureMap = beHospitalizedDoc.getStructureMap();
-                if (beHospitalizedDocStructureMap != null) {
-                    String beDate = beHospitalizedDocStructureMap.get("入院日期");
-                    if (StringUtils.isNotEmpty(beDate)) {
-                        Date date_in = StringUtil.parseDateTime(beDate);
-                        Date date_out = new Date();
-                        if (date_in == null) {
-                            return;
-                        }
-                        boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
-                        if (firc) {
-                            status.set("-1");
-                        }
-                    }
-                }
-            }
-        }
-    }
-}

+ 0 - 54
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH0068.java

@@ -1,54 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.label.MenstrualLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : BEH0068
- * @Description : 月经史未描述白带情况
- * @Author : 胡敬
- * @Date: 2020-03-11 14:49
- */
-@Component
-public class BEH0068 extends QCCatalogue {
-    @Override
-    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            status.set("0");
-            return;
-        }
-        if (inputInfo.getBeHospitalizedDoc().getStructureMap().get("性别") == null
-                || inputInfo.getBeHospitalizedDoc().getStructureMap().get("性别").contains("男")) {
-            status.set("0"); //如果性别是男,就不报错
-        } else if (inputInfo.getBeHospitalizedDoc().getMenstrualLabel() == null
-                || inputInfo.getBeHospitalizedDoc().getMenstrualLabel().getText().contains("null")) {
-            status.set("0");
-        } else {
-            Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            if (StringUtil.isNotBlank(structureMap.get("白带"))) {
-                status.set("0");
-                return;
-            }
-            if (inputInfo.getBeHospitalizedDoc().getMenstrualLabel() != null) {
-                MenstrualLabel menstrualLabel = inputInfo.getBeHospitalizedDoc().getMenstrualLabel();
-                String text = menstrualLabel.getText();
-                if (StringUtil.isNotBlank(text) && (text.contains("未行经") || text.contains("未来潮") || text.contains("绝经"))) {
-                    status.set("0");
-                    return;
-                }
-                if (menstrualLabel.getLeukorrheas() == null) {
-                    return;
-                }
-                if (menstrualLabel.getLeukorrheas().size() > 0) {
-                    status.set("0");
-                }
-            }
-        }
-    }
-}

+ 0 - 65
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH02902.java

@@ -1,65 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.PD;
-import com.lantone.qc.pub.model.entity.Pacs;
-import com.lantone.qc.pub.model.label.PacsLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * @ClassName : BEH02902
- * @Description : 辅助检查未注明地点
- * @Author : 胡敬
- * @Date: 2020-05-28 09:56
- */
-@Component
-public class BEH02902 extends QCCatalogue {
-    @Override
-    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            status.set("0");
-            return;
-        }
-
-        PacsLabel pacsLabel = inputInfo.getBeHospitalizedDoc().getPacsLabel();
-        if (pacsLabel == null || StringUtil.isBlank(pacsLabel.getText())) {
-            status.set("0");
-            return;
-        }
-        boolean findPlace = false;
-        String pacsText = pacsLabel.getText();
-        List<Pacs> pacses = pacsLabel.getPacses();
-        for (Pacs pacs : pacses) {
-            /* 时间为入院检查的时间,模型输出处理后结构为 name为空,pd不为空 */
-            if (pacs.getName() == null && pacs.getPd() != null) {
-                /* 模型先找到时间实体,找到后再从这个时间实体开始,往前往后找 */
-                PD pd = pacs.getPd();
-                String name = pd.getName();
-                int timeIndex = pacsText.indexOf(name);
-                String beforeTimeText = pacsText.substring(Math.max(timeIndex - 5, 0), timeIndex);
-                String afterTimeText = pacsText.substring(timeIndex + name.length(), timeIndex + name.length() + 10);
-                if (beforeTimeText.contains("院") || afterTimeText.contains("院")) {
-                    findPlace = true;
-                    break;
-                }
-            }
-        }
-
-        /* 如果模型没找到时间实体,则直接取辅助检查前20个字,判断有没有院字 */
-        if (!findPlace) {
-            String prefixText = pacsText.substring(0, Math.min(20, pacsText.length()));
-            if (prefixText.contains("院")) {
-                findPlace = true;
-            }
-        }
-
-        if (findPlace) {
-            status.set("0");
-        }
-    }
-}

+ 0 - 191
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH02980.java

@@ -1,191 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.behospitalized;
-
-import com.alibaba.fastjson.JSONArray;
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.client.ChiefPresentSimilarityServiceClient;
-import com.lantone.qc.kernel.structure.ai.ModelAI;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.Diag;
-import com.lantone.qc.pub.model.entity.GeneralDesc;
-import com.lantone.qc.pub.model.entity.Negative;
-import com.lantone.qc.pub.model.label.DiagLabel;
-import com.lantone.qc.pub.model.label.PastLabel;
-import com.lantone.qc.pub.model.label.PresentLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-
-/**
- * @ClassName : BEH02980
- * @Description : 病历前后描述不一致
- * @Author : Mark
- * @Date: 2020-06-23 11:02
- */
-@Component
-public class BEH02980 extends QCCatalogue {
-    @Autowired
-    ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
-
-    private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
-    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
-
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
-        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
-        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
-
-        List<String> pos_diags = new ArrayList<>();
-        List<String> neg_diags = new ArrayList<>();
-        //现病史需要取一般情况之后疾病
-        if (presentLabel != null) {
-            List<GeneralDesc> generals = presentLabel.getGenerals();
-            if (generals.size() > 0) {
-                String presentText = presentLabel.getText();
-                List<Diag> presentDiags = presentLabel.getDiags();
-                /* 取现病史中一般情况之后的疾病名称 */
-                if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
-                    String lastGeneral = generals.get(generals.size() - 1).getName();
-                    int lastGeneralIndex = presentText.indexOf(lastGeneral);
-                    for (Diag presentDiag : presentDiags) {
-                        if (presentDiag.getNegative() != null || presentDiag.getHospitalDiagName().contains("否认")) {
-                            continue;
-                        }
-                        /* 现病史中一般情况之后的疾病名称 */
-                        if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
-                            if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
-                                String dgname = presentDiag.getHospitalDiagName();
-                                if (presentDiag.getNegative()==null) {
-                                    if (!pos_diags.contains(dgname)) {
-                                        pos_diags.add(dgname);
-                                    }
-                                }
-                                else {
-                                    if (!neg_diags.contains(dgname)) {
-                                        neg_diags.add(dgname);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-
-        if (pastLabel != null && StringUtils.isNotEmpty(pastLabel.getText())) {
-            extract_diags(pastLabel.getDiags(), pos_diags, neg_diags);
-        } else {
-            //例如邵逸夫 台州这种结构化数据,判断高血压 和 糖尿病是否有冲突
-            List<Diag> pastDiags = new ArrayList<>();
-            Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            String a1 = structureMap.get("高血压");
-            Diag diag = new Diag();
-            diag.setName("高血压");
-            diag.setHospitalDiagName("高血压");
-            if (StringUtils.isNotEmpty(a1) && "否认".equals(a1)) {
-                Negative negative = new Negative();
-                negative.setName("否认");
-                diag.setNegative(negative);
-                pastDiags.add(diag);
-            } else if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
-                pastDiags.add(diag);
-            }
-
-            a1 = structureMap.get("糖尿病");
-            diag = new Diag();
-            diag.setName("糖尿病");
-            diag.setHospitalDiagName("糖尿病");
-            if  (StringUtils.isNotEmpty(a1) && "否认".equals(a1)) {
-                Negative negative = new Negative();
-                negative.setName("否认");
-                diag.setNegative(negative);
-                pastDiags.add(diag);
-            } else if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
-                pastDiags.add(diag);
-            }
-
-            extract_diags(pastDiags, pos_diags, neg_diags);
-        }
-        if (initialDiagLabel != null) {
-            extract_diags(initialDiagLabel.getDiags(), pos_diags, neg_diags);
-        }
-
-        String infoStr = "";
-        int matchSum = 0;
-        ModelAI modelAI = new ModelAI();
-
-        for (String negdiag : neg_diags) {
-            JSONArray jsonArray = modelAI.loadChiefPresentSimilarAI(negdiag, pos_diags, false
-                    , "diagnose", chiefPresentSimilarityServiceClient);
-            if (jsonArray.size() == 2) {
-                /* 相似度最高症状 */
-                String dgname = jsonArray.getString(0);
-                /* 相似度分数 */
-                double likeRate = jsonArray.getDoubleValue(1);
-                if (likeRate > 0.99) {
-                    matchSum++;
-                    if (StringUtils.isEmpty(infoStr)) {
-                        infoStr = negdiag;
-                    } else {
-                        infoStr = infoStr + "," + negdiag;
-                    }
-                    break;
-                }
-            }
-        }
-        if (matchSum > 0) {
-            status.set("-1");
-            info.set(infoStr);
-        }
-
-    }
-
-
-    private List<String> extract_diags(List<Diag> diags, List<String> pos_diags, List<String> neg_diags ) {
-        List<String> dgs = new ArrayList<>();
-        for (Diag dg:diags) {
-            String dgname = dg.getHospitalDiagName();
-            if (dg.getNegative()==null) {
-                if (!pos_diags.contains(dgname)) {
-                    pos_diags.add(dgname);
-                }
-            }
-            else {
-                if (!neg_diags.contains(dgname)) {
-                    neg_diags.add(dgname);
-                    dgs.add(dgname);
-                }
-            }
-        }
-
-        return dgs;
-    }
-
-    private boolean isContains(String diagName) {
-        for (String c : containList) {
-            if (diagName.contains(c)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean isFilter(String diagName) {
-        for (String c : filterList) {
-            if (diagName.contains(c)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}

+ 0 - 41
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/behospitalized/BEH03003.java

@@ -1,41 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.behospitalized;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * @author wangfeng
- * @Description:
- * @date 2020-06-29 15:19
- */
-@Component
-public class BEH03003 extends QCCatalogue {
-    @Override
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            return;
-        }
-        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if (structureMap != null) {
-            String dateStr = structureMap.get("记录日期");
-            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            try {
-                String replace = dateStr.replace('/', '-');
-                Date d = formatter.parse(replace);
-                status.set("0");
-            } catch (Exception e) {
-                status.set("-1");
-                return;
-            }
-        }
-
-    }
-}

+ 0 - 35
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/deathrecord/DEAR0340.java

@@ -1,35 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.deathrecord;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAR0340
- * @Description : 死亡记录无入院情况
- * @Author : 胡敬
- * @Date: 2020-03-18 17:14
- */
-@Component
-public class DEAR0340 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
-            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
-            // 与任燕青确认,统一只需要判断入院情况,
-            // if(StringUtils.isBlank(deathRecordStructureMap.get("主诉"))){
-            //     status.set("-1");
-            //     return;
-            // }
-            if (StringUtil.isEmpty(deathRecordStructureMap.get("入院情况"))
-                    && StringUtil.isEmpty(deathRecordStructureMap.get("实验室检查"))
-                    && StringUtil.isEmpty(deathRecordStructureMap.get("影像学检查"))) {
-                status.set("-1");
-            }
-        }
-    }
-}

+ 0 - 62
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/firstpagerecord/FIRP02992.java

@@ -1,62 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.firstpagerecord;
-
-import com.google.common.collect.Lists;
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.RegularUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : FIRP02992
- * @Description : 药物过敏与既往史不一致(结构化数据)
- * @Author : rengb
- * @Date: 2020-03-18 14:07
- */
-@Component
-public class FIRP02992 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getBeHospitalizedDoc() != null) {
-            Map<String, String> fpStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (StringUtil.isBlank(fpStructureMap.get(Content.drugAllergy))) {
-                return;
-            }
-            String fpAllergyDrug = fpStructureMap.get(Content.allergyDrug);
-            fpAllergyDrug = StringUtil.isBlank(fpAllergyDrug) ? "" : fpAllergyDrug;
-            fpAllergyDrug = RegularUtil.ClearBracket(fpAllergyDrug); // 括号内容不匹配
-
-            Map<String, String> beStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            String beDrugAllergy = beStructureMap.get("过敏史");
-            beDrugAllergy = StringUtil.isBlank(beDrugAllergy) ? "" : beDrugAllergy;
-            beDrugAllergy = RegularUtil.ClearBracket(beDrugAllergy); // 括号内容不匹配
-
-            if (StringUtil.isBlank(fpAllergyDrug) || "-".equals(fpAllergyDrug) || StringUtil.isBlank(beDrugAllergy)) {
-                return;
-            }
-            // “未发现” == “否认”`
-            if (("未发现".equals(fpAllergyDrug) && "否认".equals(beDrugAllergy))
-                    || ("否认".equals(fpAllergyDrug) && "未发现".equals(beDrugAllergy))) {
-                return;
-            }
-            if (beDrugAllergy.contains(fpAllergyDrug)) {
-                return;
-            }
-            String regx = ";|;|,|,|、| ";
-            List<String> fpList = Lists.newArrayList(fpAllergyDrug.split(regx));
-            // 全部包含
-            for (String s : fpList) {
-                if (!beDrugAllergy.contains(s)) {
-                    status.set("-1");
-                    return;
-                }
-            }
-        }
-    }
-
-}

+ 0 - 54
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/operationdiscussion/OPE0359.java

@@ -1,54 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.operationdiscussion;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.operation.OperationDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.text.ParseException;
-import java.util.List;
-
-/**
- * @Description: 手术记录中手术经过未填写
- * @author: rengb
- * @time: 2020/3/23 15:09
- */
-@Component
-public class OPE0359 extends QCCatalogue {
-
-    @Override
-    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
-        status.set("0");
-        //医嘱
-        //        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
-        //        if (ListUtil.isEmpty(doctorAdviceDocs)){
-        //            return;
-        //        }
-        //        boolean isOperativePatient = CatalogueUtil.isOperativePatients(doctorAdviceDocs);
-//        boolean isOperativePatient = true;//是手术患者(暂时默认是)
-//        if (isOperativePatient) {
-            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if(operationDocs == null || operationDocs.size() == 0){
-            status.set("0");
-            return;
-        }
-            if (ListUtil.isNotEmpty(operationDocs)) {
-                long count = operationDocs.stream().filter(operationDoc -> {
-                    boolean flag = false;
-                    if (operationDoc.getOperationRecordDoc() != null
-                            && StringUtil.isBlank(operationDoc.getOperationRecordDoc().getStructureMap().get("手术经过"))) {
-                        flag = true;
-                    }
-                    return flag;
-                }).count();
-                if (count > 0) {
-                    status.set("-1");
-                }
-            }
-        }
-//    }
-
-}

+ 0 - 105
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR02880.java

@@ -1,105 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.threelevelward;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
-import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
-import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
-import com.lantone.qc.pub.model.entity.Diag;
-import com.lantone.qc.pub.model.label.DiagLabel;
-import com.lantone.qc.pub.model.label.ThreeLevelWardLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : THR0702
- * @Description : 首次主任医师查房中鉴别诊断跟首程一致
- * @Author : 胡敬
- * @Date: 2020-04-20 16:38
- */
-@Component
-public class THR02880 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getFirstCourseRecordDoc() == null) {
-            return;
-        }
-        List<DirectorDoctorWardDoc> directorDocs = inputInfo.getThreeLevelWardDocs().get(0).getDirectorDoctorWardDocs();
-        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
-        Map<String, String> structureMap = firstCourseRecordDoc.getStructureMap();
-        String diffDiagStruct = structureMap.get("鉴别诊断");
-        if (StringUtil.isNotBlank(diffDiagStruct) && (diffDiagStruct.contains("诊断明确") || diffDiagStruct.contains("无需鉴别"))) {
-            status.set("0");
-            return;
-        }
-        String firstCourseDiffDiag = getDiffDiag(firstCourseRecordDoc);
-        if (StringUtil.isBlank(firstCourseDiffDiag)) {
-            status.set("0");
-            return;
-        }
-        if (directorDocs.size() == 0) {
-            return;
-        }
-        DirectorDoctorWardDoc firstDirectorDoc = directorDocs.get(0);
-        Map<String, String> firstAttendStructureMap = firstDirectorDoc.getStructureMap();
-        if (inputInfo.getBeHospitalizedDoc() != null) {
-            String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
-            String recordDateStr = firstAttendStructureMap.get("查房日期");
-            if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
-                return;
-            }
-            //如果首次查房超过72小时则不判断该条规则
-            if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
-                return;
-            }
-        }
-        ThreeLevelWardLabel firstAttendLabel = firstDirectorDoc.getThreeLevelWardLabel();
-        if (firstAttendLabel == null) {
-            return;
-        }
-        if (firstAttendLabel.getDiffDiag().size() != 0) {
-            for (Diag diffDiag : firstAttendLabel.getDiffDiag()) {
-                String diffDiagName = diffDiag.getHospitalDiagName();
-                if (StringUtil.isBlank(diffDiagName)) {
-                    continue;
-                }
-                if (firstCourseDiffDiag.equals(diffDiagName)) {
-                    status.set("-1");
-                    return;
-                }
-            }
-
-        }
-        if (StringUtil.isNotBlank(firstAttendLabel.getDiffDiagText())) {
-            if (firstAttendLabel.getDiffDiagText().equals(firstCourseDiffDiag)) {
-                status.set("-1");
-            }
-        }
-
-        if (firstAttendLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(firstAttendLabel.getDiffDiagText())) {
-            status.set("0");
-        }
-    }
-
-    /**
-     * 获取首程鉴别诊断
-     *
-     * @param firstCourseRecordDoc
-     * @return
-     */
-    private String getDiffDiag(FirstCourseRecordDoc firstCourseRecordDoc) {
-        String diffDiag = "";
-        DiagLabel differentialDiagLabel = firstCourseRecordDoc.getDifferentialDiagLabel();
-        if (StringUtil.isNotBlank(firstCourseRecordDoc.getStructureMap().get("鉴别诊断"))) {
-            diffDiag = firstCourseRecordDoc.getStructureMap().get("鉴别诊断");
-        } else if (differentialDiagLabel != null && StringUtil.isNotBlank(differentialDiagLabel.getText())) {
-            diffDiag = differentialDiagLabel.getText();
-        }
-        return diffDiag;
-    }
-}

+ 0 - 162
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03014.java

@@ -1,162 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.threelevelward;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
-import com.lantone.qc.pub.util.DateUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : THR03014
- * @Description : 每周无1次主任医师查房记录(Attending少于每周一次查房记录)
- * @Author : 胡敬
- * @Date: 2020-03-19 15:52
- */
-@Component
-public class THR03014 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getLeaveHospitalDoc() != null) {
-            Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
-            String admisTime = leaveHospitalStructureMap.get(Content.admisTime);
-            //入院登记表取出院时间,为空就取当前时间
-            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
-            if (StringUtil.isBlank(dischargeTime)) {
-                dischargeTime = DateUtil.nowString();
-            }
-            //如果住院天数小于7天则不判断该条规则
-            if (!CatalogueUtil.isEmpty(admisTime) && !CatalogueUtil.isEmpty(dischargeTime)) {
-                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (7 * 24 * 60))) {
-                    return;
-                }
-            }
-        }
-
-        if (inputInfo.getBeHospitalizedDoc() != null && inputInfo.getThreeLevelWardDocs().size() > 0) {
-            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            String admisTime = beHospitalStructureMap.get("入院日期");
-            if (CatalogueUtil.isEmpty(admisTime)) {
-                return;
-            }
-            //开始时间(入院时间)
-            Date beginDate = StringUtil.parseDateTime(admisTime);
-            if (beginDate == null) {
-                return;
-            }
-
-            ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
-            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
-            if (allDoctorWradDocs.size() == 0) {
-                status.set("0");
-                return;
-            }
-            Date lastRecordDate = getLastRecordDate(allDoctorWradDocs);
-            if (lastRecordDate == null) {
-                return;
-            }
-            int hoursPerWeek = 7 * 24 * 60;
-            String roundRecordThisWeek = "";
-            List<String> roundRecordEveryWeek = new ArrayList<>();
-            beginDate = DateUtil.dateZeroClear(beginDate);//从入院记录当天0点开始算
-            int i = 1;
-            String lastWardDateRange = "";
-            List<String> lastWardDateRangeList = new ArrayList<>();
-            //每7天的病历记录
-            while (i >= 1) {
-                roundRecordThisWeek = extractWardRecord(inputInfo, allDoctorWradDocs, beginDate, hoursPerWeek, lastRecordDate);
-                if (CatalogueUtil.isEmpty(roundRecordThisWeek)) {
-                    break;
-                }
-                lastWardDateRange = DateUtil.formatDate(beginDate) + "    ->    " + DateUtil.formatDate(DateUtil.addDate(beginDate, 6));
-                lastWardDateRangeList.add(lastWardDateRange);
-                roundRecordEveryWeek.add(roundRecordThisWeek);
-                beginDate = DateUtil.addDate(beginDate, 7);
-                i++;
-            }
-            if (roundRecordEveryWeek.size() == 0) {
-                status.set("0");
-                return;
-            }
-            List<String> resultInfos = new ArrayList<>();
-            for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
-                int attendNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.director);
-                if (attendNum == 0) {
-                    //每7天无1次主治医师查房记录
-                    status.set("-1");
-                    resultInfos.add(lastWardDateRangeList.get(j));
-                }
-            }
-            if (resultInfos.size() > 0) {
-                info.set(StringUtils.join(resultInfos.toArray(), ";"));
-            }
-        }
-    }
-
-    private Date getLastRecordDate(List<ThreeLevelWardDoc> allDoctorWradDocs) {
-        ThreeLevelWardDoc threeLevelWardDoc = allDoctorWradDocs.get(allDoctorWradDocs.size() - 1);
-        Map<String, String> lastWardDocStructureMap = threeLevelWardDoc.getStructureMap();
-        String wardDateStr = lastWardDocStructureMap.get("查房日期");
-        if (StringUtil.isNotBlank(wardDateStr)) {
-            return StringUtil.parseDateTime(wardDateStr);
-        }
-        return null;
-    }
-
-    /**
-     * 抽取duration分钟内所有查房标题
-     * 抽取一周内所有查房标题,若一周内记录少于6天,则返回""
-     *
-     * @param threeLevelWardDocs
-     * @param admisDate
-     * @param duration
-     * @return
-     */
-    private static String extractWardRecord(InputInfo inputInfo, List<ThreeLevelWardDoc> threeLevelWardDocs, Date admisDate, int duration, Date maxRecordDate) {
-        String recordTime = "", recordTitle = "", title = "";
-        List<Date> dateList = new ArrayList();
-        for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-            Map<String, String> threeLevelWardStructureMap = threeLevelWardDoc.getStructureMap();
-            recordTime = threeLevelWardStructureMap.get("查房日期");
-            title = threeLevelWardStructureMap.get("查房标题");
-            if (StringUtil.isBlank(recordTime) || StringUtil.isBlank(title)) {
-                continue;
-            }
-            Date recordDate = StringUtil.parseDateTime(recordTime);
-            if (recordDate == null) {
-                continue;
-            }
-            /* 替换查房标题中主刀/一助的职称 */
-            /*List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-            if (title.contains("主刀")) {
-                String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "主刀医师");
-                title = title.replace("主刀", doctorTitle);
-            } else if (title.contains("一助")) {
-                String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "一助");
-                title = title.replace("一助", doctorTitle);
-            }*/
-            if (admisDate.before(recordDate) && !CatalogueUtil.compareTime(admisDate, recordDate, Long.valueOf(duration))) {
-                recordTitle += title + ",";
-                dateList.add(recordDate);
-            }
-        }
-        if (dateList.size() > 0) {
-            //dateList.sort(Date::compareTo);
-            if (!maxRecordDate.equals(dateList.get(dateList.size() - 1)) || CatalogueUtil.compareTime(admisDate, dateList.get(dateList.size() - 1), Long.valueOf(6 * 24 * 60))) {
-                return recordTitle;
-            }
-        }
-        return "";
-    }
-
-}

+ 0 - 162
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03016.java

@@ -1,162 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.threelevelward;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
-import com.lantone.qc.pub.util.DateUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : THR03016
- * @Description : 每3天无1次主治医师查房记录(Fellow查房记录每3天1次)
- * @Author : 胡敬
- * @Date: 2020-03-19 15:52
- */
-@Component
-public class THR03016 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getLeaveHospitalDoc() != null) {
-            Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-            String admisTime = leaveHospitalStructureMap.get(Content.admisTime);
-            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
-            //入院登记表取出院时间,为空就取当前时间
-            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
-            if (StringUtil.isBlank(dischargeTime)) {
-                dischargeTime = DateUtil.nowString();
-            }
-            //如果住院天数小于3天则不判断该条规则
-            if (!CatalogueUtil.isEmpty(admisTime) && !CatalogueUtil.isEmpty(dischargeTime)) {
-                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (3 * 24 * 60))) {
-                    return;
-                }
-            }
-        }
-
-        if (inputInfo.getBeHospitalizedDoc() != null && inputInfo.getThreeLevelWardDocs().size() > 0) {
-            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            String admisTime = beHospitalStructureMap.get("入院日期");
-            if (CatalogueUtil.isEmpty(admisTime)) {
-                return;
-            }
-            //开始时间(入院时间)
-            Date beginDate = StringUtil.parseDateTime(admisTime);
-            if (beginDate == null) {
-                return;
-            }
-
-            ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
-            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
-            if (allDoctorWradDocs.size() == 0) {
-                status.set("0");
-                return;
-            }
-            Date lastRecordDate = getLastRecordDate(allDoctorWradDocs);
-            if (lastRecordDate == null) {
-                return;
-            }
-            int hoursPerWeek = 3 * 24 * 60;
-            String roundRecordThisWeek = "";
-            List<String> roundRecordEveryWeek = new ArrayList<>();
-            beginDate = DateUtil.dateZeroClear(DateUtil.addDate(beginDate, 1));//从入院时间第二天0点开始算
-            int i = 1;
-            String lastWardDateRange = "";
-            List<String> lastWardDateRangeList = new ArrayList<>();
-            //每3天的病历记录
-            while (i >= 1) {
-                roundRecordThisWeek = extractWardRecord(inputInfo, allDoctorWradDocs, beginDate, hoursPerWeek, lastRecordDate);
-                if (CatalogueUtil.isEmpty(roundRecordThisWeek)) {
-                    break;
-                }
-                lastWardDateRange = DateUtil.formatDate(beginDate) + "    ->    " + DateUtil.formatDate(DateUtil.addDate(beginDate, 2));
-                lastWardDateRangeList.add(lastWardDateRange);
-                roundRecordEveryWeek.add(roundRecordThisWeek);
-                beginDate = DateUtil.addDate(beginDate, 3);
-                i++;
-            }
-            if (roundRecordEveryWeek.size() == 0) {
-                status.set("0");
-                return;
-            }
-            List<String> resultInfos = new ArrayList<>();
-            for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
-                int attendNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.attend);
-                if (attendNum == 0) {
-                    //每3天无1次主治医师查房记录
-                    status.set("-1");
-                    resultInfos.add(lastWardDateRangeList.get(j));
-                }
-            }
-            if (resultInfos.size() > 0) {
-                info.set(StringUtils.join(resultInfos.toArray(), ";"));
-            }
-        }
-    }
-
-    private Date getLastRecordDate(List<ThreeLevelWardDoc> allDoctorWradDocs) {
-        ThreeLevelWardDoc threeLevelWardDoc = allDoctorWradDocs.get(allDoctorWradDocs.size() - 1);
-        Map<String, String> lastWardDocStructureMap = threeLevelWardDoc.getStructureMap();
-        String wardDateStr = lastWardDocStructureMap.get("查房日期");
-        if (StringUtil.isNotBlank(wardDateStr)) {
-            return StringUtil.parseDateTime(wardDateStr);
-        }
-        return null;
-    }
-
-    /**
-     * 抽取duration分钟内所有查房标题
-     * 抽取一周内所有查房标题,若一周内记录少于2天,则返回""
-     *
-     * @param threeLevelWardDocs
-     * @param admisDate
-     * @param duration
-     * @return
-     */
-    private static String extractWardRecord(InputInfo inputInfo, List<ThreeLevelWardDoc> threeLevelWardDocs, Date admisDate, int duration, Date maxRecordDate) {
-        String recordTime = "", recordTitle = "", title = "";
-        List<Date> dateList = new ArrayList();
-        for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-            Map<String, String> threeLevelWardStructureMap = threeLevelWardDoc.getStructureMap();
-            recordTime = threeLevelWardStructureMap.get("查房日期");
-            title = threeLevelWardStructureMap.get("查房标题");
-            if (StringUtil.isBlank(recordTime) || StringUtil.isBlank(title)) {
-                continue;
-            }
-            Date recordDate = StringUtil.parseDateTime(recordTime);
-            if (recordDate == null) {
-                continue;
-            }
-            /* 替换查房标题中主刀/一助的职称 */
-            /*List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-            if (title.contains("主刀")) {
-                String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "主刀医师");
-                title = title.replace("主刀", doctorTitle);
-            } else if (title.contains("一助")) {
-                String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "一助");
-                title = title.replace("一助", doctorTitle);
-            }*/
-            if (admisDate.before(recordDate) && !CatalogueUtil.compareTime(admisDate, recordDate, Long.valueOf(duration))) {
-                recordTitle += title + ",";
-                dateList.add(recordDate);
-            }
-        }
-        if (dateList.size() > 0) {
-            //dateList.sort(Date::compareTo);
-            if (!maxRecordDate.equals(dateList.get(dateList.size() - 1)) || CatalogueUtil.compareTime(admisDate, dateList.get(dateList.size() - 1), Long.valueOf(2 * 24 * 60))) {
-                return recordTitle;
-            }
-        }
-        return "";
-    }
-
-}

+ 0 - 63
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03020.java

@@ -1,63 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.threelevelward;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
-import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
-import com.lantone.qc.pub.util.DateUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : THR03020
- * @Description : 入院72小时内无Attending查房记录(要有Attending标示) 首次查房时间最早,如果不在72小时之内,那么所有查房肯定都不在
- * @Author : 胡敬
- * @Date: 2020-03-19 13:51
- */
-@Component
-public class THR03020 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
-            status.set("0");
-            return;
-        }
-        if (inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getStructureMap() != null) {
-            Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-            String admisTime = leaveHospitalStructureMap.get(Content.admisTime);
-            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
-            //入院登记表取出院时间,为空就取当前时间
-            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
-            if (StringUtil.isBlank(dischargeTime)) {
-                dischargeTime = DateUtil.nowString();
-            }
-            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
-                status.set("0");
-                return;
-            }
-            //如果住院天数小于3天则不判断该条规则
-            if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
-                status.set("0");
-                return;
-            }
-            ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
-            List<DirectorDoctorWardDoc> directorDoctorWardDocs = threeLevelWardDoc.getDirectorDoctorWardDocs();
-            if (directorDoctorWardDocs.size() > 0) {
-                DirectorDoctorWardDoc firstDirectorg = directorDoctorWardDocs.get(0);
-                String wardDateStr = firstDirectorg.getStructureMap().get("查房日期");
-                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 72 * 60L)) {
-                    status.set("0");
-                }
-            }
-        } else {
-            //没有出院小结,这条直接不报错
-            status.set("0");
-        }
-    }
-
-}

+ 0 - 73
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03021.java

@@ -1,73 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.threelevelward;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
-import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
-import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
-import com.lantone.qc.pub.util.DateUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : THR03021
- * @Description : 入院48小时内无Fellow以上的医生查房记录
- * @Author : 胡敬
- * @Date: 2020-03-19 15:50
- */
-@Component
-public class THR03021 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
-            status.set("0");
-            return;
-        }
-        if (inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getStructureMap() != null
-                && inputInfo.getThreeLevelWardDocs().size() > 0) {
-            Map<String, String> getLeaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-            String admisTime = getLeaveHospitalStructureMap.get(Content.admisTime);
-            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
-            //入院登记表取出院时间,为空就取当前时间
-            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
-            if (StringUtil.isBlank(dischargeTime)) {
-                dischargeTime = DateUtil.nowString();
-            }
-            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
-                status.set("0");
-                return;
-            }
-            //如果住院天数小于2天则不判断该条规则
-            if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (48 * 60))) {
-                status.set("0");
-                return;
-            }
-            ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
-            List<AttendingDoctorWardDoc> attendingDoctorWardDocs = threeLevelWardDoc.getAttendingDoctorWardDocs();
-            List<DirectorDoctorWardDoc> directorDoctorWardDocs = threeLevelWardDoc.getDirectorDoctorWardDocs();
-            if (attendingDoctorWardDocs.size() > 0) {
-                AttendingDoctorWardDoc firstAttending = attendingDoctorWardDocs.get(0);
-                String wardDateStr = firstAttending.getStructureMap().get("查房日期");
-                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 48 * 60L)) {
-                    status.set("0");
-                }
-            }
-            if (directorDoctorWardDocs.size() > 0) {
-                DirectorDoctorWardDoc firstDirector = directorDoctorWardDocs.get(0);
-                String wardDateStr = firstDirector.getStructureMap().get("查房日期");
-                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 48 * 60L)) {
-                    status.set("0");
-                }
-            }
-        } else {
-            //没有出院小结,这条直接不报错
-            status.set("0");
-        }
-    }
-
-}

+ 0 - 200
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/taizhou/threelevelward/THR03070.java

@@ -1,200 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.taizhou.threelevelward;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.CrisisInfoDoc;
-import com.lantone.qc.pub.model.doc.LisDoc;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
-import com.lantone.qc.pub.util.DateUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-/**
- * @author HUJING
- * @create 2020-08-17 15:29
- * @desc 异常化验未记录
- **/
-@Component
-public class THR03070 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<LisDoc> lisDocs = inputInfo.getLisDocs();
-        List<CrisisInfoDoc> crisisInfoDocs = inputInfo.getCrisisInfoDocs();
-        List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
-        if (lisDocs.size() == 0 || threeLevelWardDocs.size() == 0) {
-            return;
-        }
-        List<String> crisisNames = crisisInfoDocs
-                .stream()
-                .map(CrisisInfoDoc::getStructureMap)
-                .filter(x -> StringUtil.isNotBlank(x.get("危急值名称")))
-                .map(x -> x.get("危急值名称"))
-                .collect(Collectors.toList());
-        //异常数据列表
-        List<String> abnormal = Lists.newArrayList();
-        Map<String, String> abnormalMap = Maps.newHashMap();
-        StringBuffer sb = new StringBuffer();
-        for (LisDoc lisDoc : lisDocs) {
-            double resultValue = -1, max = -1, min = -1;
-            Map<String, String> structureMap = lisDoc.getStructureMap();
-            String itemName = structureMap.get("报告名称");
-            if (crisisNames.contains(itemName)) {
-                continue;
-            }
-            String result = structureMap.get("检验结果");
-            String reference = structureMap.get("参考值");
-            String itemDate = structureMap.get("报告创建时间");
-            if (StringUtil.isBlank(itemName) || StringUtil.isBlank(result)
-                    || StringUtil.isBlank(reference) || StringUtil.isBlank(itemDate)) {
-                continue;
-            }
-            itemName = itemName.split("=")[1];
-            //1.化验结果是阳性时,直接把该化验名称放入异常数据列表中
-            if (result.contains("阳")) {
-                abnormal.add(itemName);
-                abnormalMap.put(itemName, itemDate);
-                continue;
-            }
-            //2.化验结果为阴性,或化验结果中不包含数字,跳过该条化验结果
-            if (result.contains("阴") || !CatalogueUtil.numberExist(result)) {
-                continue;
-            }
-            try {
-                resultValue = Double.parseDouble(result);
-            } catch (Exception e) {
-                System.out.println("THR03070--解析result出错:" + itemName + "->" + result);
-            }
-            if (resultValue < 0) {
-                continue;
-            }
-            //3.化验正常值在一个范围内,以“-”分割,最小值最大值返回都扩大10%,再与化验结果比较,在这范围之外,把该化验名称放入异常数据列表中
-            if (reference.contains("-")) {
-                try {
-                    String[] minMax = reference.split("-");
-                    min = Double.parseDouble(getNumber(minMax[0])) * 0.85;        //最小值范围缩小10%
-                    String maxNumber = getNumber(minMax[1]);
-                    if (StringUtil.isNotBlank(maxNumber)) {
-                        max = Double.parseDouble(maxNumber) * 1.15;    //最大值范围扩大10%
-                    }
-                    //化验结果在正常范围之外(返回扩大10%),把该化验名称放入异常数据列表中
-                    if (min >= 0 && max >= 0 && (resultValue < min || resultValue > max)) {
-                        abnormal.add(itemName);
-                        abnormalMap.put(itemName, itemDate);
-                    }
-                } catch (Exception e) {
-                    System.out.println("THR03070--3.出异常");
-                }
-            }
-            //4.化验正常值比某个值小,但该化验结果比该值大,把该化验名称放入异常数据列表中
-            else if (reference.contains("<")) {
-                try {
-                    String maxNumber = getNumber(reference);
-                    if (StringUtil.isNotBlank(maxNumber)) {
-                        max = Double.parseDouble(maxNumber);
-                    }
-                    if (resultValue > max) {
-                        abnormal.add(itemName);
-                        abnormalMap.put(itemName, itemDate);
-                    }
-                } catch (Exception e) {
-                    System.out.println("THR03070--4.出异常");
-                }
-            }
-            //5.化验正常值比某个值大,但该化验结果比该值小,把该化验名称放入异常数据列表中
-            else if (reference.contains(">")) {
-                try {
-                    String maxNumber = getNumber(reference);
-                    if (StringUtil.isNotBlank(maxNumber)) {
-                        min = Double.parseDouble(maxNumber);
-                    }
-                    if (resultValue < min) {
-                        abnormal.add(itemName);
-                        abnormalMap.put(itemName, itemDate);
-                    }
-                } catch (Exception e) {
-                    System.out.println("THR03070--5.出异常");
-                }
-            }
-        }
-
-        Map<String, Integer> abnormalCount = Maps.newHashMap();
-        abnormal = abnormal.stream().map(x -> {
-            if (x.contains("[")) {
-                x = x.substring(0, x.indexOf("["));
-            }
-            if (x.contains("(")) {
-                x = x.substring(0, x.indexOf("("));
-            }
-            x = x.replaceAll("[^\\u4e00-\\u9fa5]", "");
-            return x;
-        }).distinct().collect(Collectors.toList());
-        abnormal.forEach(i -> abnormalCount.put(i, 0));
-
-        List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
-        for (ThreeLevelWardDoc doc : allDoctorWradDocs) {
-            Map<String, String> structureMap = doc.getStructureMap();
-            String content = CatalogueUtil.structureMapJoin(structureMap, Lists.newArrayList("体检", "病情记录"));
-            for (String lis : abnormal) {
-                if (content.contains(lis)) {
-                    abnormalCount.put(lis, abnormalCount.get(lis) + 1);
-                }
-            }
-        }
-
-        List<String> abnormalMiss = Lists.newArrayList();
-        for (Map.Entry<String, Integer> lis : abnormalCount.entrySet()) {
-            if (lis.getValue() == 0) {
-                abnormalMiss.add(lis.getKey());
-            }
-            if (abnormalMiss.size() > 0) {
-                infoAppend(sb, lis.getKey(), abnormalMap);
-            }
-        }
-//        if (abnormalMiss.size() > 0) {
-//            status.set("-1");
-//            info.set(abnormalMiss.toString().replaceAll("[\\[\\]]", ""));
-//        }
-
-        if (sb.toString().length() > 0) {
-            status.set("-1");
-            info.set("化验:" + sb.toString().substring(0, sb.toString().length() - 1));
-        }
-    }
-
-    public String getNumber(String content) {
-        String group = "";
-        String compile = "([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9]|0)";
-        Pattern p = Pattern.compile(compile);
-        Matcher matcher = p.matcher(content);
-        if (matcher.find()) {
-            group = matcher.group(0);
-        }
-        return group;
-    }
-
-    /**
-     * 拼接提示信息
-     *
-     * @param sb
-     * @param repNm
-     * @param abnormalMap
-     */
-    private void infoAppend(StringBuffer sb, String repNm, Map<String, String> abnormalMap) {
-        for (Map.Entry<String, String> map : abnormalMap.entrySet()) {
-            if (repNm.equals(map.getKey())) {
-                sb.append(repNm).append("(").append(DateUtil.formatDateTime(StringUtil.parseDateTime(map.getValue()))).append(")").append("_");
-            }
-        }
-    }
-}

+ 6 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03014.java

@@ -28,8 +28,13 @@ public class THR03014 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getLeaveHospitalDoc() != null) {
             Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
             String admisTime = leaveHospitalStructureMap.get(Content.admisTime);
-            String dischargeTime = leaveHospitalStructureMap.get(Content.dischargeTime);
+            //入院登记表取出院时间,为空就取当前时间
+            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
+            if (StringUtil.isBlank(dischargeTime)) {
+                dischargeTime = DateUtil.nowString();
+            }
             //如果住院天数小于7天则不判断该条规则
             if (!CatalogueUtil.isEmpty(admisTime) && !CatalogueUtil.isEmpty(dischargeTime)) {
                 if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (7 * 24 * 60))) {

+ 6 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03016.java

@@ -29,7 +29,12 @@ public class THR03016 extends QCCatalogue {
         if (inputInfo.getLeaveHospitalDoc() != null) {
             Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
             String admisTime = leaveHospitalStructureMap.get(Content.admisTime);
-            String dischargeTime = leaveHospitalStructureMap.get(Content.dischargeTime);
+            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
+            //入院登记表取出院时间,为空就取当前时间
+            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
+            if (StringUtil.isBlank(dischargeTime)) {
+                dischargeTime = DateUtil.nowString();
+            }
             //如果住院天数小于3天则不判断该条规则
             if (!CatalogueUtil.isEmpty(admisTime) && !CatalogueUtil.isEmpty(dischargeTime)) {
                 if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (3 * 24 * 60))) {

+ 7 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03020.java

@@ -7,6 +7,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
+import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -29,7 +30,12 @@ public class THR03020 extends QCCatalogue {
         if (inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getStructureMap() != null) {
             Map<String, String> leaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
             String admisTime = leaveHospitalStructureMap.get(Content.admisTime);
-            String dischargeTime = leaveHospitalStructureMap.get(Content.dischargeTime);
+            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
+            //入院登记表取出院时间,为空就取当前时间
+            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
+            if (StringUtil.isBlank(dischargeTime)) {
+                dischargeTime = DateUtil.nowString();
+            }
             if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
                 status.set("0");
                 return;

+ 7 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03021.java

@@ -8,6 +8,7 @@ import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
+import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -31,7 +32,12 @@ public class THR03021 extends QCCatalogue {
                 && inputInfo.getThreeLevelWardDocs().size() > 0) {
             Map<String, String> getLeaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
             String admisTime = getLeaveHospitalStructureMap.get(Content.admisTime);
-            String dischargeTime = getLeaveHospitalStructureMap.get(Content.dischargeTime);
+            Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
+            //入院登记表取出院时间,为空就取当前时间
+            String dischargeTime = medicalRecordInfoStructureMap.get("leaveHospitalDate");
+            if (StringUtil.isBlank(dischargeTime)) {
+                dischargeTime = DateUtil.nowString();
+            }
             if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
                 status.set("0");
                 return;