Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

zhoutg vor 5 Jahren
Ursprung
Commit
5a1fb3161b
47 geänderte Dateien mit 389 neuen und 243 gelöschten Zeilen
  1. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0003.java
  2. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0005.java
  3. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0006.java
  4. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0014.java
  5. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0018.java
  6. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0024.java
  7. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0025.java
  8. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0042.java
  9. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0046.java
  10. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0047.java
  11. 5 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0053.java
  12. 12 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0056.java
  13. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0073.java
  14. 6 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0378.java
  15. 10 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0441.java
  16. 13 15
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0442.java
  17. 17 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0443.java
  18. 10 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0444.java
  19. 17 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0445.java
  20. 10 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0449.java
  21. 7 29
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0173.java
  22. 11 8
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0256.java
  23. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0149.java
  24. 30 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0508.java
  25. 9 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0125.java
  26. 9 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0126.java
  27. 10 10
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0130.java
  28. 10 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0131.java
  29. 13 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0132.java
  30. 10 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0133.java
  31. 10 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0134.java
  32. 10 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0135.java
  33. 14 13
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0136.java
  34. 13 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0137.java
  35. 10 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0138.java
  36. 10 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0139.java
  37. 12 10
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0428.java
  38. 12 10
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0429.java
  39. 12 10
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0430.java
  40. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0431.java
  41. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0432.java
  42. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0433.java
  43. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/ThreeLevelWardAI.java
  44. 8 0
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessClinic.java
  45. 4 1
      public/src/main/java/com/lantone/qc/pub/model/doc/ThreeLevelWardDoc.java
  46. 2 0
      public/src/main/java/com/lantone/qc/pub/model/label/PresentLabel.java
  47. 3 1
      trans/src/main/java/com/lantone/qc/trans/comsis/ModelDocGenerate.java

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

@@ -23,7 +23,8 @@ public class BEH0003 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
 
         String chief_text = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
-        if(CatalogueUtil.removeSpecialChar(chief_text).length()<=20)
+        int chief_text_length = chief_text.replaceAll("[\\p{Punct}\\pP]", "").length();
+        if(chief_text_length<20)
         {
             status.set("0");
         }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0005.java

@@ -44,6 +44,10 @@ public class BEH0005 extends QCCatalogue {
             if (day != -1) {
                 time_index.add(day);
             }
+            int ri = chief_text.indexOf("日");
+            if (ri != -1) {
+                time_index.add(ri);
+            }
             int hour = chief_text.indexOf("时");
             if (hour != -1) {
                 time_index.add(hour);

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0006.java

@@ -26,7 +26,7 @@ public class BEH0006 extends QCCatalogue {
 
         ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
         String chief_text = chiefLabel.getText();
-        if(chief_text.contains("检查") || chief_text.contains("术后") || chief_text.contains("药物")){
+        if(chief_text.contains("检查") || chief_text.contains("术后") || chief_text.contains("药物")|| chief_text.contains("发现")){
             status.set("0");
         }else {
             List<Clinical> clinicals = chiefLabel.getClinicals();
@@ -38,7 +38,7 @@ public class BEH0006 extends QCCatalogue {
                             if(!CatalogueUtil.isEmpty(pd.getName())){
                                 if(pd.getName().contains("天") || pd.getName().contains("周")|| pd.getName().contains("月")
                                         || pd.getName().contains("时") || pd.getName().contains("半年") || pd.getName().contains("秒")
-                                        || pd.getName().contains("日")){
+                                        || pd.getName().contains("日")|| pd.getName().contains("今")){
                                     status.set("0");
                                     break;
                                 }

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

@@ -28,7 +28,7 @@ public class BEH0014 extends QCCatalogue {
             Cause cause = clinical.getCause();
             if(cause == null){
                 int causeIndex = inputInfo.getBeHospitalizedDoc().getPresentLabel().getText().indexOf("因");
-                if (causeIndex < 15) {
+                if (causeIndex < 15 && causeIndex > -1) {
                     status.set("0");
                 } else {
                     info.set(clinicalName);

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

@@ -31,7 +31,7 @@ public class BEH0018 extends QCCatalogue {
                 if(!CatalogueUtil.isEmpty(pdName)){
                     if(pdName.contains("天") || pdName.contains("周")|| pdName.contains("月")
                             || pdName.contains("时") || pdName.contains("半年") || pdName.contains("秒")
-                            || pdName.contains("日")){
+                            || pdName.contains("日") || pdName.contains("今")){
                         status.set("0");
                         break;
                     }

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

@@ -22,7 +22,7 @@ public class BEH0024 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         List<Wound> wounds = inputInfo.getBeHospitalizedDoc().getPastLabel().getWounds();
         if (ListUtil.isNotEmpty(wounds)) {
-            if (wounds.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).count() > 0) {
+            if (wounds.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).count() > 0 || inputInfo.getBeHospitalizedDoc().getPastLabel().getText().contains("外伤史")) {
                 status.set("0");
             }
         }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0025.java

@@ -26,6 +26,10 @@ public class BEH0025 extends QCCatalogue {
                 status.set("0");
             }
         }
+        //规则硬匹配
+        if (inputInfo.getBeHospitalizedDoc().getPastLabel().getText().contains("手术")) {
+            status.set("0");
+        }
     }
 
 }

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0042.java

@@ -43,6 +43,9 @@ public class BEH0042 extends QCCatalogue {
                 status.set("0");
             }
         }
+        if (text.contains("出生")) {
+            status.set("0");
+        }
     }
 
 }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0046.java

@@ -21,6 +21,10 @@ public class BEH0046 extends QCCatalogue {
         if (smoking != null && StringUtil.isNotBlank(smoking.getName())) {
             status.set("0");
         }
+        //硬匹配规则
+        if (inputInfo.getBeHospitalizedDoc().getPersonalLabel().getText().contains("烟")) {
+            status.set("0");
+        }
     }
 
 }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0047.java

@@ -21,5 +21,9 @@ public class BEH0047 extends QCCatalogue {
         if (drinking != null && StringUtil.isNotBlank(drinking.getName())) {
             status.set("0");
         }
+        //硬匹配规则
+        if (inputInfo.getBeHospitalizedDoc().getPersonalLabel().getText().contains("酒")) {
+            status.set("0");
+        }
     }
 }

+ 5 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0053.java

@@ -17,6 +17,11 @@ public class BEH0053 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getBeHospitalizedDoc().getMaritalLabel() == null
+                || StringUtil.isBlank(inputInfo.getBeHospitalizedDoc().getMaritalLabel().getText())) {
+            status.set("0");
+        }
+
         Marryiage marryiage = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMarryiage();
         if (marryiage != null && StringUtil.isNotBlank(marryiage.getName())) {
             status.set("0");

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

@@ -18,7 +18,18 @@ public class BEH0056 extends QCCatalogue {
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         ConjugalRelation conjugalRelation = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getConjugalRelation();
-        if (conjugalRelation != null && StringUtil.isNotBlank(conjugalRelation.getName())) {
+        long cont = inputInfo.getBeHospitalizedDoc().getMaritalLabel()
+                .getFamily().stream()
+                .filter(family -> family.getName().contains("配偶") && family.getDead()!=null).count();
+        if (conjugalRelation != null) {
+            if(StringUtil.isNotBlank(conjugalRelation.getName()) || cont > 0){
+                status.set("0");
+            }
+        }else {
+            status.set("0");
+        }
+        //硬规则 匹配离婚
+        if (inputInfo.getBeHospitalizedDoc().getMaritalLabel().getText().contains("离婚")) {
             status.set("0");
         }
     }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0073.java

@@ -39,5 +39,9 @@ public class BEH0073 extends QCCatalogue {
                 }
             }
         }
+        if (inputInfo.getBeHospitalizedDoc().getPastLabel().getText().contains("肝炎")
+                || inputInfo.getBeHospitalizedDoc().getPastLabel().getText().contains("结核")) {
+            status.set("0");
+        }
     }
 }

+ 6 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0378.java

@@ -56,6 +56,12 @@ public class BEH0378 extends QCCatalogue {
                 status.set("0");
             }
         }
+
+        //规则匹配
+        if (inputInfo.getBeHospitalizedDoc().getFamilyLabel() != null
+                && inputInfo.getBeHospitalizedDoc().getFamilyLabel().getText().contains("自然死亡")) {
+            status.set("0");
+        }
     }
 
 }

+ 10 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0441.java

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.catalogue.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.General;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
 import org.springframework.stereotype.Component;
 
@@ -28,6 +29,15 @@ public class BEH0441 extends QCCatalogue {
                 }
             }
         }
+        List<General> gens = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGens();
+        if(gens.size() > 0 || gens != null){
+            for (General general:gens) {
+                if(general.getName().contains("纳") || general.getName().contains("饮食")){
+                    status.set("0");
+                    break;
+                }
+            }
+        }
 
     }
 }

+ 13 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0442.java

@@ -4,6 +4,7 @@ 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.entity.General;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
 import org.springframework.stereotype.Component;
 
@@ -19,26 +20,23 @@ import java.util.List;
 @Component
 public class BEH0442 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        if(beHospitalizedDoc != null && beHospitalizedDoc.getPresentLabel() != null){
-            String text = beHospitalizedDoc.getPresentLabel().getText();
-            if(text != null && (text.contains("便") || text.contains("尿"))){
-                return;
-            }else {
-                status.set("-1");
-            }
-        }
-        /*List<GeneralDesc> generals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGenerals();
+        List<GeneralDesc> generals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGenerals();
         if(generals.size() > 0 || generals != null){
             for (GeneralDesc general:generals) {
-                if(general.getName().contains("二便") || general.getName().contains("小便")
-                        ||general.getName().contains("大便")||general.getName().contains("大小便")){
+                if(general.getName().contains("便") || general.getName().contains("尿")){
                     status.set("0");
                     break;
                 }
             }
-        }*/
-
+        }
+        List<General> gens = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGens();
+        if(gens.size() > 0 || gens != null){
+            for (General general:gens) {
+                if(general.getName().contains("便") || general.getName().contains("尿")){
+                    status.set("0");
+                    break;
+                }
+            }
+        }
     }
 }

+ 17 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0443.java

@@ -4,6 +4,7 @@ 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.entity.General;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
 import org.springframework.stereotype.Component;
 
@@ -19,16 +20,23 @@ import java.util.List;
 @Component
 public class BEH0443 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        if(beHospitalizedDoc != null && beHospitalizedDoc.getPresentLabel() != null){
-            String text = beHospitalizedDoc.getPresentLabel().getText();
-            if(text != null && text.contains("体重")){
-                return;
-            }else {
-                status.set("-1");
+        List<GeneralDesc> generals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGenerals();
+        if(generals.size() > 0 || generals != null){
+            for (GeneralDesc general:generals) {
+                if(general.getName().contains("体重")){
+                    status.set("0");
+                    break;
+                }
+            }
+        }
+        List<General> gens = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGens();
+        if(gens.size() > 0 || gens != null){
+            for (General general:gens) {
+                if(general.getName().contains("体重")){
+                    status.set("0");
+                    break;
+                }
             }
         }
-
     }
 }

+ 10 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0444.java

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.catalogue.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.General;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
 import org.springframework.stereotype.Component;
 
@@ -28,6 +29,15 @@ public class BEH0444 extends QCCatalogue {
                 }
             }
         }
+        List<General> gens = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGens();
+        if(gens.size() > 0 || gens != null){
+            for (General general:gens) {
+                if(general.getName().contains("精神") || general.getName().contains("神志")){
+                    status.set("0");
+                    break;
+                }
+            }
+        }
 
     }
 }

+ 17 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0445.java

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.catalogue.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.General;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
 import com.lantone.qc.pub.model.label.PresentLabel;
 import org.springframework.stereotype.Component;
@@ -19,11 +20,22 @@ import java.util.List;
 @Component
 public class BEH0445 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
-        String text = presentLabel.getText();
-        if(text != null){
-            if(text.contains("睡眠")|| text.contains("纳眠")|| text.contains("入睡")){
-                status.set("0");
+        List<GeneralDesc> generals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGenerals();
+        if(generals.size() > 0 || generals != null){
+            for (GeneralDesc general:generals) {
+                if(general.getName().contains("睡眠") || general.getName().contains("纳眠")  || general.getName().contains("入睡")){
+                    status.set("0");
+                    break;
+                }
+            }
+        }
+        List<General> gens = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGens();
+        if(gens.size() > 0 || gens != null){
+            for (General general:gens) {
+                if(general.getName().contains("睡眠") || general.getName().contains("纳眠")  || general.getName().contains("入睡")){
+                    status.set("0");
+                    break;
+                }
             }
         }
     }

+ 10 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0449.java

@@ -4,9 +4,9 @@ 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.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.entity.Clinical;
 import com.lantone.qc.pub.model.entity.Diag;
+import com.lantone.qc.pub.util.ListUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
@@ -24,18 +24,22 @@ public class BEH0449 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
-        if(beHospitalizedDoc != null){
+        if (beHospitalizedDoc != null) {
             String chief_text = beHospitalizedDoc.getChiefLabel().getText();
-            if(chief_text.contains("检查") || chief_text.contains("术后") || chief_text.contains("药物")){
+            if (chief_text.contains("检查") || chief_text.contains("术后") || chief_text.contains("药物")) {
                 status.set("0");
-            }else {
+            } else {
                 List<Clinical> clinicals_chief = beHospitalizedDoc.getChiefLabel().getClinicals();
                 List<Clinical> clinicals_present = beHospitalizedDoc.getPresentLabel().getClinicals();
-                if(clinicals_chief != null && clinicals_present !=null){
+                if (ListUtil.isNotEmpty(clinicals_chief) && ListUtil.isNotEmpty(clinicals_present)) {
                     Clinical clinical_chief = clinicals_chief.get(0);
                     Clinical clinical_present = clinicals_present.get(0);
-                    if(!clinical_chief.getName().equals(clinical_present.getName())){
+                    if (!clinical_chief.getName().equals(clinical_present.getName())) {
                         status.set("-1");
+                    } else if (clinical_chief.getName().contains(clinical_present.getName())
+                            || clinical_present.getName().contains(clinical_chief.getName())) {
+                        status.set("0");
+                        return;
                     }
                 }
             }

+ 7 - 29
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0173.java

@@ -5,13 +5,12 @@ 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.entity.Diag;
-import com.lantone.qc.pub.util.ListUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : FIRP0173
@@ -22,42 +21,21 @@ import java.util.Map;
 @Component
 public class FIRP0173 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null
                 && inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getPresentLabel() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
             //病案首页门急诊诊断
             String outpatientEmergencyDiag = (String) firstpageStructureMap.get(Content.outpatientEmergencyDiag);
             if (StringUtils.isEmpty(outpatientEmergencyDiag)) {
-                return;
+                status.set("0");
             }
             //现病史所有诊断
             List<Diag> presentDiags = inputInfo.getBeHospitalizedDoc().getPresentLabel().getDiags();
-
-            //病案首页门急诊诊断
-            List<String> firstpageDiag = new ArrayList<>();
-            //现病史拟诊诊断
-            List<String> presentPossibleDiag = new ArrayList<>();
-            //存放病案首页门急诊诊断
-            putFirstpageDiagToList(outpatientEmergencyDiag, firstpageDiag);
-            //存放现病史拟诊诊断
-            putPossibleDiagToList(presentDiags, presentPossibleDiag);
-
-            if (!ListUtil.equals(firstpageDiag, presentPossibleDiag)) {
-                status.set("-1");
-            }
-        }
-
-    }
-
-    private void putFirstpageDiagToList(String outpatientEmergencyDiag, List<String> firstpageDiag) {
-        firstpageDiag.add(outpatientEmergencyDiag);
-    }
-
-    private void putPossibleDiagToList(List<Diag> diagList, List<String> presentPossibleDiag) {
-        for (Diag diag : diagList) {
-            if (diag.getPossible() != null) {
-                presentPossibleDiag.add(diag.getName());
+            List<Diag> presentPossibleDiag = presentDiags.stream().filter(diag -> diag.getPossible() != null).collect(Collectors.toList());
+            if (presentPossibleDiag.size() > 0) {
+                if (presentPossibleDiag.get(0).getHospitalDiagName().equals(outpatientEmergencyDiag)) {
+                    status.set("0");
+                }
             }
         }
     }

+ 11 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0256.java

@@ -45,15 +45,18 @@ public class FIRP0256 extends QCCatalogue {
             List<OutcomeCure> outcomeCures = new ArrayList<>();//转归情况-治愈
             List<PositiveFinding> positiveFindings = new ArrayList<>();//阳性表现
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                if (threeLevelWardDoc.getThreeLevelWardLabel() == null
-                        || !threeLevelWardDoc.getThreeLevelWardLabel().getTitle().contains("最后一次")) {
-                    continue;
+                if (threeLevelWardDoc.getThreeLevelWardLabel() == null) {
+                    List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                    for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                        if (!threeLevelWardLabel.getTitle().contains("最后一次")) {
+                            continue;
+                        }
+                        betterFindings = threeLevelWardLabel.getBetterFindings();
+                        outcomeToBetters = threeLevelWardLabel.getOutcomeToBetters();
+                        outcomeCures = threeLevelWardLabel.getOutcomeCures();
+                        positiveFindings = threeLevelWardLabel.getPositiveFindings();
+                    }
                 }
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                betterFindings = threeLevelWardLabel.getBetterFindings();
-                outcomeToBetters = threeLevelWardLabel.getOutcomeToBetters();
-                outcomeCures = threeLevelWardLabel.getOutcomeCures();
-                positiveFindings = threeLevelWardLabel.getPositiveFindings();
             }
 
             //出院小结转归情况

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0149.java

@@ -37,8 +37,9 @@ public class LEA0149 extends QCCatalogue {
                 Map<String, String> lhStructureMap = leaveHospitalDoc.getStructureMap();
                 ChiefLabel chiefLabel = beHospitalizedDoc.getChiefLabel();
                 if (lhStructureMap != null && chiefLabel != null) {
-                    String bhChief = chiefLabel.getText();
+                    String bhChief = chiefLabel.getText().replaceAll("[\\p{Punct}\\pP]", "");
                     String bhThings = lhStructureMap.get("入院情况");
+                    bhThings = bhThings.replaceAll("[\\p{Punct}\\pP]", "");
                     if (bhThings.indexOf(bhChief) < 0) {
                         status.set("-1");
                     }

+ 30 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0508.java

@@ -0,0 +1,30 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * @author kwz
+ * 出院记录无副主任/主任医师签名
+ * @date 2020/4/7
+ * @time 21:42
+ */
+@Component
+public class LEA0508 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if(structureMap != null){
+            if(StringUtils.isEmpty(structureMap.get("医师签名"))){
+                status.set("-1");
+            }
+        }
+    }
+}

+ 9 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0125.java

@@ -25,11 +25,16 @@ import java.util.Map;
 public class THR0125 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getStructureMap() != null
+        if (inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getStructureMap() != null
                 && inputInfo.getThreeLevelWardDocs().size() > 0) {
-            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            String admisTime = beHospitalStructureMap.get(Content.admisDate);
-            if (CatalogueUtil.isEmpty(admisTime)) {
+            Map<String, String> getLeaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+            String admisTime = getLeaveHospitalStructureMap.get(Content.admisTime);
+            String dischargeTime = getLeaveHospitalStructureMap.get(Content.dischargeTime);
+            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+                return;
+            }
+            //如果住院天数小于3天则不判断该条规则
+            if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
                 return;
             }
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();

+ 9 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0126.java

@@ -25,11 +25,16 @@ import java.util.Map;
 public class THR0126 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getStructureMap() != null
+        if (inputInfo.getLeaveHospitalDoc() != null && inputInfo.getLeaveHospitalDoc().getStructureMap() != null
                 && inputInfo.getThreeLevelWardDocs().size() > 0) {
-            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-            String admisTime = beHospitalStructureMap.get(Content.admisDate);
-            if (CatalogueUtil.isEmpty(admisTime)) {
+            Map<String, String> getLeaveHospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+            String admisTime = getLeaveHospitalStructureMap.get(Content.admisTime);
+            String dischargeTime = getLeaveHospitalStructureMap.get(Content.dischargeTime);
+            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+                return;
+            }
+            //如果住院天数小于2天则不判断该条规则
+            if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (48 * 60))) {
                 return;
             }
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();

+ 10 - 10
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0130.java

@@ -24,16 +24,16 @@ public class THR0130 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-
-                if (threeLevelWardLabel.getClinicals().size() == 0 && threeLevelWardLabel.getSigns().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getClinicals().size() == 0 && threeLevelWardLabel.getSigns().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 10 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0131.java

@@ -44,15 +44,16 @@ public class THR0131 extends QCCatalogue {
                 }
             }
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 13 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0132.java

@@ -24,18 +24,19 @@ public class THR0132 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() > 0
-                        && StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText())
-                        && (threeLevelWardLabel.getDiffDiag().size() > 0 || StringUtils.isNotEmpty(threeLevelWardLabel.getDiffDiagText()))
-                        && threeLevelWardLabel.getTreatmentPlans().size() > 0) {
-                    status.set("0");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() > 0
+                            || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText())
+                            || (threeLevelWardLabel.getDiffDiag().size() > 0 || StringUtils.isNotEmpty(threeLevelWardLabel.getDiffDiagText()))
+                            || threeLevelWardLabel.getTreatmentPlans().size() > 0) {
+                        status.set("0");
+                        return;
+                    }
                 }
             }
         }

+ 10 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0133.java

@@ -24,15 +24,16 @@ public class THR0133 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 10 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0134.java

@@ -24,15 +24,16 @@ public class THR0134 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.indications.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 10 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0135.java

@@ -24,15 +24,16 @@ public class THR0135 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.director.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getClinicals().size() == 0 && threeLevelWardLabel.getSigns().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.director.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getClinicals().size() == 0 && threeLevelWardLabel.getSigns().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 14 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0136.java

@@ -34,7 +34,7 @@ public class THR0136 extends QCCatalogue {
                 return;
             }
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
-            Map<String,Map<String, String>> doctorRecord = extractWardRecord(
+            Map<String, Map<String, String>> doctorRecord = extractWardRecord(
                     threeLevelWardDocs,
                     admisTime,
                     72 * 60);
@@ -44,18 +44,19 @@ public class THR0136 extends QCCatalogue {
                 }
             }
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.director.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardDoc.getText().contains("鉴别诊断")) {
-                    return;
-                }
-                if (threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.director.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardDoc.getText().contains("鉴别诊断")) {
+                        return;
+                    }
+                    if (threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 13 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0137.java

@@ -24,18 +24,19 @@ public class THR0137 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.director.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() > 0
-                        && StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText())
-                        && (threeLevelWardLabel.getDiffDiag().size() > 0 || StringUtils.isNotEmpty(threeLevelWardLabel.getDiffDiagText()))
-                        && threeLevelWardLabel.getTreatmentPlans().size() > 0) {
-                    status.set("0");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.director.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() > 0
+                            || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText())
+                            || (threeLevelWardLabel.getDiffDiag().size() > 0 || StringUtils.isNotEmpty(threeLevelWardLabel.getDiffDiagText()))
+                            || threeLevelWardLabel.getTreatmentPlans().size() > 0) {
+                        status.set("0");
+                        return;
+                    }
                 }
             }
         }

+ 10 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0138.java

@@ -24,15 +24,16 @@ public class THR0138 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.director.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.director.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 10 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0139.java

@@ -24,15 +24,16 @@ public class THR0139 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null
-                        || StringUtil.isBlank(threeLevelWardLabel.getTitle())
-                        || !Content.director.equals(threeLevelWardLabel.getTitle())) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (StringUtil.isBlank(threeLevelWardLabel.getTitle())
+                            || !Content.director.equals(threeLevelWardLabel.getTitle())) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 12 - 10
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0428.java

@@ -27,16 +27,18 @@ public class THR0428 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null || threeLevelWardLabel.getSerious() != 1) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() == 0
-                        || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText()) && threeLevelWardLabel.getDiagBasisText().length() < 30
-                        || threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())
-                        || threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (threeLevelWardLabel.getSerious() != 1) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() == 0
+                            || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText()) && threeLevelWardLabel.getDiagBasisText().length() < 30
+                            || threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())
+                            || threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 12 - 10
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0429.java

@@ -27,16 +27,18 @@ public class THR0429 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null || threeLevelWardLabel.getSerious() != 2) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() == 0
-                        || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText()) && threeLevelWardLabel.getDiagBasisText().length() < 30
-                        || threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())
-                        || threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (threeLevelWardLabel.getSerious() != 2) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() == 0
+                            || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText()) && threeLevelWardLabel.getDiagBasisText().length() < 30
+                            || threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())
+                            || threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 12 - 10
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0430.java

@@ -27,16 +27,18 @@ public class THR0430 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null || threeLevelWardLabel.getSerious() != 3) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getDiags().size() == 0
-                        || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText()) && threeLevelWardLabel.getDiagBasisText().length() < 30
-                        || threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())
-                        || threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (threeLevelWardLabel.getSerious() != 3) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getDiags().size() == 0
+                            || StringUtil.isNotBlank(threeLevelWardLabel.getDiagBasisText()) && threeLevelWardLabel.getDiagBasisText().length() < 30
+                            || threeLevelWardLabel.getDiffDiag().size() == 0 && StringUtil.isBlank(threeLevelWardLabel.getDiffDiagText())
+                            || threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0431.java

@@ -26,13 +26,15 @@ public class THR0431 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null || threeLevelWardLabel.getSerious() != 1) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (threeLevelWardLabel.getSerious() != 1) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0432.java

@@ -26,13 +26,15 @@ public class THR0432 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null || threeLevelWardLabel.getSerious() != 2) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (threeLevelWardLabel.getSerious() != 2) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0433.java

@@ -26,13 +26,15 @@ public class THR0433 extends QCCatalogue {
         if (inputInfo.getThreeLevelWardDocs().size() > 0) {
             List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
             for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-                ThreeLevelWardLabel threeLevelWardLabel = threeLevelWardDoc.getThreeLevelWardLabel();
-                if (threeLevelWardLabel == null || threeLevelWardLabel.getSerious() != 3) {
-                    continue;
-                }
-                if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
-                    status.set("-1");
-                    return;
+                List<ThreeLevelWardLabel> threeLevelWardLabels = threeLevelWardDoc.getThreeLevelWardLabel();
+                for (ThreeLevelWardLabel threeLevelWardLabel : threeLevelWardLabels) {
+                    if (threeLevelWardLabel.getSerious() != 3) {
+                        continue;
+                    }
+                    if (threeLevelWardLabel.getTreatmentPlans().size() == 0) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/ThreeLevelWardAI.java

@@ -142,7 +142,7 @@ public class ThreeLevelWardAI extends ModelAI {
         for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
             String text = threeLevelWardDoc.getText();
             if (StringUtil.isNotBlank(text) && StringUtil.isNotBlank(originalText) && text.equals(originalText)) {
-                threeLevelWardDoc.setThreeLevelWardLabel(threeLevelWardLabel);
+                threeLevelWardDoc.getThreeLevelWardLabel().add(threeLevelWardLabel);
                 break;
             }
         }

+ 8 - 0
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessClinic.java

@@ -72,6 +72,14 @@ public class EntityProcessClinic extends EntityProcess {
             List<Diag> diags = entityProcessDiag.extractEntity(aiOut);
             presentLabel.setDiags(diags);
 
+            //一般情况信息
+            List<Lemma> geneLemmas = createEntityTree(aiOut, EntityEnum.GENERAL_DESCRIPT.toString());
+            for (Lemma lemma : geneLemmas) {
+                General general = new General();
+                general.setName(lemma.getText());
+                presentLabel.add(presentLabel.getGens(), general);
+            }
+
             //一般情况描述信息
             EntityProcessGenerals entityProcessGeneral = new EntityProcessGenerals();
             List<GeneralDesc> generals = entityProcessGeneral.extractEntity(aiOut);

+ 4 - 1
public/src/main/java/com/lantone/qc/pub/model/doc/ThreeLevelWardDoc.java

@@ -4,6 +4,9 @@ import com.lantone.qc.pub.model.label.ThreeLevelWardLabel;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @ClassName : ThreeLevelWardDoc
  * @Description : 查房记录文档
@@ -13,5 +16,5 @@ import lombok.Setter;
 @Getter
 @Setter
 public class ThreeLevelWardDoc extends ModelDoc {
-    private ThreeLevelWardLabel threeLevelWardLabel;
+    private List<ThreeLevelWardLabel> threeLevelWardLabel = new ArrayList<>();
 }

+ 2 - 0
public/src/main/java/com/lantone/qc/pub/model/label/PresentLabel.java

@@ -25,6 +25,8 @@ public class PresentLabel extends GeneralLabel {
     //治疗
     private List<Treat> treats;
     //一般情况
+    private List<General> gens = new ArrayList<>();
+    //一般情况描述
     private List<GeneralDesc> generals;
     //疾病信息
     private List<Diag> diags = new ArrayList<>();

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/comsis/ModelDocGenerate.java

@@ -202,7 +202,9 @@ public class ModelDocGenerate {
         structureMap.remove("个人史");
 
         MaritalLabel maritalLabel = new MaritalLabel();
-        maritalLabel.setText("婚育史: " + structureMap.get("婚育史"));
+        if (structureMap.get("婚育史") != null) {
+            maritalLabel.setText("婚育史: " + structureMap.get("婚育史"));
+        }
         beHospitalizedDoc.setMaritalLabel(maritalLabel);
         structureMap.remove("婚育史");