Bläddra i källkod

Merge remote-tracking branch 'origin/hb/beilun' into hb/beilun

daiyi 3 år sedan
förälder
incheckning
8baa2a1b7f
100 ändrade filer med 2033 tillägg och 301 borttagningar
  1. 1 1
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/ModuleHelper.java
  2. 1 1
      dbanaly/src/main/resources/application-local.yml
  3. 3 3
      dbanaly/src/main/resources/application-master.yml
  4. 3 3
      dbanaly/src/main/resources/application-test.yml
  5. 4 1
      kernel/pom.xml
  6. 19 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java
  7. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0015.java
  8. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0025.java
  9. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0026.java
  10. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0034.java
  11. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0036.java
  12. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0058.java
  13. 7 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02966.java
  14. 3 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0397.java
  15. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0493.java
  16. 6 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0560.java
  17. 21 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0095.java
  18. 7 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC03086.java
  19. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0162.java
  20. 5 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0170.java
  21. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0181.java
  22. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0185.java
  23. 13 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0193.java
  24. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0196.java
  25. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0209.java
  26. 6 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0211.java
  27. 6 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0214.java
  28. 5 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java
  29. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02972.java
  30. 1 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03110.java
  31. 39 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03195.java
  32. 129 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0006.java
  33. 71 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0034.java
  34. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0079.java
  35. 80 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH02902.java
  36. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03181.java
  37. 68 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03182.java
  38. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03183.java
  39. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03184.java
  40. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03185.java
  41. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03186.java
  42. 56 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03187.java
  43. 41 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03188.java
  44. 38 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03189.java
  45. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03190.java
  46. 62 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03191.java
  47. 35 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03193.java
  48. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03202.java
  49. 95 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0372.java
  50. 99 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0397.java
  51. 55 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0454.java
  52. 5 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/clinicalblood/CLI0308.java
  53. 54 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/crisisvaluereport/CRI0383.java
  54. 96 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/crisisvaluereport/CRI0384.java
  55. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathcasediscuss/DEAC0100.java
  56. 32 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathcasediscuss/DEAC0104.java
  57. 54 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathcasediscuss/DEAC0109.java
  58. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03204.java
  59. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03205.java
  60. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03206.java
  61. 37 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03207.java
  62. 42 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03208.java
  63. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03209.java
  64. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03210.java
  65. 48 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03211.java
  66. 28 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR0347.java
  67. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/difficultcasediscuss/DIF0121.java
  68. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/difficultcasediscuss/DIF0553.java
  69. 2 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC0093.java
  70. 0 61
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC03086.java
  71. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP0183.java
  72. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03237.java
  73. 7 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03238.java
  74. 7 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03239.java
  75. 5 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03240.java
  76. 3 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03241.java
  77. 5 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03242.java
  78. 8 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03245.java
  79. 6 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03246.java
  80. 5 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03247.java
  81. 10 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03248.java
  82. 9 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03250.java
  83. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03255.java
  84. 10 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03260.java
  85. 3 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03261.java
  86. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03262.java
  87. 3 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03263.java
  88. 9 8
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03265.java
  89. 15 11
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03266.java
  90. 5 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03267.java
  91. 21 19
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03268.java
  92. 21 13
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03269.java
  93. 10 8
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03276.java
  94. 12 11
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03277.java
  95. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03278.java
  96. 6 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03279.java
  97. 9 8
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03280.java
  98. 0 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03282.java
  99. 2 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/leavehospital/LEA0149.java
  100. 0 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/leavehospital/LEA03192.java

+ 1 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/ModuleHelper.java

@@ -53,7 +53,7 @@ public class ModuleHelper {
     public boolean loadModuleInfo() {
         try {
             List<String> xmlDataTypeHospitalIds = Lists.newArrayList("1", "2", "3");
-            List<String> htmlDataTypeHospitalIds = Lists.newArrayList("4", "5", "10", "13");
+            List<String> htmlDataTypeHospitalIds = Lists.newArrayList("4", "5", "10", "13","35");
             for (String hospitalId : hospitalIds.split(",")) {
                 loadStandardModule(hospitalId);
                 if (xmlDataTypeHospitalIds.contains(hospitalId)) {

+ 1 - 1
dbanaly/src/main/resources/application-local.yml

@@ -5,7 +5,7 @@ spring:
     druid:
       lantone:
         driver-class-name: com.mysql.jdbc.Driver
-        url: jdbc:mysql://192.168.2.237:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        url: jdbc:mysql://192.168.2.237:3307/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
         username: root
         password: lantone
         initial-size: 8

+ 3 - 3
dbanaly/src/main/resources/application-master.yml

@@ -5,7 +5,7 @@ spring:
     druid:
       lantone:
         driver-class-name: com.mysql.jdbc.Driver
-        url: jdbc:mysql://192.168.2.125:3308/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        url: jdbc:mysql://192.168.2.129:3307/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
         username: root
         password: LangT0ng@122lt
         initial-size: 8
@@ -28,8 +28,8 @@ spring:
     database:
       cache: 10 # cache索引
       token: 10 # Token索引
-    host: 192.168.2.125 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
     password: lantone # Redis服务器连接密码(默认为空)
     lettuce:
       pool:

+ 3 - 3
dbanaly/src/main/resources/application-test.yml

@@ -5,7 +5,7 @@ spring:
     druid:
       lantone:
         driver-class-name: com.mysql.jdbc.Driver
-        url: jdbc:mysql://192.168.2.126:3307/qc_xy?useUnicode=true&characterEncoding=utf8&useSSL=false
+        url: jdbc:mysql://192.168.2.126:3307/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
         username: root
         password: Lat0ne@tesT
         initial-size: 8
@@ -26,8 +26,8 @@ spring:
         use-global-data-source-stat: true
   redis:
     database:
-      cache: 6 # cache索引
-      token: 6 # Token索引
+      cache: 10 # cache索引
+      token: 10 # Token索引
     host: 192.168.2.126  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
     password: lantone # Redis服务器连接密码(默认为空)

+ 4 - 1
kernel/pom.xml

@@ -47,7 +47,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+        </dependency>
         <!-- LOGGING begin -->
         <!-- 代码直接调用commons-logging会被桥接到slf4j -->
         <dependency>

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

@@ -12,6 +12,7 @@ import com.lantone.qc.pub.model.entity.GeneralDesc;
 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.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -83,7 +84,7 @@ public class BEH0011 extends QCCatalogue {
                 /* 取现病史中一般情况之后的疾病名称 */
                 if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
                     String lastGeneral = generals.get(generals.size() - 1).getName();
-                    int lastGeneralIndex = presentText.indexOf(lastGeneral);
+                    int lastGeneralIndex = presentText.lastIndexOf(lastGeneral);
                     for (Diag presentDiag : presentDiags) {
                         if (presentDiag.getNegative() != null || presentDiag.getHospitalDiagName().contains("否认")) {
                             continue;
@@ -98,9 +99,26 @@ public class BEH0011 extends QCCatalogue {
                 }
             }
         }
+        if(presentPastDiags!= null && presentPastDiags.size()>0){
+            List<String> markStr = Arrays.asList("病以来", "病来");
+            String text = presentLabel.getText();
+            for (String str : markStr) {
+                if(text.contains(str)){
+                    String textStr = text.substring(text.lastIndexOf(str));
+                    presentPastDiags = presentPastDiags.stream().filter(obj->textStr.contains(obj)).collect(Collectors.toSet());
+                    break;
+                }
+            }
+        }
         /* 取既往史中疾病名称 */
         if (pastLabel != null && StringUtils.isNotEmpty(pastLabel.getText())) {
             List<Diag> pastDiags = pastLabel.getDiags();
+            String text = pastLabel.getText();
+            String pattern = "[\\s\\S]*(?=妊娠).{0,4}((?=高血压)|(?=糖尿病))[\\s\\S]*";
+            if(text.matches(pattern) && ListUtil.isNotEmpty(pastDiags)){
+                List<String> dis = Arrays.asList("高血压", "糖尿病");
+                pastDiags = pastDiags.stream().filter(obj -> !dis.contains(obj.getHospitalDiagName())).collect(Collectors.toList());
+            }
             addDiagHospitalName(presentPastDiags, pastDiags, pastLabel.getText());
         } else {            //结构化数据
             List<Diag> pastDiags = new ArrayList<>();

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

@@ -34,7 +34,8 @@ public class BEH0015 extends QCCatalogue {
         List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getClinicals();
         if (clinicals.size() > 0) {
             Clinical clinical = clinicals.get(0);
-            if (StringUtil.isBlank(clinical.getName()) || clinical.getName().contains("腰痛")) {
+            if (StringUtil.isBlank(clinical.getName()) || clinical.getName().contains("腰痛")|| clinical.getName().contains("腹痛")
+                    || clinical.getName().contains("头痛") || clinical.getName().contains("胸痛")|| clinical.getName().contains("颈部")) {
                 return;
             }
             if (clinicalList.contains(clinical.getName())) {

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

@@ -61,7 +61,7 @@ public class BEH0025 extends QCCatalogue {
         }
         //规则硬匹配
         String pastLabelText = pastLabel.getText();
-        if (pastLabelText.contains("手术") || pastLabelText.contains("详见")
+        if (pastLabelText.contains("手术") || pastLabelText.contains("详见")|| pastLabelText.contains("术史")
                 || pastLabelText.contains("见旧病历") || pastLabelText.contains("见既往病历")|| pastLabelText.contains("体外碎石")) {
             status.set("0");
         }

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

@@ -40,7 +40,8 @@ public class BEH0026 extends QCCatalogue {
         }
         String pastText = pastLabel.getText();
         if (pastText.contains("食物过敏史") || pastText.contains("食物、药物过敏") || pastText.contains("详见") ||
-                pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
+                pastText.contains("见旧病历") || pastText.contains("见既往病历") || pastText.contains("食物药物过敏史")
+                || pastText.contains("食物及药物过敏史") || pastText.contains("食物、药物及其他过敏")) {
             status.set("0");
             return;
         }

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

@@ -37,7 +37,7 @@ public class BEH0034 extends QCCatalogue {
                         .filter(i ->
                                 i != null && StringUtil.isNotBlank(i.getName()) && i.getNegative() == null
                                         && !"手术史".equals(i.getName()) && !"手术".equals(i.getName()) && !"手术治疗".equals(i.getName())
-                                        && !"手术无手术史".equals(i.getName())
+                                        && !"手术无手术史".equals(i.getName())&& !"手术处理".equals(i.getName())&& !"其他手术史".equals(i.getName())
                         )
                         .map(i -> i.getName())
                         .distinct()

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

@@ -32,7 +32,8 @@ public class BEH0036 extends QCCatalogue {
             if (operation == null || StringUtil.isBlank(operation.getName())) {
                 continue;
             }
-            if ("手术史".equals(operation.getName()) || "手术".equals(operation.getName()) || "手术治疗".equals(operation.getName()) || "手术无手术史".equals(operation.getName())) {
+            if ("手术史".equals(operation.getName()) || "其他手术史".equals(operation.getName()) || "手术".equals(operation.getName())
+                    || "手术治疗".equals(operation.getName()) || "手术无手术史".equals(operation.getName()) || "手术处理".equals(operation.getName())) {
                 continue;
             }
             if ((operation.getNegative() == null || StringUtil.isBlank(operation.getNegative().getName()))

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

@@ -66,7 +66,7 @@ public class BEH0058 extends QCCatalogue {
             }
             regex = ".*\\d+-\\d+-\\d+-[1-9].*";
             boolean matches = maritalText.matches(regex);
-            regex = ".*\\d+,\\d+,\\d+,[1-9].*|.*\\d个.*|.*\\d男.*|.*\\d女.*|.*\\d子.*|.*G\\dp\\d.*";
+            regex = "(?i).*\\d+,\\d+,\\d+,[1-9].*|.*\\d个.*|.*\\d男.*|.*\\d女.*|.*\\d子.*|.*G\\dp\\d.*";
             boolean isComma = maritalText.matches(regex);
             if (flag || matches || isComma) {
                 status.set("0");
@@ -80,7 +80,7 @@ public class BEH0058 extends QCCatalogue {
         }
         if (StringUtil.isNotBlank(maritalText)) {
             List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女"
-                    , "0-0-0-0", "详见", "0-0-0-0");
+                    , "0-0-0-0", "详见", "0-0-0-0","无子女","未孕");
             for (String word : words) {
                 if (maritalText.contains(word)) {
                     status.set("0");

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

@@ -48,9 +48,15 @@ public class BEH02966 extends QCCatalogue {
         List<String> keys = Lists.newArrayList("主诉", "现病史", "既往史", "体格检查", "一般情况"
                 , "初步诊断", "专科体格检查", "神经系统检查", "实验室检查", "影像学检查");
         String text = CatalogueUtil.structureMapJoin(beHospitalStructureMap, keys);
-
+        String rex="(?<!((母孕期|母亲|妈妈|分娩期|分娩|出生时|母亲怀孕|怀孕时|孕期)[^。,;。、,;]{0,15}))(阴道|宫颈|子宫|宫底|胎位|胎数|胎心|宫缩|宫口|卵巢|输卵管|阴唇|阴蒂|阴道前庭|前庭大腺|处女膜)";
         for (String noMatchWord : noMatchWords) {
             if (text.contains(noMatchWord)) {
+                if(gender.contains("男")){
+                    if(!text.matches(rex)){
+                        status.set("0");
+                        return;
+                    }
+                }
                 status.set("-1");
                 info.set(noMatchWord);
                 return;

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

@@ -60,10 +60,10 @@ public class BEH0397 extends QCCatalogue {
         if ((StringUtil.isNotBlank(familyText)
                 && ((familyText.contains("父") || familyText.contains("双亲") || familyText.contains("母"))
                 && (familyText.contains("已故") || familyText.contains("体健") || familyText.contains("去世") || familyText.contains("健康"))
-                || familyText.contains("详见") || familyText.contains("见旧病历") || familyText.contains("见既往病历"))
+                || familyText.contains("离世")|| familyText.contains("详见") || familyText.contains("见旧病历") || familyText.contains("见既往病历"))
                 || (StringUtil.isNotBlank(maritalText) && ((maritalText.contains("父") || maritalText.contains("双亲") || maritalText.contains("母"))
-                && (maritalText.contains("已故") || maritalText.contains("体健") || maritalText.contains("去世") || familyText.contains("健康"))
-                || maritalText.contains("详见") || maritalText.contains("见旧病历") || maritalText.contains("见既往病历"))))) {
+                && (maritalText.contains("已故") || maritalText.contains("体健") || maritalText.contains("去世") || maritalText.contains("健康"))
+                || maritalText.contains("离世")|| maritalText.contains("详见") || maritalText.contains("见旧病历") || maritalText.contains("见既往病历"))))) {
             status.set("0");
             return;
         }

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

@@ -36,13 +36,13 @@ public class BEH0493 extends QCCatalogue {
             return;
         }
         PacsLabel pacsLabel = inputInfo.getBeHospitalizedDoc().getPacsLabel();
-        if (pacsLabel != null && StringUtil.isNotBlank(pacsLabel.getText())) {
+        if (pacsLabel != null && StringUtil.isNotBlank(pacsLabel.getText()) && !"。".equals(pacsLabel.getText())) {
             status.set("0");
         }
     }
 
     private String getKeyByHopitalId() {
-        switch (Content.hospital_Id){
+        switch (Content.hospital_Id) {
             case "1":
             case "2":
                 return "辅助检查结果";

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

@@ -5,6 +5,7 @@ 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.Clinical;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -26,7 +27,7 @@ public class BEH0560 extends QCCatalogue {
             return;
         }
         String chiefTxt = beHospitalizedDoc.getChiefLabel().getText();
-        if (chiefTxt.contains("检查") || chiefTxt.contains("术后") || chiefTxt.contains("药物") || chiefTxt.contains("发现")) {
+        if (StringUtil.isNotBlank(chiefTxt) && (chiefTxt.contains("检查") || chiefTxt.contains("术后") || chiefTxt.contains("药物") || chiefTxt.contains("发现"))) {
             status.set("0");
             return;
         }
@@ -55,6 +56,10 @@ public class BEH0560 extends QCCatalogue {
                 }
             }
         }
+        if (chiefSymp.size() == 0 && StringUtil.isBlank(beHospitalizedDoc.getStructureMap().get("主诉")) && presentSymp.size() > 0) {
+                status.set("-1");
+                return;
+        }
         if (chiefSymp.size() > 0 && presentSymp.size() > 0) {
             for (String cli : chiefSymp) {
                 if (!presentSymp.contains(cli)) {

+ 21 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0095.java

@@ -12,6 +12,7 @@ import com.lantone.qc.pub.model.entity.GeneralDesc;
 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.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -78,7 +79,7 @@ public class FIRC0095 extends QCCatalogue {
                 /* 取现病史中一般情况之后的疾病名称 */
                 if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
                     String lastGeneral = generals.get(generals.size() - 1).getName();
-                    int lastGeneralIndex = presentText.indexOf(lastGeneral);
+                    int lastGeneralIndex = presentText.lastIndexOf(lastGeneral);
                     for (Diag presentDiag : presentDiags) {
                         if (presentDiag.getNegative() != null || presentDiag.getHospitalDiagName().contains("否认")) {
                             continue;
@@ -93,9 +94,28 @@ public class FIRC0095 extends QCCatalogue {
                 }
             }
         }
+
+        if(presentPastDiags!= null && presentPastDiags.size()>0){
+            List<String> markStr = Arrays.asList("病以来", "病来");
+            String text = initialDiagLabel.getText();
+            for (String str : markStr) {
+                if(text.contains(str)){
+                    String textStr = text.substring(text.lastIndexOf(str));
+                    presentPastDiags = presentPastDiags.stream().filter(obj->textStr.contains(obj)).collect(Collectors.toSet());
+                    break;
+                }
+            }
+        }
+
         /* 取既往史中疾病名称 */
         if (pastLabel != null && StringUtils.isNotEmpty(pastLabel.getText())) {
             List<Diag> pastDiags = pastLabel.getDiags();
+            String text = pastLabel.getText();
+            String pattern = "[\\s\\S]*(?=妊娠).{0,4}((?=高血压)|(?=糖尿病))[\\s\\S]*";
+            if(text.matches(pattern) && ListUtil.isNotEmpty(pastDiags)){
+                List<String> dis = Arrays.asList("高血压", "糖尿病");
+                pastDiags = pastDiags.stream().filter(obj -> !dis.contains(obj.getHospitalDiagName())).collect(Collectors.toList());
+            }
             addDiagHospitalName(presentPastDiags, pastDiags, pastLabel.getText());
         } else {            //结构化数据
             List<Diag> pastDiags = new ArrayList<>();

+ 7 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC03086.java

@@ -40,16 +40,21 @@ public class FIRC03086 extends QCCatalogue {
             status.set("0");
             return;
         }
+        //规则匹配增加
+        if (structureV.contains("护理") && (structureV.contains("一级") || structureV.contains("二级") || structureV.contains("三级") || structureV.contains("Ⅰ级") || structureV.contains("Ⅱ级") || structureV.contains("Ⅲ级"))) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(structureV) && structureV.contains("护理")) {
             findText = true;
         }
         if (treatPlanLabel.getNursingLevel() != null) {
-            if (findText && !treatPlanLabel.getNursingLevel().getName().contains("护理常规")) {
+            if (findText && !"护理常规".equals(treatPlanLabel.getNursingLevel().getName())) {
                 status.set("0");
                 return;
             }
         }
-        if (treatPlanLabel.getNursingLevel() == null || treatPlanLabel.getNursingLevel().getName().contains("护理常规")) {
+        if (treatPlanLabel.getNursingLevel() == null || "护理常规".equals(treatPlanLabel.getNursingLevel().getName())) {
             status.set("-1");
             return;
         }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0162.java

@@ -25,6 +25,10 @@ public class FIRP0162 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String nationality = firstpageStructureMap.get(Content.nationality);
+            if(StringUtil.isNotBlank(nationality) && !"中国".equals(nationality)){
+                return;
+            }
             String idNumber = firstpageStructureMap.get(Content.idNumber);
             if (StringUtil.isNotBlank(idNumber)) {
                 for (String word : containList) {

+ 5 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0170.java

@@ -19,13 +19,16 @@ import java.util.Map;
 public class FIRP0170 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() == null){
+        if (inputInfo.getFirstPageRecordDoc() == null) {
+            return;
+        }
+        if (inputInfo.getTransferRecordDocs() == null) {
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String transferDept = firstpageStructureMap.get(Content.transferDept);
-            if (StringUtils.isEmpty(transferDept) || "【转科科室】".equals(transferDept)){
+            if (StringUtils.isEmpty(transferDept) || "【转科科室】".equals(transferDept)) {
                 status.set("-1");
             }
         }

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0181.java

@@ -13,7 +13,7 @@ import java.util.Map;
 /**
  * @ClassName : FIRP0181
  * @Description :未填写
- *  * @Author : 损伤、中毒的外部原因未填写
+ * * @Author : 损伤、中毒的外部原因未填写
  * @Date: 2020-03-16 11:33
  */
 @Component
@@ -25,12 +25,14 @@ public class FIRP0181 extends QCCatalogue {
         }
 
         if (inputInfo.getFirstCourseRecordDoc() != null) {
-            Map<String, String> structureMap = inputInfo.getFirstCourseRecordDoc().getStructureMap();
-            String EDStr = structureMap.get("病例特点");
-            if (StringUtil.isNotBlank(EDStr) && !EDStr.contains("损伤中毒")) {
-                status.set("0");
-                return;
-            }
+            status.set("0");
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getFirstCourseRecordDoc().getStructureMap();
+        String EDStr = structureMap.get("病例特点");
+        if (StringUtil.isNotBlank(EDStr) && !EDStr.contains("损伤中毒")) {
+            status.set("0");
+            return;
         }
 
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0185.java

@@ -18,7 +18,7 @@ import java.util.Map;
 
 /**
  * @ClassName : FIRP0185
- * @Description :药物过敏史未在首页中填报
+ * @Description :药物过敏与既往史不一致
  * @Author : 胡敬
  * @Date: 2020-03-18 14:07
  */

+ 13 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0193.java

@@ -27,24 +27,25 @@ public class FIRP0193 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
-        if (firstPageRecordDoc == null){
+        if (firstPageRecordDoc == null) {
             return;
         }
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
         List<String> operations = new ArrayList<>();
         List<String> operations_first = new ArrayList<>();
-        if (ListUtil.isNotEmpty(operationDocs)) {
-            for (OperationDoc opd : operationDocs) {
-                OperationDiscussionDoc operationDiscussionDoc = opd.getOperationDiscussionDoc();
-                if (operationDiscussionDoc == null) {
-                    continue;
-                }
-                String operativeMethod = operationDiscussionDoc.getStructureMap().get("手术方式");
-                if (StringUtil.isBlank(operativeMethod)){
-                    continue;
-                }
-                operations.add(operativeMethod);
+        if (operationDocs == null) {
+            return;
+        }
+        for (OperationDoc opd : operationDocs) {
+            OperationDiscussionDoc operationDiscussionDoc = opd.getOperationDiscussionDoc();
+            if (operationDiscussionDoc == null) {
+                continue;
+            }
+            String operativeMethod = operationDiscussionDoc.getStructureMap().get("手术方式");
+            if (StringUtil.isBlank(operativeMethod)) {
+                continue;
             }
+            operations.add(operativeMethod);
         }
         Map<String, Object> firstPageRecordDocStructureMap = firstPageRecordDoc.getStructureExtMap();
         List<Map<String, String>> mapList = (List<Map<String, String>>) firstPageRecordDocStructureMap.get(Content.operative_information);

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0196.java

@@ -26,7 +26,7 @@ public class FIRP0196 extends QCCatalogue {
         if (inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getStructureMap() != null) {
             Map<String, String> beHospitalizedStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
             String present = beHospitalizedStructureMap.get(Content.present);
-            if (StringUtil.isNotBlank(present) && !present.contains("昏迷")) {
+            if (StringUtil.isNotBlank(present) && (!present.contains("昏迷") || present.contains("无昏迷"))) {
                 return;
             }
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0209.java

@@ -20,7 +20,7 @@ import java.util.Map;
 @Component
 public class FIRP0209 extends QCCatalogue {
 
-    private List<String> containList = Arrays.asList("农民", "家务", "自由职业者", "个体经营者", "无业人员", "儿童");
+    private List<String> containList = Arrays.asList("退(离)休人员","农民", "家务", "自由职业者", "个体经营者", "无业人员", "儿童");
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");

+ 6 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0211.java

@@ -24,6 +24,12 @@ public class FIRP0211 extends QCCatalogue {
             String dischargeTime = firstpageStructureMap.get(Content.work_unit_phone);
             //工作单位 (无工作单位者无需填写单位邮编、电话及地址)
             String workUnit = firstpageStructureMap.get(Content.work_unit);
+            if(StringUtil.isNotBlank(workUnit)){
+                workUnit = workUnit .replace("-无", "—").replace("无", "—")
+                                    .replace("----", "—") .replace("---", "—")
+                                    .replace("--", "—").replace("-", "—")
+                                    .replace("/", "—").replace("-", "—");
+                        }
             if (StringUtil.isBlank(workUnit) || "—".equals(workUnit)) {
                 return;
             }

+ 6 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0214.java

@@ -24,6 +24,12 @@ public class FIRP0214 extends QCCatalogue {
             String dischargeTime = firstpageStructureMap.get(Content.work_unit_zipcode);
             //工作单位 (无工作单位者无需填写单位邮编、电话及地址)
             String workUnit = firstpageStructureMap.get(Content.work_unit);
+            if(StringUtil.isNotBlank(workUnit)){
+                workUnit = workUnit .replace("-无", "—").replace("无", "—")
+                                    .replace("----", "—") .replace("---", "—")
+                                    .replace("--", "—").replace("-", "—")
+                                    .replace("/", "—").replace("-", "—");
+            }
             if (StringUtil.isBlank(workUnit) || "—".equals(workUnit)) {
                 return;
             }

+ 5 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java

@@ -33,8 +33,12 @@ public class FIRP02905 extends QCCatalogue {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String outWay = firstpageStructureMap.get(Content.outWay);
             String name = firstpageStructureMap.get(Content.receivingOrganization);
+            if (StringUtil.isBlank(outWay)) {
+                status.set("0");
+                return;
+            }
             //医嘱离院不需要接受机构(宁海一院)
-            if (StringUtil.isNotBlank(outWay) && ("医嘱离院".equals(outWay) || "死亡".equals(outWay))) {
+            if (StringUtil.isNotBlank(outWay) && ("医嘱离院".equals(outWay) || "死亡".equals(outWay) || "非医嘱离院".equals(outWay))) {
                 status.set("0");
                 return;
             }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02972.java

@@ -26,7 +26,7 @@ public class FIRP02972 extends QCCatalogue {
             String address = firstpageStructureMap.get(Content.current_address);
             if (!CatalogueUtil.isEmpty(address)) {
                 String suffix = (address.length() <= 5) ? address : (address.substring(address.length() - 5));
-                if (suffix.contains("村")) {
+                if (suffix.contains("村") || suffix.contains("-")) {
                     return;
                 }
                 Pattern p = Pattern.compile("[0-9一二三四五六七八九0123456789]");

+ 1 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03110.java

@@ -5,14 +5,10 @@ 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.DoctorAdviceDoc;
-import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
 import com.lantone.qc.pub.util.DateUtil;
-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.Map;
 
 /**
@@ -26,8 +22,7 @@ public class FIRP03110 extends QCCatalogue {
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
-        if (firstPageRecordDoc!=null) {
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstPageRecordMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String admisDate = firstPageRecordMap.get(Content.dischargeTime);
             String recordTime = firstPageRecordMap.get("创建时间");

+ 39 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03195.java

@@ -0,0 +1,39 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+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 com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03195
+ * @Description :病理诊断编码未填写
+ * @Author : wsy
+ * @Date: 2021-03-16 20:11
+ */
+@Component
+public class FIRP03195 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getFirstPageRecordDoc() == null) {
+            status.set("0");
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String bingDiag = firstpageStructureMap.get(Content.pathologyDiagnose);
+            String cost = firstpageStructureMap.get(Content.pathologyDiagnoseCost);
+            String code = firstpageStructureMap.get("病理诊断编码");
+            if (StringUtil.isBlank(cost) || "0".equals(cost)) {
+                status.set("0");
+                return;
+            }
+            if (StringUtil.isNotBlank(bingDiag) && !bingDiag.equals("[]") && StringUtil.isNotBlank(code)) {
+                status.set("0");
+            }
+        }
+    }
+}

+ 129 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0006.java

@@ -0,0 +1,129 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.PD;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0006
+ * @Description :主诉症状缺少近期时间描述
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0006 extends QCCatalogue {
+    private List<String> containList = Arrays.asList("半年", "术后");
+    private List<String> containTList = Arrays.asList("近期", "最近","近来");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (outputInfo != null && outputInfo.getResult() != null) {
+            Map<String, Object> outputMap = outputInfo.getResult().get("BEH0009");
+            if (outputMap != null && "-1".equals(outputMap.get("status"))) {
+                status.set("0");
+                return;
+            }
+        }
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        if (chiefLabel == null || StringUtil.isBlank(chiefLabel.getText())) {
+            status.set("0");
+            return;
+        }
+//        List<Clinical> clinicalList = chiefLabel.getClinicals();
+//        boolean flag = true;
+//        // 主诉症状不超过1年就不报错,单位不包含“年”
+//        if (ListUtil.isNotEmpty(clinicalList)) {
+//            for (Clinical c : clinicalList) {
+//                List<PD> pds = c.getTimestamp();
+//                if (ListUtil.isNotEmpty(pds)) {
+//                    for (PD pd : pds) {
+//                        if (StringUtil.isNotBlank(pd.getName()) &&
+//                                pd.getName().contains("年") && !"半年".equals(pd.getName())) {
+//                            flag = false;
+//                            break;
+//                        }
+//                    }
+//                }
+//            }
+//            if (flag) {
+//                status.set("0");
+//                return;
+//            }
+//        }
+        String chiefText = chiefLabel.getText();
+        if (StringUtil.isNotBlank(chiefText)) {
+            for (String fild : containList) {
+                if (chiefText.contains(fild)) {
+                    status.set("0");
+                    return;
+                }
+            }
+            List<PD> pds = chiefLabel.getPds();
+            if (pds != null && pds.size() > 0) {
+                if (pds.size() == 2) {
+                    status.set("0");
+                    return;
+                }
+                for (PD pd : pds) {
+                    String pdName = pd.getName();
+                    if (!CatalogueUtil.isEmpty(pdName)) {
+                        if (pdName.contains("天") || pdName.contains("周") || pdName.contains("月")
+                                || pdName.contains("时") || pdName.contains("半年") || pdName.contains("秒")
+                                || pdName.contains("分") || pdName.contains("日") || pdName.contains("今")
+                                || pdName.contains("1年") || pdName.contains("一年")) {
+                            status.set("0");
+                            break;
+                        }
+                    }
+                }
+            } else {
+                if (StringUtil.isNotBlank(chiefLabel.getText())) {
+                    status.set("0");
+                    return;
+                }
+            }
+            for (String fild : containTList) {
+                if (chiefText.contains(fild)) {
+                    status.set("0");
+                    return;
+                }
+            }
+        }
+            /*List<Clinical> clinicals = chiefLabel.getClinicals();
+            if(clinicals.size()>0){
+                for (Clinical clinical:clinicals) {
+                    List<PD> timestamp = clinical.getTimestamp();
+                    if(timestamp != null){
+                        for (PD pd:timestamp) {
+                            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("今")){
+                                    status.set("0");
+                                    break;
+                                }
+                            }
+                        }
+                        if(status.get().equals("0")){
+                            break;
+                        }
+                    }
+                }
+            }else {
+                status.set("0");
+            }*/
+    }
+}

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

@@ -0,0 +1,71 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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())
+                                        && !"手术无手术史".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)) {
+            String pastLabelText = pastLabel.getText();
+            for (String wtOperationName : wtOperationNames) {
+                if (isASMark(pastLabelText, wtOperationName)) {
+                    continue;
+                }
+                status.set("-1");
+                info.set(info.get() + wtOperationName + " ");
+            }
+        }
+    }
+
+    private boolean isASMark(String pastLabelText, String wtOperationName) {
+        String operName = wtOperationName.replace("手术", "");
+        int index = pastLabelText.indexOf(operName);
+        if (index != -1 && index + operName.length() != pastLabelText.length()) {
+            String substring = pastLabelText.substring(index + operName.length(), index + operName.length() + 1);
+            if (substring.equals("\"") || substring.equals("”")) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0079.java

@@ -25,11 +25,11 @@ public class BEH0079 extends QCCatalogue {
         }
         Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
         String vitalLabelSpecial = structureMap.get("专科检查");
-        if(StringUtil.isNotBlank(vitalLabelSpecial)){
+        if (StringUtil.isNotBlank(vitalLabelSpecial) && !"。".equals(vitalLabelSpecial)) {
             status.set("0");
             return;
         }
-        if(vitalLabelSpecial.contains("null")){
+        if (vitalLabelSpecial.contains("null")) {
             status.set("0");
             return;
         }

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

@@ -0,0 +1,80 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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;
+        }
+
+        String pacsText = inputInfo.getBeHospitalizedDoc().getStructureMap().get("辅助检查");
+        if (StringUtil.isBlank(pacsText)) {
+            status.set("0");
+            return;
+        }
+
+        if (StringUtil.isNotBlank(pacsText) && (pacsText.contains("缺") || pacsText.contains("暂无")
+                || "无".equals(pacsText) || "无。".equals(pacsText) || "。".equals(pacsText))) {
+            status.set("0");
+            return;
+        }
+
+        PacsLabel pacsLabel = inputInfo.getBeHospitalizedDoc().getPacsLabel();
+        if (pacsLabel == null || StringUtil.isBlank(pacsLabel.getText())) {
+            status.set("0");
+            return;
+        }
+        boolean findPlace = false;
+        pacsText = pacsLabel.getText();
+        List<Pacs> pacses = pacsLabel.getPacses();
+        if (pacses != null) {
+            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(), Math.min(timeIndex + name.length() + 20, pacsText.length()));
+                    if (beforeTimeText.contains("院") || afterTimeText.contains("院")) {
+                        findPlace = true;
+                        break;
+                    }
+                }
+            }
+        }
+
+        /* 如果模型没找到时间实体,则直接取辅助检查前20个字,判断有没有院字 */
+        if (!findPlace) {
+            String prefixText = pacsText.substring(0, Math.min(20, pacsText.length()));
+            if (prefixText.contains("院") || prefixText.contains("附二") || prefixText.contains("附三") || prefixText.contains("机构")) {
+                findPlace = true;
+            }
+        }
+
+        if (findPlace) {
+            status.set("0");
+            return;
+        }
+    }
+}

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

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0401
+ * @Description : 24小时病历记录姓名未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03181 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");
+            }
+        }
+
+    }
+}

+ 68 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03182.java

@@ -0,0 +1,68 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.Address;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 24小时病历记录出生地未描述
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH03182 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if(inputInfo.getBeHospitalizedDoc() == null){
+            status.set("0");
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (StringUtils.isNotEmpty(structureMap.get("出生地"))) {
+            status.set("0");
+            return;
+        }
+
+        if (StringUtils.isNotEmpty(structureMap.get("籍贯"))) {
+            status.set("0");
+            return;
+        }
+
+        String text = inputInfo.getBeHospitalizedDoc().getPersonalLabel().getText();
+        if (StringUtil.isBlank(text)) {
+            return;
+        }
+        List<Address> addresses = inputInfo.getBeHospitalizedDoc().getPersonalLabel().getAddresses();
+        if (ListUtil.isNotEmpty(addresses)) {
+            long count = addresses.stream().filter(i -> {
+                boolean flag = false;
+                if (i != null && StringUtil.isNotBlank(i.getName())) {
+                    if (i.getName().indexOf("出生") > -1) {
+                        flag = true;
+                    } else {
+                        Pattern pattern = Pattern.compile("[\\s\\S]*(出生|生长)[\\s\\S]{0,5}" + i.getName() + "[\\s\\S]*");
+                        flag = pattern.matcher(text).matches();
+                    }
+                }
+                return flag;
+            }).count();
+            if (count > 0) {
+                status.set("0");
+            }
+        }
+        if (text.contains("出生")|| text.contains("见旧病历") || text.contains("见既往病历")) {
+            status.set("0");
+        }
+    }
+
+}

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

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0402
+ * @Description : 24小时病历记录性别未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03183 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");
+            }
+        }
+
+    }
+}

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

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0404
+ * @Description : 24小时病历记录民族未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03184 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");
+            }
+        }
+
+    }
+}

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

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0403
+ * @Description : 24小时病历记录年龄未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03185 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");
+            }
+        }
+
+    }
+}

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

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0405
+ * @Description : 24小时病历记录职业未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03186 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");
+            }
+        }
+
+    }
+}

+ 56 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03187.java

@@ -0,0 +1,56 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.behospitalized;
+
+import com.google.common.collect.Lists;
+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.label.MaritalLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0407
+ * @Description : 24小时病历记录婚姻未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03187 extends QCCatalogue {
+    List<String> words = Lists.newArrayList("已婚", "离异", "离婚", "丧偶", "未婚", "结婚");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+      /*  “24小时内入出院记录”为空则通过返回,
+        在“24小时内入出院记录”存在的情况下获取其结构化"婚姻",若为空则触发规则*/
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (structureMap != null) {
+            String name = structureMap.get("婚姻");
+            if (StringUtil.isBlank(name)) {
+                status.set("-1");
+            }
+          /*  if (CatalogueUtil.isEmpty(name)) {
+                status.set("-1");
+            }*/
+        }
+/*        MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
+        if (maritalLabel != null) {
+            String maritalText = maritalLabel.getText();
+            if (StringUtil.isNotBlank(maritalText)) {
+                for (String word : words) {
+                    if (maritalText.contains(word)) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            }
+        }*/
+    }
+}

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

@@ -0,0 +1,41 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0409
+ * @Description : 24小时病历记录病史陈述者未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03188 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("关系");
+            String historyPresenter = structureMap.get("病史陈述者");
+            String historyreporter = structureMap.get("病史提供人");
+            String infoSources = structureMap.get("信息来源");
+
+            if(CatalogueUtil.isEmpty(name)
+                    && CatalogueUtil.isEmpty(historyPresenter)
+                    && CatalogueUtil.isEmpty(historyreporter)
+                    && CatalogueUtil.isEmpty(infoSources)){
+                status.set("-1");
+            }
+        }
+
+    }
+}

+ 38 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03189.java

@@ -0,0 +1,38 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0408
+ * @Description : 24小时病历记录联系地址未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03189 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(StringUtil.isEmpty(name) && StringUtil.isEmpty("现住址") && StringUtil.isEmpty("住址")){
+                status.set("-1");
+            }
+        }
+
+    }
+}

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

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : BEH0410
+ * @Description :  24小时病历记录入院日期未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03190 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");
+            }
+        }
+
+    }
+}

+ 62 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03191.java

@@ -0,0 +1,62 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0422
+ * @Description :  24小时病历记录记录日期早于入院日期
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03191 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 nameKey = getKeyByHospital();
+        String admissionDateStr = docStructureMap.get("入院日期");
+        String recordDateStr = docStructureMap.get(nameKey);
+        if (StringUtil.isBlank(admissionDateStr) || StringUtil.isBlank(recordDateStr)) {
+            return;
+        }
+        // 如果时间格式不一致,就不比较 “2020-05-06 14:06” 与 “2020-05-06”
+        if (admissionDateStr.length() != recordDateStr.length() || DateUtil.parseDate(recordDateStr) == null) {
+            return;
+        }
+        Date admissionDate = StringUtil.parseDateTime(admissionDateStr);
+        Date recordDate = StringUtil.parseDateTime(recordDateStr);
+        if (admissionDate == null || recordDate == null) {
+            return;
+        }
+        if (admissionDate.after(recordDate)) {
+            status.set("-1");
+        }
+    }
+    private String getKeyByHospital() {
+        switch (Content.hospital_Id)
+        {
+            case "1":                            //长兴
+            case "2":
+                return "记录日期";
+            default:
+                return "记录时间";
+        }
+    }
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03193.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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;
+
+
+/**
+ * @ClassName : BEH0003
+ * @Description : 主诉字数超过20个字
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH03193 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getBeHospitalizedDoc() == null || inputInfo.getBeHospitalizedDoc().getChiefLabel() == null) {
+            status.set("0");
+            return;
+        }
+        String chiefText = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
+        if (StringUtil.isBlank(chiefText)) {
+            status.set("0");
+            return;
+        }
+        if (StringUtil.isNotBlank(chiefText)) {
+            int chiefTextLength = chiefText.replaceAll("[\\p{Punct}\\pP]", "").length();
+            if (chiefTextLength <= 20) {
+                status.set("0");
+            }
+        }
+    }
+}

+ 28 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH03202.java

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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;
+
+/**
+ * @ClassName : BEH02988
+ * @Description :  24小时病历记录主诉未填写
+ * @Author : 胡敬
+ * @Date: 2020-06-23 19:35
+ */
+@Component
+public class BEH03202 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        if (inputInfo.getBeHospitalizedDoc().getChiefLabel() == null
+                && StringUtil.isBlank(inputInfo.getBeHospitalizedDoc().getChiefLabel().getText())) {
+            status.set("-1");
+        }
+    }
+}

+ 95 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0372.java

@@ -0,0 +1,95 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.MaritalStatus;
+import com.lantone.qc.pub.model.label.MaritalLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 婚姻状况前后不一致
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0372 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+
+        String basicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚育史");
+        String bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻状况");
+        if (StringUtil.isBlank(bhbasicInfoStatus)) {
+            bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻");
+        }
+        if (StringUtil.isBlank(basicInfoStatus) || basicInfoStatus.contains("详见") || StringUtil.isBlank(bhbasicInfoStatus)) {
+            status.set("0");
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("未婚") && (basicInfoStatus.contains("未婚") || basicInfoStatus.contains("未结婚"))) {
+            status.set("0");
+            return;
+        }
+        if (bhbasicInfoStatus.equals("再婚") && (basicInfoStatus.contains("再婚"))) {
+            status.set("0");
+            return;
+        }
+
+        if (StringUtil.isNotBlank(bhbasicInfoStatus) && basicInfoStatus.equals("其他")) {
+            status.set("0");
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("丧偶") &&
+                (basicInfoStatus.contains("已故") || basicInfoStatus.contains("丧偶") || basicInfoStatus.contains("去世") ||
+                        basicInfoStatus.contains("亡故") || basicInfoStatus.contains("已逝") || basicInfoStatus.contains("死"))) {
+            status.set("0");
+            return;
+        }
+
+        if ((bhbasicInfoStatus.equals("离婚") || bhbasicInfoStatus.equals("离异")) &&
+                (basicInfoStatus.contains("离异") || basicInfoStatus.contains("离婚"))) {
+            status.set("0");
+            return;
+        }
+        if (bhbasicInfoStatus.equals("已婚") && (basicInfoStatus.contains("适龄结婚")||basicInfoStatus.contains("适龄婚育"))) {
+            status.set("0");
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("已婚") &&
+                ((basicInfoStatus.contains("结婚") || basicInfoStatus.contains("再婚") || basicInfoStatus.contains("育有") || basicInfoStatus.contains("已婚")) ||
+                ((!basicInfoStatus.contains("离异")|| !basicInfoStatus.contains("离婚")|| !basicInfoStatus.contains("未婚")|| !basicInfoStatus.contains("未结婚"))&&
+                (basicInfoStatus.contains("健康") ||basicInfoStatus.contains("健在") )))) {
+            status.set("0");
+            return;
+        }
+
+        MaritalStatus mts = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus();
+        if (mts != null && StringUtil.isNotBlank(mts.getName())) {
+            String maritalStatus = mts.getName();
+            if (basicInfoStatus.equals(maritalStatus)) {
+                status.set("0");
+                return;
+            }
+        }
+
+        //无婚育史
+        MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
+        if (maritalLabel == null || maritalLabel.getText() == null) {
+            status.set("0");
+        }
+
+        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("结婚")) {
+            return;
+        }
+    }
+
+}

+ 99 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0397.java

@@ -0,0 +1,99 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.entity.Family;
+import com.lantone.qc.pub.model.label.FamilyLabel;
+import com.lantone.qc.pub.model.label.MaritalLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 父母健康状况未描述
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0397 extends QCCatalogue {
+
+    @Override
+    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();
+        if (StringUtils.isNotEmpty(structureMap.get("家庭成员健康情况"))) {
+            status.set("0");
+            return;
+        }
+        FamilyLabel familyLabel = beHospitalizedDoc.getFamilyLabel();
+        MaritalLabel maritalLabel = beHospitalizedDoc.getMaritalLabel();
+
+        String familyText = "", maritalText = "";
+        List<Family> familiesFl = null;
+        List<Family> familiesMl = null;
+        if (familyLabel != null) {
+            familyText = familyLabel.getText();
+            familiesFl = familyLabel.getFamilies();
+        }
+        if (maritalLabel != null && StringUtil.isNotBlank(maritalLabel.getText())) {
+            maritalText = maritalLabel.getText();
+            familiesMl = maritalLabel.getFamily();
+        }
+        if (StringUtil.isNotBlank(familyText)) {
+            familyText = StringUtil.removeBlank(familyText);
+        } else {
+            status.set("0");
+            return;
+        }
+        if ((StringUtil.isNotBlank(familyText)
+                && ((familyText.contains("父") || familyText.contains("双亲") || familyText.contains("母"))
+                && (familyText.contains("已故") || familyText.contains("体健") || familyText.contains("健在") || familyText.contains("去世") || familyText.contains("健康"))
+                || familyText.contains("离世")|| familyText.contains("详见") || familyText.contains("见旧病历") || familyText.contains("见既往病历"))
+                || (StringUtil.isNotBlank(maritalText) && ((maritalText.contains("父") || maritalText.contains("双亲") || maritalText.contains("母"))
+                && (maritalText.contains("已故") || maritalText.contains("体健")|| maritalText.contains("健在") || maritalText.contains("去世") || maritalText.contains("健康"))
+                || maritalText.contains("离世")|| maritalText.contains("详见") || maritalText.contains("见旧病历") || maritalText.contains("见既往病历"))))) {
+            status.set("0");
+            return;
+        }
+        List<Family> familyList = Lists.newArrayList();
+        if (familiesFl != null && familiesFl.size() > 0) {
+            familyList.addAll(familiesFl);
+        }
+        if (familiesMl != null && familiesMl.size() > 0) {
+            familyList.addAll(familiesMl);
+        }
+
+        Pattern p = Pattern.compile("[父母爸妈]");
+        List<Family> filterFamilies = familyList
+                .stream()
+                .filter(
+                        i -> i != null
+                                && StringUtil.isNotBlank(i.getName())
+                                && p.matcher(i.getName()).find()).collect(Collectors.toList());
+        for (Family family : filterFamilies) {
+            if (family.getDead() != null) {
+                status.set("0");
+                return;
+            } else if (family.getHealthCondition() != null && StringUtil.isNotBlank(family.getHealthCondition().getName())) {
+                status.set("0");
+                return;
+            } else if (family.getDiags() != null && family.getDiags().size() > 0) {
+                status.set("0");
+                return;
+            }
+        }
+    }
+
+}

+ 55 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/behospitalized/BEH0454.java

@@ -0,0 +1,55 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.Diag;
+import com.lantone.qc.pub.model.label.PastLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0454
+ * @Description :  既往史未描述既往健康状况
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0454 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (StringUtils.isNotEmpty(structureMap.get("既往健康状况"))) {
+            status.set("0");
+            return;
+        }
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        /* 如果既往史为空或者既往史文本为空,则不报错 */
+        if (pastLabel == null || StringUtil.isBlank(pastLabel.getText())) {
+            status.set("0");
+            return;
+        }
+        if (StringUtils.isNotEmpty(pastLabel.getHeathCondition()) || pastLabel.getText().contains("既往")
+                || pastLabel.getText().contains("详见原病历") || pastLabel.getText().contains("健康状况")
+                || pastLabel.getText().contains("见旧病历") || pastLabel.getText().contains("平素")) {
+            status.set("0");
+            return;
+        }
+        //既往有任一阳性疾病名称,则认为有健康状况
+        List<Diag> diags = pastLabel.getDiags();
+        for (Diag diag : diags) {
+            if (diag.getNegative() == null) {
+                status.set("0");
+                return;
+            }
+        }
+    }
+}

+ 5 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/clinicalblood/CLI0308.java

@@ -28,12 +28,14 @@ public class CLI0308 extends QCCatalogue {
 
         if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
             String regex = ".*(未.*|无.*|否.*).*(输血反应|不良反应).*";
+            String regexSec = "[\\s\\S]*(?=输血过程).{0,25}((?=发热)|(?=胸闷)|(?=过敏反应))[\\s\\S]*";
             for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
                 Map<String, String> cliBStructureMap = cliB.getStructureMap();
-                if (StringUtils.isNotEmpty(cliBStructureMap.get("病历内容")) && (cliBStructureMap.get("病历内容").contains("不良反应")
-                        || cliBStructureMap.get("病历内容").contains("不适") || cliBStructureMap.get("病历内容").contains("未见"))) {
+                if ((StringUtils.isNotEmpty(cliBStructureMap.get("病历内容")) && (cliBStructureMap.get("病历内容").matches(regex) || cliBStructureMap.get("病历内容").matches(regexSec)
+                        || cliBStructureMap.get("病历内容").contains("不良反应") || cliBStructureMap.get("病历内容").contains("不适") || cliBStructureMap.get("病历内容").contains("未见")
+                        || cliBStructureMap.get("病历内容").contains("未觉") || cliBStructureMap.get("病历内容").contains("无")))) {
                     status.set("0");
-                }else {
+                } else {
                     return;
                 }
             }

+ 54 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/crisisvaluereport/CRI0383.java

@@ -0,0 +1,54 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.crisisvaluereport;
+
+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.CrisisValueReportDoc;
+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.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 危急值记录中无报告时间
+ * @author: rengb
+ * @time: 2020/3/19 19:54
+ */
+@Component
+public class CRI0383 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
+        if (ListUtil.isNotEmpty(crisisValueReportDocs)) {
+            crisisValueReportDocs.forEach(crisisValueReportDoc -> {
+                if (StringUtil.isNotBlank(crisisValueReportDoc.getStructureMap().get("病历内容"))) {
+                    /* 湘雅三院相应数据需从危急值内容中截取 */
+                    String reportDate = getReportDate(crisisValueReportDoc.getStructureMap().get("病历内容"));
+                    if (StringUtil.isBlank(reportDate)) {
+                        status.set("-1");
+                    }
+                }
+            });
+        }
+    }
+
+    private String getReportDate(String str) {
+        if (StringUtil.isNotBlank(str)) {
+            Pattern pattern = Pattern.compile("[0-9]{4}年[0-9]+月[0-9]+日[0-9]+时[0-9]+分 " +
+                    "|[0-9]+:[0-9]+ " +
+                    "|[0-9]{4}-[0-9]+-[0-9]+-[0-9]+ [0-9]+:[0-9]+ " +
+                    "|[0-9]{4}年[0-9]+月[0-9]+日[0-9]+ [0-9]+:[0-9]+");
+            Matcher matcher = pattern.matcher(str);
+            if (matcher.find()) {
+                return matcher.group(0);
+            }
+        }
+        return "";
+    }
+
+}

+ 96 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/crisisvaluereport/CRI0384.java

@@ -0,0 +1,96 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.crisisvaluereport;
+
+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 com.lantone.qc.pub.model.doc.CrisisValueReportDoc;
+import com.lantone.qc.pub.model.doc.LisDoc;
+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/19 19:54
+ */
+@Component
+public class CRI0384 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
+        List<LisDoc> lisDocs = inputInfo.getLisDocs();
+        String key = getKeyByHospitalId();
+        if (ListUtil.isNotEmpty(crisisValueReportDocs)) {
+            crisisValueReportDocs.forEach(crisisValueReportDoc -> {
+                if (StringUtil.isNotBlank(crisisValueReportDoc.getStructureMap().get(key))) {
+                    /* 台州相应数据需从危急值内容中截取 */
+                    Boolean report = getReport(crisisValueReportDoc.getStructureMap().get(key),lisDocs);
+                    if (!report) {
+                        status.set("-1");
+                        return;
+                    }
+                }
+            });
+        }
+    }
+
+    private Boolean getReport(String str,List<LisDoc> lisDoc) {
+        if(ListUtil.isEmpty(lisDoc)){
+            return false;
+        }else {
+            boolean flag=false;
+            for (LisDoc doc : lisDoc) {
+                String inspectionName="";
+                String inspectionItem="";
+                String results="";
+                String reportName = doc.getStructureMap().get("报告名称");
+                String inspectionResults = doc.getStructureMap().get("检验结果");
+                String unit = doc.getStructureMap().get("单位");
+                if(StringUtil.isEmpty(reportName) || StringUtil.isEmpty(inspectionResults) || StringUtil.isEmpty(unit)){
+                    continue;
+                }
+                inspectionName=reportName.substring(0,reportName.lastIndexOf("="));
+                inspectionItem=reportName.substring(reportName.lastIndexOf("=")+1,reportName.length());
+                if(inspectionName.contains(";")){
+                    String[] split = inspectionName.split(";");
+                    for (String s : split) {
+                        if(str.contains(s)){
+                            flag=true;
+                        }
+                    }
+                }
+                if(str.contains(inspectionName)){
+                    flag=true;
+                }
+                if(!flag){
+                    continue;
+                }
+                if(!str.contains(inspectionItem)){
+                    continue;
+                }
+                results=inspectionResults+unit;
+                if(!str.contains(results)){
+                    continue;
+                }else {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "35":               //湘雅
+                return "病历内容";
+            default:
+                return "内容";
+        }
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAC0100
+ * @Description : 死亡病例讨论记录中无入院情况
+ * @Author : 胡敬
+ * @Date: 2020-03-19 09:38
+ */
+@Component
+public class DEAC0100 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");
+            }
+        }
+    }
+}

+ 32 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathcasediscuss/DEAC0104.java

@@ -0,0 +1,32 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAC0104
+ * @Description : 死亡病例讨论记录中无抢救经过
+ * @Author : 胡敬
+ * @Date: 2020-03-19 10:20
+ */
+@Component
+public class DEAC0104 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 discussionContent = deathCaseDiscussStructureMap.get("讨论内容");
+            String diagnosisContent = deathCaseDiscussStructureMap.get("入院后诊疗经过");
+            if (!CatalogueUtil.isEmpty(discussionContent) && !CatalogueUtil.isEmpty(discussionContent)) {
+                if (!discussionContent.contains("抢救") && !diagnosisContent.contains("抢救")) {
+                    status.set("-1");
+                }
+            }
+        }
+    }
+}

+ 54 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathcasediscuss/DEAC0109.java

@@ -0,0 +1,54 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.deathcasediscuss;
+
+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.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0109
+ * @Description : 死亡病例讨论记录未在患者死亡1周内完成
+ * @Author : 胡敬
+ * @Date: 2020-03-19 10:45
+ */
+@Component
+public class DEAC0109 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();
+            Map<String, String> deathCaseRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            String deceaseTime = deathCaseDiscussStructureMap.get("死亡时间");
+            if(CatalogueUtil.isEmpty(deceaseTime)){
+                deceaseTime =  deathCaseRecordStructureMap.get("死亡时间");
+            }
+            String key = getKeyByHospitalId();
+            String recordTime = deathCaseDiscussStructureMap.get(key);
+            if (CatalogueUtil.isEmpty(deceaseTime) || CatalogueUtil.isEmpty(recordTime)) {
+                return;
+            }
+            Date deceaseDate = StringUtil.parseDateTime(deceaseTime);
+            Date recordDate = StringUtil.parseDateTime(recordTime);
+            if (deceaseDate.before(recordDate) && CatalogueUtil.compareTime(deceaseDate, recordDate, Long.valueOf(7 * 24 * 60))) {
+                status.set("-1");
+            }
+        }
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "7":               //厦门
+            case "35":
+                return "病历日期";
+            default:
+                return "记录时间";
+        }
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAR0347
+ * @Description : 24小时病历记录无死亡时间
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR03204 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");
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03205.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.deathrecord;
+
+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.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0371
+ * @Description : 24小时病历记录死亡时间未精确到分
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR03205 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();
+            String deathTime = deathRecordStructureMap.get("死亡时间");
+            if (CatalogueUtil.isEmpty(deathTime)) {
+                return;
+            }
+            Date deathDate = StringUtil.parseDateTime(deathTime, CatalogueUtil.processDateFormat(Content.dateFormats));
+            if (null == deathDate) {
+                status.set("-1");
+            }
+        }
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAR0341
+ * @Description : 24小时病历记录无入院诊断
+ * @Author : 胡敬
+ * @Date: 2020-03-18 17:14
+ */
+@Component
+public class DEAR03206 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");
+            }
+        }
+    }
+}

+ 37 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03207.java

@@ -0,0 +1,37 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0340
+ * @Description : 24小时病历记录无入院情况
+ * @Author : 胡敬
+ * @Date: 2020-03-18 17:14
+ */
+@Component
+public class DEAR03207 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 (CatalogueUtil.isEmpty(deathRecordStructureMap.get("入院情况"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("实验室检查"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("影像学检查"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("病情摘要"))) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 42 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03208.java

@@ -0,0 +1,42 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.deathrecord;
+
+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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0342
+ * @Description : 24小时病历记录无诊疗经过
+ * @Author : 胡敬
+ * @Date: 2020-03-18 17:14
+ */
+@Component
+public class DEAR03208 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();
+            String key = getKeyByHospitalId();
+            if (CatalogueUtil.isEmpty(deathRecordStructureMap.get(key))) {
+                status.set("-1");
+            }
+        }
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "1":               //长兴
+            case "2":
+            case "5":
+            case "35":
+                return "诊疗经过";
+            default:
+                return "诊疗经过(重点记录病情演变、抢救经过)";
+        }
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAR0345
+ * @Description : 24小时病历记录无死亡原因
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:37
+ */
+@Component
+public class DEAR03209 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");
+            }
+        }
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAR0346
+ * @Description : 24小时病历记录无死亡诊断
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR03210 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");
+            }
+        }
+    }
+}

+ 48 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR03211.java

@@ -0,0 +1,48 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.deathrecord;
+
+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.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0098
+ * @Description : 24小时病历记录未在患者死亡后24小时内完成
+ * @Author : 胡敬
+ * @Date: 2020-03-19 11:08
+ */
+@Component
+public class DEAR03211 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();
+            String deceaseTime = deathRecordStructureMap.get("死亡时间");
+            String key = getKeyByHospitalId();
+            String recordTime = deathRecordStructureMap.get(key);
+            if (CatalogueUtil.isEmpty(deceaseTime) || CatalogueUtil.isEmpty(recordTime)) {
+                return;
+            }
+            Date deceaseDate = StringUtil.parseDateTime(deceaseTime);
+            Date recordDate = StringUtil.parseDateTime(recordTime);
+            if (deceaseDate.before(recordDate) && CatalogueUtil.compareTime(deceaseDate, recordDate, Long.valueOf(24 * 60))) {
+                status.set("-1");
+            }
+        }
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "7":               //厦门
+                return "病历日期";
+            default:
+                return "记录时间";
+        }
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 : DEAR0347
+ * @Description : 死亡记录无死亡时间
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR0347 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");
+            }
+        }
+    }
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/difficultcasediscuss/DIF0121.java

@@ -28,7 +28,7 @@ public class DIF0121 extends QCCatalogue {
         if (difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size() > 0) {
             for (DifficultCaseDiscussDoc dcdd : difficultCaseDiscussDocs) {
                 Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("主持人小结意见");
+                String diisDate = dcddStructureMap.get("主持人小结");
                 if (CatalogueUtil.isEmpty(diisDate)) {
                     status.set("-1");
                     break;

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

@@ -29,7 +29,7 @@ public class DIF0553 extends QCCatalogue {
         if (difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size() > 0) {
             for (DifficultCaseDiscussDoc dcdd : difficultCaseDiscussDocs) {
                 Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("记录医生签名");
+                String diisDate = dcddStructureMap.get("记录医生");
                 if (CatalogueUtil.isEmpty(diisDate)) {
                     status.set("-1");
                     break;

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

@@ -45,6 +45,7 @@ public class FIRC0093 extends QCCatalogue {
                     }
                     boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
                     if (firc) {
+                        info.set("("+admisTime+"-"+couDate+")");
                         status.set("-1");
                     }
                 }
@@ -59,6 +60,7 @@ public class FIRC0093 extends QCCatalogue {
                     }
                     boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
                     if (firc) {
+                        info.set("("+admisTime+"-"+date_out.toString()+")");
                         status.set("-1");
                     }
                 }

+ 0 - 61
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC03086.java

@@ -1,61 +0,0 @@
-package com.lantone.qc.kernel.catalogue.hospital.changshaxy.firstcourserecord;
-
-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.FirstCourseRecordDoc;
-import com.lantone.qc.pub.model.label.TreatPlanLabel;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : FIRC03086
- * @Description : 治疗措施不具体(缺护理级别)
- * @Author : wsy
- * @Date: 2021-01-07 15:21
- */
-@Component
-public class FIRC03086 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
-        if (firstCourseRecordDoc == null) {
-            status.set("0");
-            return;
-        }
-        TreatPlanLabel treatPlanLabel = firstCourseRecordDoc.getTreatPlanLabel();
-        if (treatPlanLabel == null) {
-            status.set("0");
-            return;
-        }
-        String text = treatPlanLabel.getText();
-        boolean findText = false;
-        if (StringUtil.isNotBlank(text) && text.contains("护理")) {
-            findText = true;
-        }
-        Map<String, String> structureMap = firstCourseRecordDoc.getStructureMap();
-        String structureV = structureMap.get("诊疗计划");
-        if (StringUtil.isBlank(structureV) && StringUtil.isBlank(text)) {
-            status.set("0");
-            return;
-        }
-        if (structureV.contains("一级") || structureV.contains("二级") || structureV.contains("三级")) {
-            status.set("0");
-            return;
-        }
-        if (StringUtil.isNotBlank(structureV) && structureV.contains("护理")) {
-            findText = true;
-        }
-        if (treatPlanLabel.getNursingLevel() != null) {
-            if (findText && !treatPlanLabel.getNursingLevel().getName().contains("护理常规")) {
-                status.set("0");
-                return;
-            }
-        }
-        if (treatPlanLabel.getNursingLevel() == null || treatPlanLabel.getNursingLevel().getName().contains("护理常规")) {
-            status.set("-1");
-            return;
-        }
-    }
-}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP0183.java

@@ -29,7 +29,7 @@ public class FIRP0183 extends QCCatalogue {
                 return;
             }
             if (!CatalogueUtil.compareToken(s, s1)) {
-                status.set("-1");
+//                status.set("-1");
             }
         }
     }

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03237.java

@@ -27,16 +27,18 @@ public class FIRP03237 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String admissionTime = firstpageStructureMap.get(Content.admisTime);
+            if (admissionTime.equals("-")) {
+                status.set("0");
+                return;
+            }
             //创建SimpleDateFormat对象实例并定义好转换格式
             // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date date=null;
+            Date date = null;
             try {
-                date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(admissionTime);
-                if (!admissionTime.equals("-")){
-                    status.set("-1");
-                    return;
-                }
-            }catch (Exception e) {
+                date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(admissionTime);
+                status.set("0");
+                return;
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }

+ 7 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03238.java

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Component;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03238
  * @Description : 血型填写不在值域范围内
@@ -18,14 +19,15 @@ import java.util.Map;
  */
 @Component
 public class FIRP03238 extends QCCatalogue {
-    private List<String>Rh_list= Arrays.asList("A型","B型","O型","AB型","不详","未查");
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    private List<String> Rh_list = Arrays.asList("A型", "B型", "O型", "AB型", "不详", "未查", "-");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (structureMap!=null){
+            if (structureMap != null) {
                 String bloodType = structureMap.get("血型");
-                if (StringUtil.isNotBlank(bloodType) || !Rh_list.contains(bloodType) || !"-".equals(bloodType)){
+                if (StringUtil.isNotBlank(bloodType) && !Rh_list.contains(bloodType)) {
                     status.set("-1");
                     return;
                 }

+ 7 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03239.java

@@ -20,23 +20,24 @@ import java.util.Map;
  */
 @Component
 public class FIRP03239 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             Map<String, String> structureMap1 = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String admissionTime = structureMap.get(Content.admisTime);
             String dischargeTime = structureMap1.get(Content.dischargeTime);
             //病案首页入院时间和病案首页的出院时间比较,大于出院时间则报错
-            if (StringUtil.isNotBlank(admissionTime) && StringUtil.isNotBlank(dischargeTime)){
+            if (StringUtil.isBlank(admissionTime) || StringUtil.isBlank(dischargeTime)) {
                 status.set("0");
+                return;
             }
-            //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
             try {
-                if (CatalogueUtil.compareDate(admissionTime,admissionTime,-1)){
+                if (CatalogueUtil.compareDate(admissionTime, dischargeTime, -1)) {
                     status.set("-1");
                 }
-            }catch (Exception e) {
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }

+ 5 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03240.java

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Component;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03240
  * @Description : 是否有31天再住院计划填写错误
@@ -18,16 +19,17 @@ import java.util.Map;
  */
 @Component
 public class FIRP03240 extends QCCatalogue {
-    public  List<String> codeTables = Arrays.asList("有","无");
+    public List<String> codeTables = Arrays.asList("有", "无", "-");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String days = firstpageStructureMap.get("三十一天内再住院计划");
-            if (StringUtil.isNotBlank(days) || !days.equals("-") || codeTables.contains(days)){
+            if (StringUtil.isNotBlank(days) && !codeTables.contains(days)) {
                 status.set("-1");
                 return;
             }

+ 3 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03241.java

@@ -17,14 +17,15 @@ import java.util.Map;
 @Component
 public class FIRP03241 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String days = firstpageStructureMap.get("三十一天内再住院计划");
             String objective = firstpageStructureMap.get("再住院目的");
-            if (StringUtil.isBlank(objective)){
+            if (StringUtil.isNotBlank(days) && "有".equals(days) && StringUtil.isBlank(objective)) {
                 status.set("-1");
                 return;
             }

+ 5 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03242.java

@@ -18,8 +18,8 @@ import java.util.Map;
 @Component
 public class FIRP03242 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         //有出院31天再住院计划,“有”时必填,目的填写“-”错误。当为否时,目的可以为“-”。
@@ -27,14 +27,12 @@ public class FIRP03242 extends QCCatalogue {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String objective = firstpageStructureMap.get("再住院目的");
             String rehospitalization = firstpageStructureMap.get(Content.reHospitalization);
-            if (StringUtil.isNotBlank(objective) && StringUtil.isNotBlank(rehospitalization)){
-                status.set("0");
+            if (StringUtil.isBlank(objective) || StringUtil.isBlank(rehospitalization)) {
+                return;
             }
-            if (rehospitalization.equals("有") && !objective.equals("-")){
-                status.set("-1");
-            }
-            if (rehospitalization.equals("否") && objective.equals("-")){
+            if (rehospitalization.equals("有") && objective.equals("-")) {
                 status.set("-1");
+                return;
             }
         }
     }

+ 8 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03245.java

@@ -7,6 +7,8 @@ import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -17,20 +19,22 @@ import java.util.Map;
  */
 @Component
 public class FIRP03245 extends QCCatalogue {
+    public List<String> wordlist = Arrays.asList("有", "无");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String medicine = firstpageStructureMap.get(Content.drugAllergy);
-            if (StringUtil.isNotBlank(medicine)) {
-                status.set("0");
+            if (StringUtil.isBlank(medicine)) {
+                return;
             }
 
             //有或无,取值不能为“-”
-            if(medicine.equals("有") || medicine.equals("无")|| !medicine.equals("-")){
+            if (!wordlist.contains(medicine)) {
                 status.set("-1");
             }
         }

+ 6 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03246.java

@@ -20,21 +20,21 @@ import java.util.regex.Pattern;
 @Component
 public class FIRP03246 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String phone = firstpageStructureMap.get(Content.contact_phone);
-            if (StringUtil.isNotBlank(phone)) {
-                status.set("0");
+            if (StringUtil.isBlank(phone) || phone.equals("-")) {
+                return;
             }
             //匹配所有手机号码
-            String regex="^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$";
-            Pattern pattern=Pattern.compile(regex);
+            String regex = "^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$";
+            Pattern pattern = Pattern.compile(regex);
             Matcher matcher = pattern.matcher(phone);
-            if (matcher.find() || !phone.equals("-")){
+            if (matcher.find()) {
                 status.set("-1");
             }
         }

+ 5 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03247.java

@@ -18,18 +18,19 @@ import java.util.Map;
 @Component
 public class FIRP03247 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String address = firstpageStructureMap.get(Content.contact_address);
-            if (StringUtil.isNotBlank(address)) {
-                status.set("0");
+            if (StringUtil.isBlank(address)) {
+                return;
             }
-            if (!address.equals("-")){
+            if (address.equals("-")) {
                 status.set("-1");
+                return;
             }
         }
     }

+ 10 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03248.java

@@ -19,22 +19,26 @@ import java.util.regex.Pattern;
 @Component
 public class FIRP03248 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String workPhone = firstpageStructureMap.get("工作单位电话");
-            if (StringUtil.isBlank(workPhone)) {
+            if (StringUtil.isBlank(workPhone) || workPhone.contains("-")) {
                 return;
             }
-            //匹配电话或手机号码,如果大于15位则报错
-            String regex="^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\\\d{8}$";
+            //电话号码超过15位报错
+            if (workPhone.length() > 15) {
+                status.set("-1");
+                return;
+            }
+            //匹配电话或手机号码
+            String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\\\d{8}$";
             Pattern pattern = Pattern.compile(regex);
             Matcher matcher = pattern.matcher(workPhone);
-            //电话号码超过15位报错
-            if (matcher.find() && workPhone.length()<15){
+            if (matcher.find()) {
                 status.set("-1");
             }
         }

+ 9 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03250.java

@@ -18,10 +18,11 @@ import java.util.Map;
  */
 @Component
 public class FIRP03250 extends QCCatalogue {
-    private List<String> person_list = Arrays.asList("本人或户主","配偶","子","女","孙子","孙女","外孙子","外孙女","父母","祖父母或外祖父母","兄弟姐妹","同事同学","其他");
+    private List<String> person_list = Arrays.asList("-","本人或户主", "配偶", "子", "女", "孙子", "孙女", "外孙子", "外孙女", "父母", "祖父母或外祖父母", "兄弟姐妹", "同事同学", "其他");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
@@ -29,14 +30,16 @@ public class FIRP03250 extends QCCatalogue {
             String contactName = firstpageStructureMap.get("联系人姓名");
             String relationship = firstpageStructureMap.get("联系人关系");
             String name = firstpageStructureMap.get("姓名");
-            if (StringUtil.isNotBlank(name) &&StringUtil.isNotBlank(contactName)){
-                status.set("0");
+            if (StringUtil.isBlank(name) || StringUtil.isBlank(contactName)) {
+                return;
             }
-            if (person_list.contains(relationship) && StringUtil.isNotBlank(relationship) || !relationship.equals("-")){
+            if (name.equals(relationship)) {
                 status.set("-1");
+                return;
             }
-            if (contactName.equals(name) || !relationship.equals("本人或户主")){
+            if (!person_list.contains(relationship) && StringUtil.isNotBlank(relationship)) {
                 status.set("-1");
+                return;
             }
         }
     }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03255.java

@@ -22,6 +22,10 @@ public class FIRP03255 extends QCCatalogue {
             status.set("0");
             return;
         }
+        if(inputInfo.getOperationDocs() == null){
+            status.set("0");
+            return;
+        }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String info = firstpageStructureMap.get(Content.operative_information);

+ 10 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03260.java

@@ -8,6 +8,8 @@ import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -18,19 +20,21 @@ import java.util.Map;
  */
 @Component
 public class FIRP03260 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    private List<String> wordlist = Arrays.asList("农民", "自由职业者", "个体经营者", "无业人员", "学生", "其他");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()==null){
+        if (inputInfo.getFirstPageRecordDoc() == null) {
             return;
         }
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String workUnit = structureMap.get(Content.work_unit);
             String job = structureMap.get(Content.job);
-            if (StringUtil.isNotBlank(job) || "农名".contains(job) || "无业人员".contains(job) || "学生".contains(job)){
-                status.set("-1");
+            if (StringUtil.isBlank(job) || wordlist.contains(job)) {
+                return;
             }
-            if (StringUtil.isNotBlank(workUnit) && workUnit.equals("-")){
+            if (StringUtil.isBlank(workUnit) || workUnit.equals("-")) {
                 status.set("-1");
             }
         }

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03261.java

@@ -17,12 +17,12 @@ import java.util.Map;
  */
 @Component
 public class FIRP03261 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String householdAddress = structureMap.get(Content.household_address);
-            if (StringUtil.isNotBlank(householdAddress) && !householdAddress.equals("-")){
+            if (StringUtil.isNotBlank(householdAddress) && householdAddress.equals("-")) {
                 status.set("-1");
             }
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03262.java

@@ -22,7 +22,7 @@ public class FIRP03262 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String telephone = structureMap.get(Content.current_address_phone);
-            if (StringUtil.isNotBlank(telephone) && !telephone.equals("-")){
+            if (StringUtil.isNotBlank(telephone) && telephone.equals("-")){
                 status.set("-1");
             }
         }

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03263.java

@@ -17,12 +17,12 @@ import java.util.Map;
  */
 @Component
 public class FIRP03263 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String currentAddress = structureMap.get(Content.current_address);
-            if (StringUtil.isNotBlank(currentAddress) && !currentAddress.equals("-")){
+            if (StringUtil.isNotBlank(currentAddress) && currentAddress.equals("-")) {
                 status.set("-1");
             }
         }

+ 9 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03265.java

@@ -19,19 +19,20 @@ import java.util.Map;
  */
 @Component
 public class FIRP03265 extends QCCatalogue {
-    public List<String> nation_list = Arrays.asList("汉族","蒙古族","回族","藏族","维吾尔族","苗族","彝族","壮族","布依族","朝鲜族","满族","侗族","瑶族"
-    ,"白族","土家族","哈尼族","哈萨克族","傣族","黎族","傈僳族","佤族","畲族","高山族","拉祜族","水族","东乡族","纳西族","景颇族","柯尔克孜族","土族","达斡尔族","仫佬族","羌族","布朗族"
-            ,"撒拉族","毛难族","仡佬族","锡伯族","阿昌族","普米族","塔吉克族","怒族","乌孜别克族","俄罗斯族","鄂温克族","德昂族","保安族","裕固族","京族","塔塔尔族","独龙族"
-            ,"鄂伦春族","赫哲族","门巴族","珞巴族","基诺族","其他","外籍人士");
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public List<String> nation_list = Arrays.asList("汉族", "蒙古族", "回族", "藏族", "维吾尔族", "苗族", "彝族", "壮族", "布依族", "朝鲜族", "满族", "侗族", "瑶族"
+            , "白族", "土家族", "哈尼族", "哈萨克族", "傣族", "黎族", "傈僳族", "佤族", "畲族", "高山族", "拉祜族", "水族", "东乡族", "纳西族", "景颇族", "柯尔克孜族", "土族", "达斡尔族", "仫佬族", "羌族", "布朗族"
+            , "撒拉族", "毛难族", "仡佬族", "锡伯族", "阿昌族", "普米族", "塔吉克族", "怒族", "乌孜别克族", "俄罗斯族", "鄂温克族", "德昂族", "保安族", "裕固族", "京族", "塔塔尔族", "独龙族"
+            , "鄂伦春族", "赫哲族", "门巴族", "珞巴族", "基诺族", "其他", "外籍人士", "-");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String nation = structureMap.get(Content.nation);
-            if (StringUtil.isNotBlank(nation)){
+            if (StringUtil.isBlank(nation)) {
                 status.set("0");
             }
-            if (!nation.equals("-") || nation_list.size()>0 || nation_list.contains(nation)) {
+            if (!nation_list.contains(nation)) {
                 status.set("-1");
                 return;
             }

+ 15 - 11
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03266.java

@@ -19,22 +19,26 @@ import java.util.Map;
  */
 @Component
 public class FIRP03266 extends QCCatalogue {
-    public List<String> place_list = Arrays.asList("北京市","天津市","河北省","山西省","内蒙古","辽宁省",
-            "吉林省","黑龙江省","上海市","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省",
-            "湖北省","湖南省","广东省","广西省","海南省","四川省","重庆市","贵州省","云南省","西藏","陕西省",
-            "甘肃省","青海省","宁夏","新疆","台湾","香港特别行政区","澳门","外籍");
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
-        status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+    public List<String> place_list = Arrays.asList("北京", "天津", "河北", "山西", "内蒙古", "辽宁",
+            "吉林", "黑龙江", "上海", "江苏", "浙江", "安徽", "福建", "江西", "山东", "河南",
+            "湖北", "湖南", "广东", "广西", "海南", "四川", "重庆", "贵州", "云南", "西藏", "陕西",
+            "甘肃", "青海", "宁夏", "新疆", "台湾", "香港特别行政区", "澳门", "外籍");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String nativePlace = structureMap.get(Content.native_place);
-            if (StringUtil.isNotBlank(nativePlace)){
+            if (StringUtil.isBlank(nativePlace)) {
                 status.set("0");
-            }
-            if (place_list.size()>0 && place_list.contains(nativePlace)) {
-                status.set("-1");
                 return;
             }
+            for (String place : place_list) {
+                if (nativePlace.contains(place)) {
+                    status.set("0");
+                    return;
+                }
+            }
         }
     }
 }

+ 5 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03267.java

@@ -20,18 +20,16 @@ import java.util.Map;
  */
 @Component
 public class FIRP03267 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()==null) {
+        if (inputInfo.getFirstPageRecordDoc() == null) {
             return;
         }
-        FirstPageRecordDoc firstPageRecordDoc=new FirstPageRecordDoc();
-        if (firstPageRecordDoc.getStructureMap()!=null){
-            FirstPageRecordDoc pageRecordDoc = inputInfo.getFirstPageRecordDoc();
-            Map<String, String> structureMap = pageRecordDoc.getStructureMap();
+        if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             if (structureMap != null) {
                 String birthPlace = structureMap.get("出生地");
-                if (StringUtil.isNotEmpty(birthPlace) || !birthPlace.equals("-")){
+                if (StringUtil.isNotEmpty(birthPlace) && birthPlace.equals("-")) {
                     status.set("-1");
                     return;
                 }

+ 21 - 19
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03268.java

@@ -6,6 +6,7 @@ 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.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -18,31 +19,32 @@ import java.util.Map;
  */
 @Component
 public class FIRP03268 extends QCCatalogue {
-    private List<String> category_list= Arrays.asList("预防保健科","全科医疗科","内科","呼吸内科专业","消化内科专业","神经内科专业","心血管内科专业","血液内科专业"
-    ,"肾病学专业","内分泌专业","免疫学专业","变态反应专业","老年病专业","其他","外科","普通外科专业","肝脏移植项目","胰腺移植项目","小肠移植项目"
-    ,"神经外科专业","骨科专业","泌尿外科专业","肾脏移植项目","胸外科专业","肺脏移植项目","心脏大血管外科专业","心脏移植项目","烧伤科专业","整形外科专业"
-    ,"妇产科","妇科专业","产科专业","计划生育专业","优生学专业","生殖健康与不孕症专业","妇女保健科","青春期保健专业","围产期保健专业","更年期保健专业","妇女心理卫生专业"
-    ,"妇女营养专业","儿科","新生儿专业","小儿传染病专业","小儿消化专业","小儿呼吸专业","小儿心脏病专业","小儿肾病专业","小儿血液病专业","小儿神经病学专业"
-    ,"小儿内分泌专业","小儿遗传病专业","小儿免疫专业","小儿外科","小儿普通外科专业","小儿骨科专业","小儿泌尿外科专业","小儿胸心外科专业","小儿神经外科专业","儿童保健科"
-    ,"儿童生长发育专业","儿童营养专业","儿童心理卫生专业","儿童五官保健专业","儿童康复专业","眼科","耳鼻咽喉科","耳科专业","鼻科专业","咽喉科专业","口腔科","口腔内科专业"
-    ,"口腔颌面外科专业","正畸专业","口腔修复专业","口腔预防保健专业","皮肤科","皮肤病专业","性传播疾病专业","医疗美容科","精神科","精神病专业","精神卫生专业","药物依赖专业"
-    ,"精神康复专业","社区防治专业","临床心理专业","司法精神专业","传染科","肠道传染病专业","呼吸道传染病专业","肝炎专业","虫媒传染病专业","动物源性传染病专业","蠕虫病专业"
-    ,"结核病科","地方病科","肿瘤科","急诊医学科","康复医学科","运动医学科","职业病科","职业中毒专业","尘肺专业","放射病专业","物理因素损伤专业","职业健康监护专业",
-            "临终关怀科","特种医学与军事医学科","麻醉科","疼痛科","重症医学科","医学检验科","临床体液、血液专业","临床微生物学专业","临床生化检验专业","临床免疫、血清学专业",
-            "临床细胞分子遗传学专业","病理科","医学影像科","X线诊断专业","CT诊断专业","磁共振成像诊断专业","核医学专业","超声诊断专业","心电诊断专业","脑电及脑血流图诊断专业"
-    ,"神经肌肉电图专业","介入放射学专业","放射治疗专业","中医科","内科专业","外科专业","妇产科专业","儿科专业","皮肤科专业","眼科专业","耳鼻咽喉科专业","口腔科专业","肿瘤科专业"
-    ,"骨伤科专业","肛肠科专业","老年病科专业","针灸科专业","推拿科专业","康复医学专业","急诊科专业","预防保健科专业","民族医学科","维吾尔医学","藏医学","蒙医学","彝医学"
-    ,"傣医学","中西医结合科","其他业务科室");
+    private List<String> category_list = Arrays.asList("预防保健科", "全科医疗科", "内科", "呼吸内科专业", "消化内科专业", "神经内科专业", "心血管内科专业", "血液内科专业"
+            , "肾病学专业", "内分泌专业", "免疫学专业", "变态反应专业", "老年病专业", "其他", "外科", "普通外科专业", "肝脏移植项目", "胰腺移植项目", "小肠移植项目"
+            , "神经外科专业", "骨科专业", "泌尿外科专业", "肾脏移植项目", "胸外科专业", "肺脏移植项目", "心脏大血管外科专业", "心脏移植项目", "烧伤科专业", "整形外科专业"
+            , "妇产科", "妇科专业", "产科专业", "计划生育专业", "优生学专业", "生殖健康与不孕症专业", "妇女保健科", "青春期保健专业", "围产期保健专业", "更年期保健专业", "妇女心理卫生专业"
+            , "妇女营养专业", "儿科", "新生儿专业", "小儿传染病专业", "小儿消化专业", "小儿呼吸专业", "小儿心脏病专业", "小儿肾病专业", "小儿血液病专业", "小儿神经病学专业"
+            , "小儿内分泌专业", "小儿遗传病专业", "小儿免疫专业", "小儿外科", "小儿普通外科专业", "小儿骨科专业", "小儿泌尿外科专业", "小儿胸心外科专业", "小儿神经外科专业", "儿童保健科"
+            , "儿童生长发育专业", "儿童营养专业", "儿童心理卫生专业", "儿童五官保健专业", "儿童康复专业", "眼科", "耳鼻咽喉科", "耳科专业", "鼻科专业", "咽喉科专业", "口腔科", "口腔内科专业"
+            , "口腔颌面外科专业", "正畸专业", "口腔修复专业", "口腔预防保健专业", "皮肤科", "皮肤病专业", "性传播疾病专业", "医疗美容科", "精神科", "精神病专业", "精神卫生专业", "药物依赖专业"
+            , "精神康复专业", "社区防治专业", "临床心理专业", "司法精神专业", "传染科", "肠道传染病专业", "呼吸道传染病专业", "肝炎专业", "虫媒传染病专业", "动物源性传染病专业", "蠕虫病专业"
+            , "结核病科", "地方病科", "肿瘤科", "急诊医学科", "康复医学科", "运动医学科", "职业病科", "职业中毒专业", "尘肺专业", "放射病专业", "物理因素损伤专业", "职业健康监护专业",
+            "临终关怀科", "特种医学与军事医学科", "麻醉科", "疼痛科", "重症医学科", "医学检验科", "临床体液、血液专业", "临床微生物学专业", "临床生化检验专业", "临床免疫、血清学专业",
+            "临床细胞分子遗传学专业", "病理科", "医学影像科", "X线诊断专业", "CT诊断专业", "磁共振成像诊断专业", "核医学专业", "超声诊断专业", "心电诊断专业", "脑电及脑血流图诊断专业"
+            , "神经肌肉电图专业", "介入放射学专业", "放射治疗专业", "中医科", "内科专业", "外科专业", "妇产科专业", "儿科专业", "皮肤科专业", "眼科专业", "耳鼻咽喉科专业", "口腔科专业", "肿瘤科专业"
+            , "骨伤科专业", "肛肠科专业", "老年病科专业", "针灸科专业", "推拿科专业", "康复医学专业", "急诊科专业", "预防保健科专业", "民族医学科", "维吾尔医学", "藏医学", "蒙医学", "彝医学"
+            , "傣医学", "中西医结合科", "其他业务科室", "-");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null&&inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             if (structureMap != null) {
                 String dischargeDepartment = structureMap.get("出院科别");
-                if (StringUtil.isNotBlank(dischargeDepartment)){
-                    status.set("0");
+                if (StringUtil.isBlank(dischargeDepartment)) {
+                    return;
                 }
-                if (!dischargeDepartment.equals("-") || category_list.contains(dischargeDepartment)){
+                if (!category_list.contains(dischargeDepartment)) {
                     status.set("-1");
                     return;
                 }

+ 21 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03269.java

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.catalogue.hospital.changshaxy.firstpagerecord;
 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.DateUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 import rx.subjects.PublishSubject;
@@ -12,6 +13,7 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03269
  * @Description : 实际住院天数填写错误
@@ -22,46 +24,52 @@ import java.util.Map;
 public class FIRP03269 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             Map<String, String> structureMap1 = inputInfo.getFirstPageRecordDoc().getStructureMap();
             Map<String, String> structureMap2 = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (structureMap!=null && structureMap1!=null && structureMap2!=null){
+            if (structureMap != null && structureMap1 != null && structureMap2 != null) {
                 String actual = structureMap.get("实际住院天数");
                 String dischargeTime = structureMap1.get("出院时间");
                 String admissionTime = structureMap2.get("入院时间");
-                if (StringUtil.isNotBlank(actual) || !actual.equals("-")){
+                if (StringUtil.isNotBlank(actual) && actual.equals("-")) {
                     status.set("-1");
+                    return;
                 }
                 if (StringUtil.isNotBlank(admissionTime) && StringUtil.isNotBlank(dischargeTime)) {
                     Date date = StringUtil.parseDateTime(dischargeTime);
                     Date date1 = StringUtil.parseDateTime(admissionTime);
-                    daysBetween(date1,date);
-                    status.set("-1");
-                    return;
+                    if (date == null || date1 == null) {
+                        return;
+                    }
+                    int i = daysBetween(DateUtil.dateZeroClear(date1), DateUtil.dateZeroClear(date));
+                    if (Integer.parseInt(actual) != i) {
+                        status.set("-1");
+                        return;
+                    }
                 }
             }
-
         }
     }
+
     /**
      * 计算两个日期之间相差的天数
+     *
      * @param smdate 较小的时间
      * @param bdate  较大的时间
      * @return 相差天数
      * @throws ParseException
      */
-    public static int daysBetween(Date smdate, Date bdate) throws ParseException
-    {
-        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
-        smdate=sdf.parse(sdf.format(smdate));
-        bdate=sdf.parse(sdf.format(bdate));
+    public static int daysBetween(Date smdate, Date bdate) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        smdate = sdf.parse(sdf.format(smdate));
+        bdate = sdf.parse(sdf.format(bdate));
         Calendar cal = Calendar.getInstance();
         cal.setTime(smdate);
         long time1 = cal.getTimeInMillis();
         cal.setTime(bdate);
         long time2 = cal.getTimeInMillis();
-        long between_days=(time2-time1)/(1000*3600*24);
+        long between_days = (time2 - time1) / (1000 * 3600 * 24);
         return Integer.parseInt(String.valueOf(between_days));
     }
 }

+ 10 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03276.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03276
  * @Description : 医疗付费方式填写错误
@@ -17,18 +18,19 @@ import java.util.Map;
  */
 @Component
 public class FIRP03276 extends QCCatalogue {
-    private List<String> payment_Method = Arrays.asList("本市城镇职工基本医疗保险","外埠城镇职工基本医疗保险","本市城乡居民基本医疗保险","外埠城镇居民基本医疗保险",
-            "本市新型农村合作医疗","外埠新型农村合作医疗","贫困救助","商业医疗保险","全公费","全自费","其他社会保险","其他");
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    private List<String> payment_Method = Arrays.asList("本市城镇职工基本医疗保险", "外埠城镇职工基本医疗保险", "本市城乡居民基本医疗保险", "外埠城镇居民基本医疗保险",
+            "本市新型农村合作医疗", "外埠新型农村合作医疗", "贫困救助", "商业医疗保险", "全公费", "全自费", "其他社会保险", "其他", "-");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (structureMap!=null && structureMap.size() > 0){
+            if (structureMap != null && structureMap.size() > 0) {
                 String medicalPaymentMethod = structureMap.get("医疗付费方式");
-                if (StringUtil.isNotBlank(medicalPaymentMethod)){
-                    status.set("0");
+                if (StringUtil.isBlank(medicalPaymentMethod)) {
+                    return;
                 }
-                if (payment_Method.contains(medicalPaymentMethod) || !"-".equals(medicalPaymentMethod)){
+                if (!payment_Method.contains(medicalPaymentMethod)) {
                     status.set("-1");
                     return;
                 }

+ 12 - 11
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03277.java

@@ -8,6 +8,7 @@ import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03277
  * @Description : 患者姓名填写错误
@@ -16,17 +17,17 @@ import java.util.Map;
  */
 @Component
 public class FIRP03277 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-       if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
-           Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-           if (structureMap != null){
-               String name = structureMap.get("姓名");
-               if (StringUtil.isNotEmpty(name) || !name.equals("-")){
-                   status.set("-1");
-                   return;
-               }
-           }
-       }
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            if (structureMap != null) {
+                String name = structureMap.get("姓名");
+                if (StringUtil.isNotEmpty(name) && name.equals("-")) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
     }
 }

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03278.java

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Component;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03278
  * @Description :职业填写错误
@@ -18,21 +19,22 @@ import java.util.Map;
  */
 @Component
 public class FIRP03278 extends QCCatalogue {
-    private List<String>job_list= Arrays.asList("国家公务员","专业技术人员","职员","企业管理人员","工人","农民","学生","现役军人","自由职业者","个体经营者","无业人员"
-    ,"退(离)休人员","其他");
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    private List<String> job_list = Arrays.asList("国家公务员", "专业技术人员", "职员", "企业管理人员", "工人", "农民", "学生", "现役军人", "自由职业者", "个体经营者", "无业人员"
+            , "退(离)休人员", "其他", "-");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (structureMap != null){
+            if (structureMap != null) {
                 String job = structureMap.get(Content.job);
-                if (StringUtil.isNotEmpty(job)){
+                if (StringUtil.isEmpty(job)) {
                     status.set("0");
                 }
                 /**
                  * 职业填写超出值域范围
                  */
-                if (job_list.contains(job) || !job.equals("-")){
+                if (!job_list.contains(job)) {
                     status.set("-1");
                     return;
                 }

+ 6 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03279.java

@@ -19,16 +19,17 @@ import java.util.Map;
  */
 @Component
 public class FIRP03279 extends QCCatalogue {
-    public List<String> marry_list = Arrays.asList("未婚","已婚","丧偶","离婚","其他");
-    public void start(InputInfo inputInfo, OutputInfo outputInfo){
+    public List<String> marry_list = Arrays.asList("未婚", "已婚", "丧偶", "离婚", "其他", "-");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc()!=null && inputInfo.getFirstPageRecordDoc().getStructureMap()!=null){
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> structureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String marry = structureMap.get(Content.marry);
-            if (StringUtil.isNotBlank(marry)){
+            if (StringUtil.isBlank(marry)) {
                 status.set("0");
             }
-            if (!marry.equals("-") || marry_list.size()>0 && marry_list.contains(marry)) {
+            if (!marry_list.contains(marry)) {
                 status.set("-1");
                 return;
             }

+ 9 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03280.java

@@ -7,6 +7,7 @@ import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
+
 /**
  * @ClassName : FIRP03280
  * @Description : 联系人姓名填写错误
@@ -16,8 +17,8 @@ import java.util.Map;
 @Component
 public class FIRP03280 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
         if (inputInfo.getFirstPageRecordDoc() == null) {
-            status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
@@ -25,15 +26,15 @@ public class FIRP03280 extends QCCatalogue {
             String contactName = firstpageStructureMap.get("联系人姓名");
             String relationship = firstpageStructureMap.get("联系人关系");
             String name = firstpageStructureMap.get("姓名");
-            if (StringUtil.isNotBlank(name) &&StringUtil.isNotBlank(contactName)){
-                status.set("0");
-            }
-            if (relationship.contains("本人或户主") && StringUtil.isNotBlank(relationship) || !relationship.equals("-")){
-                status.set("-1");
+            if (StringUtil.isBlank(name) || StringUtil.isBlank(contactName) || contactName.contains("-")) {
+                return;
             }
-            if (!contactName.equals(name)){
-                status.set("-1");
+            if (StringUtil.isNotBlank(relationship) && relationship.contains("本人或户主")) {
+                if (!contactName.equals(name)) {
+                    status.set("-1");
+                }
             }
+
         }
     }
 }

+ 0 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP03282.java

@@ -30,13 +30,6 @@ public class FIRP03282 extends QCCatalogue {
                     return;
                 }
             }
-            if (structureMap1!=null){
-                String diagnosis = structureMap1.get("病理诊断");
-                if (StringUtil.isEmpty(diagnosis) || diagnosis.equals("-")){
-                    status.set("-1");
-                    return;
-                }
-            }
         }
 
     }

+ 2 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/leavehospital/LEA0149.java

@@ -60,6 +60,8 @@ public class LEA0149 extends QCCatalogue {
 
             //如果出院小结结构化数据能取出主诉,则直接用该主诉和入院记录主诉比较
             if (StringUtil.isNotBlank(leaveChief)) {
+                leaveChief=leaveChief.replaceAll(" ","");
+                bhChief=bhChief.replaceAll(" ","");
                 leaveChief = CatalogueUtil.int2ChineseNum(leaveChief.replaceAll("[\\p{Punct}\\pP。-]", ""));
                 if (bhChief.equals(leaveChief)) {
                     status.set("0");

+ 0 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/leavehospital/LEA03192.java


Vissa filer visades inte eftersom för många filer har ändrats