Forráskód Böngészése

Merge remote-tracking branch 'origin/shaoyf/dev' into shaoyf/master

Conflicts:
	dbanaly/src/main/resources/application-dev.yml
	kernel/src/main/resources/bootstrap.yml
louhr 5 éve
szülő
commit
ccece16c7a
72 módosított fájl, 1589 hozzáadás és 1028 törlés
  1. 49 0
      dbanaly/src/main/resources/application-debug.yml
  2. 0 0
      dbanaly/src/main/resources/application-dev.yml
  3. 49 0
      dbanaly/src/main/resources/application-local.yml
  4. 49 0
      dbanaly/src/main/resources/application-master.yml
  5. 49 0
      dbanaly/src/main/resources/application-test.yml
  6. 24 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0001.java
  7. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0003.java
  8. 14 13
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0005.java
  9. 12 28
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0006.java
  10. 5 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0009.java
  11. 2 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java
  12. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0023.java
  13. 4 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02909.java
  14. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02918.java
  15. 15 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02980.java
  16. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0440.java
  17. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0441.java
  18. 5 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0495.java
  19. 35 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI03036.java
  20. 35 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI03037.java
  21. 45 45
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0562.java
  22. 51 48
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0536.java
  23. 42 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0538.java
  24. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0539.java
  25. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0540.java
  26. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0541.java
  27. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0542.java
  28. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0543.java
  29. 51 48
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0544.java
  30. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0545.java
  31. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0546.java
  32. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0547.java
  33. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0548.java
  34. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0549.java
  35. 43 40
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0550.java
  36. 51 48
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0551.java
  37. 6 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0557.java
  38. 35 31
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0343.java
  39. 35 31
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0344.java
  40. 38 38
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0121.java
  41. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java
  42. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0092.java
  43. 7 23
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0093.java
  44. 9 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0500.java
  45. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0173.java
  46. 31 30
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0209.java
  47. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0222.java
  48. 35 32
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02883.java
  49. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02885.java
  50. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02886.java
  51. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02992.java
  52. 26 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02993.java
  53. 10 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0322.java
  54. 41 45
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0649.java
  55. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0650.java
  56. 22 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE03025.java
  57. 40 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0144.java
  58. 18 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02985.java
  59. 43 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02986.java
  60. 5 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03015.java
  61. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03022.java
  62. 48 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03023.java
  63. 36 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03024.java
  64. 3 4
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/FirstCourseRecordAI.java
  65. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java
  66. 0 0
      kernel/src/main/resources/bootstrap.yml
  67. 1 0
      public/src/main/java/com/lantone/qc/pub/Content.java
  68. 3 1
      trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfCrisisValueReportDocTrans.java
  69. 2 1
      trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfDeathCaseDiscussDocTrans.java
  70. 2 1
      trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfDifficultCaseDiscussDocTrans.java
  71. 8 8
      trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfFirstCourseRecordDocTrans.java
  72. 1 2
      trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfOperationDocTrans.java

+ 49 - 0
dbanaly/src/main/resources/application-debug.yml

@@ -0,0 +1,49 @@
+spring:
+  datasource:
+    name: druidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      lantone:
+        driver-class-name: com.mysql.jdbc.Driver
+        url: jdbc:mysql://192.168.2.236:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        username: root
+        password: lantone
+        initial-size: 8
+        min-idle: 1
+        max-active: 20
+        max-wait: 60000
+        time-between-eviction-runsMillis: 60000
+        min-evictable-idle-timeMillis: 300000
+        validation-query: select 'x' FROM DUAL
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true
+        max-open-prepared-statements: 20
+        max-pool-prepared-statement-per-connection-size: 20
+        filters: stat
+        connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+        use-global-data-source-stat: true
+  redis:
+    database: 10
+    host: 192.168.2.236
+    port: 6379
+    password: lantone
+    timeout: 2000
+    lettuce:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-wait: -1ms
+        max-idle: 8
+
+xml-is-encryped: true
+
+CRF:
+  url: http://192.168.2.234:3456/api/mr_info_ex/entity_predict
+
+Similarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
+
+ChiefPresentSimilarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

dbanaly/src/main/resources/application-db.yml → dbanaly/src/main/resources/application-dev.yml


+ 49 - 0
dbanaly/src/main/resources/application-local.yml

@@ -0,0 +1,49 @@
+spring:
+  datasource:
+    name: druidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      lantone:
+        driver-class-name: com.mysql.jdbc.Driver
+        url: jdbc:mysql://192.168.2.121:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        username: root
+        password: QuGDHNG35r
+        initial-size: 8
+        min-idle: 1
+        max-active: 20
+        max-wait: 60000
+        time-between-eviction-runsMillis: 60000
+        min-evictable-idle-timeMillis: 300000
+        validation-query: select 'x' FROM DUAL
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true
+        max-open-prepared-statements: 20
+        max-pool-prepared-statement-per-connection-size: 20
+        filters: stat
+        connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+        use-global-data-source-stat: true
+  redis:
+    database: 10
+    host: 192.168.2.121
+    port: 6379
+    password: lantone
+    timeout: 2000
+    lettuce:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-wait: -1ms
+        max-idle: 8
+
+xml-is-encryped: true
+
+CRF:
+  url: http://192.168.2.234:3456/api/mr_info_ex/entity_predict
+
+Similarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
+
+ChiefPresentSimilarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

+ 49 - 0
dbanaly/src/main/resources/application-master.yml

@@ -0,0 +1,49 @@
+spring:
+  datasource:
+    name: druidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      lantone:
+        driver-class-name: com.mysql.jdbc.Driver
+        url: jdbc:mysql://192.168.2.122:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        username: root
+        password: lantone
+        initial-size: 8
+        min-idle: 1
+        max-active: 20
+        max-wait: 60000
+        time-between-eviction-runsMillis: 60000
+        min-evictable-idle-timeMillis: 300000
+        validation-query: select 'x' FROM DUAL
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true
+        max-open-prepared-statements: 20
+        max-pool-prepared-statement-per-connection-size: 20
+        filters: stat
+        connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+        use-global-data-source-stat: true
+  redis:
+    database: 10
+    host: 192.168.2.122
+    port: 6379
+    password: lantone
+    timeout: 2000
+    lettuce:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-wait: -1ms
+        max-idle: 8
+
+xml-is-encryped: true
+
+CRF:
+  url: http://192.168.2.234:3456/api/mr_info_ex/entity_predict
+
+Similarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
+
+ChiefPresentSimilarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

+ 49 - 0
dbanaly/src/main/resources/application-test.yml

@@ -0,0 +1,49 @@
+spring:
+  datasource:
+    name: druidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      lantone:
+        driver-class-name: com.mysql.jdbc.Driver
+        url: jdbc:mysql://192.168.2.241:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        username: root
+        password: lantone
+        initial-size: 8
+        min-idle: 1
+        max-active: 20
+        max-wait: 60000
+        time-between-eviction-runsMillis: 60000
+        min-evictable-idle-timeMillis: 300000
+        validation-query: select 'x' FROM DUAL
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true
+        max-open-prepared-statements: 20
+        max-pool-prepared-statement-per-connection-size: 20
+        filters: stat
+        connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+        use-global-data-source-stat: true
+  redis:
+    database: 10
+    host: 192.168.2.241
+    port: 6379
+    password: lantone
+    timeout: 2000
+    lettuce:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-wait: -1ms
+        max-idle: 8
+
+xml-is-encryped: true
+
+CRF:
+  url: http://192.168.2.234:3456/api/mr_info_ex/entity_predict
+
+Similarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
+
+ChiefPresentSimilarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

+ 24 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0001.java

@@ -16,7 +16,7 @@ import java.util.List;
 
 /**
  * @ClassName : BEH0001
- * @Description : 症状缺少时间描述
+ * @Description : 症状缺少时间描述(只要有时间就可以)
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28
  */
@@ -37,7 +37,22 @@ public class BEH0001 extends QCCatalogue {
             status.set("0");
             return;
         } else {
-            List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getChiefLabel().getClinicals();
+            List<PD> pds = chiefLabel.getPds();
+            if (pds != null && pds.size() > 0) {
+                for (PD pd : pds) {
+                    String pdName = pd.getName();
+                    if (StringUtil.isNotBlank(pdName)) {
+                        if (pdName.contains("天") || pdName.contains("周") || pdName.contains("月")
+                                || pdName.contains("时") || pdName.contains("秒") || pdName.contains("半年")
+                                || pdName.contains("日") || pdName.contains("今") || pdName.contains("余年")
+                                || pdName.contains("年") || pdName.contains("分") || isDate(pdName)) {
+                            status.set("0");
+                            break;
+                        }
+                    }
+                }
+            }
+            /*List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getChiefLabel().getClinicals();
             if (clinicals.size() > 0) {
                 for (Clinical clinical : clinicals) {
                     String clinicalName = clinical.getName();
@@ -50,10 +65,14 @@ public class BEH0001 extends QCCatalogue {
                         }
                     }
                 }
-            }
+            }*/
         }
-        if (StringUtils.isNotEmpty(info.get())) {
+        /*if (StringUtils.isNotEmpty(info.get())) {
             status.set("-1");
-        }
+        }*/
+    }
+    private boolean isDate(String pdName) {
+        String regex = "[0-9]{4}.?[0-9]{2}.?[0-9]{2}";
+        return pdName.matches(regex);
     }
 }

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

@@ -28,7 +28,8 @@ public class BEH0003 extends QCCatalogue {
         }
         String chiefText = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
         if (StringUtil.isNotBlank(chiefText)) {
-            int chiefTextLength = chiefText.replaceAll("[\\p{Punct}\\pP]", "").length();
+            String s = chiefText.trim();
+            int chiefTextLength = s.length();
             if (chiefTextLength <= 20) {
                 status.set("0");
             }

+ 14 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0005.java

@@ -34,8 +34,9 @@ public class BEH0005 extends QCCatalogue {
         List<PD> pds = chiefLabel.getPds();
         String chiefText = chiefLabel.getText();
         if (StringUtil.isNotBlank(chiefText)) {
-            chiefText = chiefText.replace("月经", "");/* 月经这个词会影响逻辑判断,这里把月经这个词去除 */
-            if (chiefText.contains("检查") || chiefText.contains("术后") || chiefText.contains("药物")) {
+//            chiefText = chiefText.replace("月经", "");/* 月经这个词会影响逻辑判断,这里把月经这个词去除 */
+            if (chiefText.contains("检查") || chiefText.contains("术后")
+                    || chiefText.contains("药物") || chiefText.contains("月经") || chiefText.contains("停经")) {
                 return;
             } else {
                 List<String> words = Lists.newArrayList("年", "月", "周", "天", "日", "时", "分");
@@ -45,25 +46,25 @@ public class BEH0005 extends QCCatalogue {
                     if (StringUtil.isBlank(name)) {
                         continue;
                     }
-                    for (String word : words) {
+                    for (int i = 0; i < words.size(); i++) {
+                        String word = words.get(i);
                         if (name.contains(word)) {
-                            timeIndex.add(chiefText.indexOf(word));
+                            timeIndex.add(i);
                             break;
                         }
                     }
-
                 }
             }
-            if (timeIndex.size() > 0) {
-                int min = timeIndex.get(0);
-                for (Integer data : timeIndex) {
-                    if (data < min) {
-                        min = data;
+            if (timeIndex.size() <= 1) {
+                return;
+            }
+            for (int i = 0; i < timeIndex.size(); i++) {
+                for (int j = i + 1; j < timeIndex.size(); j++) {
+                    if (timeIndex.get(i) > timeIndex.get(j)) {
+                        status.set("-1");
+                        return;
                     }
                 }
-                if (min != timeIndex.get(0)) {
-                    status.set("-1");
-                }
             }
         }
     }

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

@@ -9,19 +9,22 @@ 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;
 
 
 /**
  * @ClassName : BEH0006
  * @Description :主诉症状缺少近期时间描述
+ * 1.张志勇提议如果主诉中包含术后不报
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28
  */
 @Component
 public class BEH0006 extends QCCatalogue {
+    private List<String> containList = Arrays.asList("半年", "术后");
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
+//        status.set("0");
         if (inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             return;
@@ -32,9 +35,13 @@ public class BEH0006 extends QCCatalogue {
             return;
         }
         String chiefText = chiefLabel.getText();
-        if (StringUtil.isNotBlank(chiefText) && chiefText.contains("半年")) {
-            status.set("0");
-        } else {
+        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) {
@@ -54,29 +61,6 @@ public class BEH0006 extends QCCatalogue {
                     }
                 }
             }
-            /*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");
-            }*/
         }
-    }
+     }
 }

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

@@ -24,7 +24,7 @@ import java.util.Map;
 @Component
 public class BEH0009 extends QCCatalogue {
     private List<String> containList = Arrays.asList("检查", "术后", "药物", "发现", "误服", "确诊", "经", "异常", "诊断"
-            , "示", "超", "伤", "术");
+            , "示", "超", "伤", "术", "复查", "体检", "血透" ,"血液透析");
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         if (inputInfo.getBeHospitalizedDoc() == null) {
@@ -50,6 +50,10 @@ public class BEH0009 extends QCCatalogue {
                 return;
             }
             List<Diag> diags = chiefLabel.getDiags();
+            if(diags.size()>0){
+                status.set("0");
+                return;
+            }
             if (diags != null && diags.size() > 0) {
                 for (Diag diag : diags) {
                     String hospitalDiagName = diag.getHospitalDiagName();

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

@@ -119,6 +119,8 @@ public class BEH0011 extends QCCatalogue {
                 double likeRate = jsonArray.getDoubleValue(1);
                 if (likeRate > 0.85) {
                     matchSum++;
+                } else if (symptom.contains(presentPastDiag) || presentPastDiag.contains(symptom)) {
+                    matchSum++;
                 } else {
                     infoStr = CatalogueUtil.concatInfo(infoStr, presentPastDiag);
                 }

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

@@ -36,7 +36,7 @@ public class BEH0023 extends QCCatalogue {
         List<Treat> treats = presentLabel.getTreats();
         List<Operation> operations = presentLabel.getOperations();
         List<Medicine> medicines = presentLabel.getMedicines();
-        if (lises == null && pacses.size() == 0 && treats.size() == 0 && operations.size() == 0 && medicines.size() == 0) {
+        if (lises.size() == 0 && pacses.size() == 0 && treats.size() == 0 && operations.size() == 0 && medicines.size() == 0) {
             status.set("-1");
         }
         //添加硬规则

+ 4 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02909.java

@@ -15,6 +15,8 @@ import java.util.List;
 /**
  * @ClassName : BEH02909
  * @Description : 目前使用药物情况与现病史描述不一致
+ * 两者都不为空
+ *现病史中出现的药去目前使用药物情况找,如果找不到就报
  * @Author : 胡敬
  * @Date: 2020-06-11 16:10
  */
@@ -27,16 +29,12 @@ public class BEH02909 extends QCCatalogue {
             status.set("0");
             return;
         }
-        String drugsCurrentlyInUse = inputInfo.getBeHospitalizedDoc().getStructureMap().get("目前使用的药物");
+        String drugsCurrentlyInUse = inputInfo.getBeHospitalizedDoc().getStructureMap().get("长期用药");
         if (StringUtil.isBlank(drugsCurrentlyInUse)) {
             status.set("0");
             return;
         }
-        /*if (drugsCurrentlyInUse.contains("见现病史")) {
-            status.set("0");
-            return;
-        }*/
-        /*List<String> drug = getDrug(drugsCurrentlyInUse);*/
+
         PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
         if (presentLabel == null) {
             status.set("0");

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

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

+ 15 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02980.java

@@ -35,7 +35,7 @@ public class BEH02980 extends QCCatalogue {
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
 
     private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
-    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
+    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";", "门脉高压症", "高尿酸血症", "高脂血症");
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
@@ -94,6 +94,7 @@ public class BEH02980 extends QCCatalogue {
             if (StringUtils.isNotEmpty(a1) && "否认".equals(a1)) {
                 Negative negative = new Negative();
                 negative.setName("否认");
+                diag.setNegative(negative);
                 pastDiags.add(diag);
             } else if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
                 pastDiags.add(diag);
@@ -106,6 +107,7 @@ public class BEH02980 extends QCCatalogue {
             if  (StringUtils.isNotEmpty(a1) && "否认".equals(a1)) {
                 Negative negative = new Negative();
                 negative.setName("否认");
+                diag.setNegative(negative);
                 pastDiags.add(diag);
             } else if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
                 pastDiags.add(diag);
@@ -129,7 +131,7 @@ public class BEH02980 extends QCCatalogue {
                 String dgname = jsonArray.getString(0);
                 /* 相似度分数 */
                 double likeRate = jsonArray.getDoubleValue(1);
-                if (likeRate > 0.99) {
+                if (likeRate > 0.95) {
                     matchSum++;
                     if (StringUtils.isEmpty(infoStr)) {
                         infoStr = negdiag;
@@ -151,16 +153,17 @@ public class BEH02980 extends QCCatalogue {
     private List<String> extract_diags(List<Diag> diags, List<String> pos_diags, List<String> neg_diags ) {
         List<String> dgs = new ArrayList<>();
         for (Diag dg:diags) {
-            String dgname = dg.getHospitalDiagName();
-            if (dg.getNegative()==null) {
-                if (!pos_diags.contains(dgname)) {
-                    pos_diags.add(dgname);
-                }
-            }
-            else {
-                if (!neg_diags.contains(dgname)) {
-                    neg_diags.add(dgname);
-                    dgs.add(dgname);
+            if (isFilter(dg.getHospitalDiagName())) {
+                String dgname = dg.getHospitalDiagName();
+                if (dg.getNegative() == null) {
+                    if (!pos_diags.contains(dgname)) {
+                        pos_diags.add(dgname);
+                    }
+                } else {
+                    if (!neg_diags.contains(dgname)) {
+                        neg_diags.add(dgname);
+                        dgs.add(dgname);
+                    }
                 }
             }
         }

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

@@ -21,14 +21,14 @@ import java.util.Map;
 public class BEH0440 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         /**
-         * 台州只传一个 地址,在trans转成了联系地址,这里将联系地址认为就是户口地址
+         * 邵逸夫有户口地址
          */
         if (inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             return;
         }
         Map<String, String> bhMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if (StringUtil.isNotBlank(bhMap.get("联系地址"))) {
+        if (StringUtil.isNotBlank(bhMap.get("户口地址"))) {
             status.set("0");
         }
     }

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

@@ -33,7 +33,7 @@ public class BEH0441 extends QCCatalogue {
             return;
         }
         List<String> words = Lists.newArrayList("胃纳", "食纳", "食欲", "未纳", "纳眠", "饮食", "睡眠"
-                , "禁食", "未食", "鼻饲", "饮");
+                , "禁食", "未食", "鼻饲", "饮", "奶");
         String presentText = presentLabel.getText();
         if (StringUtil.isNotBlank(presentText)) {
             for (String word : words) {

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

@@ -33,6 +33,11 @@ public class BEH0495 extends QCCatalogue {
         String shPerson = structureMap.get("审核人");
         String jlDate = structureMap.get("记录日期");
         String shDate = structureMap.get("审核日期");
+        boolean before = StringUtil.parseDateTime(shDate).before(StringUtil.parseDateTime(jlDate));
+        if(before){
+            status.set("-1");
+            return;
+        }
         if (!CatalogueUtil.isOccup(shPerson) || CatalogueUtil.compareTime(StringUtil.parseDateTime(jlDate), StringUtil.parseDateTime(shDate), 24 * 60L)) {
             status.set("-1");
         }

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI03036.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.clinicalblood;
+
+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.ClinicalBloodDoc;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI03036
+ * @Description :   输血前预防输血反应措施未填写
+ * @Author : kwz
+ * @Date: 2020-07-06 15:28
+ */
+@Component
+public class CLI03036 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                if (StringUtils.isEmpty(cliBStructureMap.get("输血前预防输血反应措施"))) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+
+    }
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI03037.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.clinicalblood;
+
+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.ClinicalBloodDoc;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI03037
+ * @Description :   输血后生命体征变化未填写
+ * @Author : kwz
+ * @Date: 2020-07-06 15:28
+ */
+@Component
+public class CLI03037 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                if (StringUtils.isEmpty(cliBStructureMap.get("输血后生命体征变化"))) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+
+    }
+}

+ 45 - 45
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0562.java

@@ -1,46 +1,46 @@
-package com.lantone.qc.kernel.catalogue.clinicalblood;
-
-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.ClinicalBloodDoc;
-import com.lantone.qc.pub.util.ListUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CLI0562
- * @Description : 输血记录开始输血时间未填写
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class CLI0562 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
-        if(ListUtil.isEmpty(clinicalBloodDocs)){
-            return;
-        }
-
-        if(clinicalBloodDocs != null && clinicalBloodDocs.size()>0){
-            for (ClinicalBloodDoc cliB:clinicalBloodDocs) {
-                Map<String, String> cliBStructureMap = cliB.getStructureMap();
-                if(cliBStructureMap.containsKey("输注开始")){
-                    if(StringUtils.isEmpty(cliBStructureMap.get("输注开始"))){
-                        status.set("-1");
-                        break;
-                    }
-                }else {
-                    status.set("-1");
-                    break;
-                }
-
-            }
-        }
-
-    }
+package com.lantone.qc.kernel.catalogue.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0562
+ * @Description : 输血记录开始输血时间未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0562 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if(ListUtil.isEmpty(clinicalBloodDocs)){
+            return;
+        }
+
+        if(clinicalBloodDocs != null && clinicalBloodDocs.size()>0){
+            for (ClinicalBloodDoc cliB:clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                if(cliBStructureMap.containsKey("输注开始")){
+                    if(StringUtils.isEmpty(cliBStructureMap.get("输注开始"))){
+                        status.set("-1");
+                        break;
+                    }
+                }else {
+                    status.set("-1");
+                    break;
+                }
+
+            }
+        }
+
+    }
 }

+ 51 - 48
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0536.java

@@ -1,49 +1,52 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationApplicationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0536
- * @Description : 会诊申请单中会诊日期及时间填写不规范
- * @Author : 胡敬
- * @Date: 2020-03-28 10:20
- */
-@Component
-public class CON0536 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationApplicationDoc consultationApplicationDoc = consultationDoc.getConsultationApplicationDoc();
-            if (consultationApplicationDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationApplicationDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊日期及时间");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                continue;
-            }
-            Date consultationDate = StringUtil.parseDateTime(consultationDateStr, CatalogueUtil.processDateFormat(Content.dateFormats));
-
-            if (null == consultationDate) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationApplicationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0536
+ * @Description : 会诊申请单中会诊日期及时间填写不规范
+ * @Author : 胡敬
+ * @Date: 2020-03-28 10:20
+ */
+@Component
+public class CON0536 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationApplicationDoc consultationApplicationDoc = consultationDoc.getConsultationApplicationDoc();
+            if (consultationApplicationDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationApplicationDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊日期及时间")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊日期及时间");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    continue;
+                }
+                Date consultationDate = StringUtil.parseDateTime(consultationDateStr, CatalogueUtil.processDateFormat(Content.dateFormats));
+
+                if (null == consultationDate) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 42 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0538.java

@@ -1,41 +1,43 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0538
- * @Description : 会诊结果单中申请科室未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0538 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("申请科室");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0538
+ * @Description : 会诊结果单中申请科室未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0538 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("申请科室")){
+                String consultationDateStr = consultationResultStructureMap.get("申请科室");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0539.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0539
- * @Description : 会诊结果单中会诊类别未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0539 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊类别");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0539
+ * @Description : 会诊结果单中会诊类别未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0539 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊意见")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊类别");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0540.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0540
- * @Description : 会诊结果单中申请医生未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0540 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("申请医生");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0540
+ * @Description : 会诊结果单中申请医生未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0540 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("申请医生")){
+                String consultationDateStr = consultationResultStructureMap.get("申请医生");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0541.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0541
- * @Description : 会诊结果单中会诊科室未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0541 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊科室");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0541
+ * @Description : 会诊结果单中会诊科室未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0541 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊意见")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊科室");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0542.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0542
- * @Description : 会诊结果单中申请日期未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0542 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("申请日期");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0542
+ * @Description : 会诊结果单中申请日期未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0542 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("申请日期")){
+                String consultationDateStr = consultationResultStructureMap.get("申请日期");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0543.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0543
- * @Description : 会诊结果单中会诊到达日期未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:37
- */
-@Component
-public class CON0543 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊到达时间");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0543
+ * @Description : 会诊结果单中会诊到达日期未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:37
+ */
+@Component
+public class CON0543 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊到达时间")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊到达时间");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 51 - 48
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0544.java

@@ -1,49 +1,52 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0544
- * @Description : 会诊结果单中会诊到达日期填写不规范
- * @Author : 胡敬
- * @Date: 2020-03-28 10:20
- */
-@Component
-public class CON0544 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊到达时间");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                continue;
-            }
-            Date consultationDate = StringUtil.parseDateTime(consultationDateStr, CatalogueUtil.processDateFormat(Content.dateFormats));
-
-            if (null == consultationDate) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0544
+ * @Description : 会诊结果单中会诊到达日期填写不规范
+ * @Author : 胡敬
+ * @Date: 2020-03-28 10:20
+ */
+@Component
+public class CON0544 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊到达时间")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊到达时间");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    continue;
+                }
+                Date consultationDate = StringUtil.parseDateTime(consultationDateStr, CatalogueUtil.processDateFormat(Content.dateFormats));
+
+                if (null == consultationDate) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0545.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0545
- * @Description : 会诊结果单中病史回顾描述未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0545 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("病史回顾描述");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0545
+ * @Description : 会诊结果单中病史回顾描述未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0545 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("病史回顾描述")){
+                String consultationDateStr = consultationResultStructureMap.get("病史回顾描述");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0546.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0546
- * @Description : 会诊结果单中会诊查体未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0546 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊查体");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0546
+ * @Description : 会诊结果单中会诊查体未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0546 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊查体")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊查体");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0547.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0547
- * @Description : 会诊结果单中当前诊断未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0547 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("当前诊断");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0547
+ * @Description : 会诊结果单中当前诊断未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0547 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("当前诊断")){
+                String consultationDateStr = consultationResultStructureMap.get("当前诊断");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0548.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0548
- * @Description : 会诊结果单中会诊意见未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:39
- */
-@Component
-public class CON0548 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊意见");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0548
+ * @Description : 会诊结果单中会诊意见未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:39
+ */
+@Component
+public class CON0548 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊意见")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊意见");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0549.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0549
- * @Description : 会诊结果单中会诊医师未签名
- * @Author : 胡敬
- * @Date: 2020-03-28 13:37
- */
-@Component
-public class CON0549 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("医师签名");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0549
+ * @Description : 会诊结果单中会诊医师未签名
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:37
+ */
+@Component
+public class CON0549 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("医师签名")){
+                String consultationDateStr = consultationResultStructureMap.get("医师签名");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 43 - 40
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0550.java

@@ -1,41 +1,44 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0550
- * @Description : 会诊结果单中会诊日期及时间未填写
- * @Author : 胡敬
- * @Date: 2020-03-28 13:37
- */
-@Component
-public class CON0550 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊日期及时间");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0550
+ * @Description : 会诊结果单中会诊日期及时间未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-28 13:37
+ */
+@Component
+public class CON0550 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊日期及时间")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊日期及时间");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 51 - 48
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0551.java

@@ -1,49 +1,52 @@
-package com.lantone.qc.kernel.catalogue.consultation;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.Content;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
-import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : CON0551
- * @Description : 会诊结果单中会诊日期及时间填写不规范
- * @Author : 胡敬
- * @Date: 2020-03-28 10:20
- */
-@Component
-public class CON0551 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
-        if (consultationDocs.size() == 0) {
-            return;
-        }
-        for (ConsultationDoc consultationDoc : consultationDocs) {
-            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
-            if (consultationResultsDoc == null) {
-                continue;
-            }
-            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
-            String consultationDateStr = consultationResultStructureMap.get("会诊日期及时间");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
-                continue;
-            }
-            Date consultationDate = StringUtil.parseDateTime(consultationDateStr, CatalogueUtil.processDateFormat(Content.dateFormats));
-
-            if (null == consultationDate) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.consultation;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CON0551
+ * @Description : 会诊结果单中会诊日期及时间填写不规范
+ * @Author : 胡敬
+ * @Date: 2020-03-28 10:20
+ */
+@Component
+public class CON0551 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (consultationDocs.size() == 0) {
+            return;
+        }
+        for (ConsultationDoc consultationDoc : consultationDocs) {
+            ConsultationResultsDoc consultationResultsDoc = consultationDoc.getConsultationResultsDoc();
+            if (consultationResultsDoc == null) {
+                continue;
+            }
+            Map<String, String> consultationResultStructureMap = consultationResultsDoc.getStructureMap();
+            if(consultationResultStructureMap.containsKey("会诊日期及时间")){
+                String consultationDateStr = consultationResultStructureMap.get("会诊日期及时间");
+                if (CatalogueUtil.isEmpty(consultationDateStr)) {
+                    continue;
+                }
+                Date consultationDate = StringUtil.parseDateTime(consultationDateStr, CatalogueUtil.processDateFormat(Content.dateFormats));
+
+                if (null == consultationDate) {
+                    status.set("-1");
+                    return;
+                }
+            }
+
+        }
+    }
 }

+ 6 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0557.java

@@ -19,10 +19,12 @@ public class DEAC0557 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) && !deathTime.contains("发言")) {
-                status.set("-1");
+            if(inputInfo.getDeathCaseDiscussDoc() != null){
+                Map<String, String> deathRecordStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
+                String deathTime = deathRecordStructureMap.get("讨论内容");
+                if (CatalogueUtil.isEmpty(deathTime)) {
+                    status.set("-1");
+                }
             }
         }
     }

+ 35 - 31
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0343.java

@@ -1,32 +1,36 @@
-package com.lantone.qc.kernel.catalogue.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 : DEAR0343
- * @Description : 死亡记录无病情演变
- * @Author : 胡敬
- * @Date: 2020-03-18 17:14
- */
-@Component
-public class DEAR0343 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 diagnosisTreatmentProcess = deathRecordStructureMap.get("诊疗经过");
-            if (CatalogueUtil.isEmpty(diagnosisTreatmentProcess)) {
-                return;
-            }
-            if (!diagnosisTreatmentProcess.contains("加重") && !diagnosisTreatmentProcess.contains("抢救")) {
-                status.set("-1");
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.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.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0343
+ * @Description : 死亡记录无病情演变
+ * @Author : 胡敬
+ * @Date: 2020-03-18 17:14
+ */
+@Component
+public class DEAR0343 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 diagnosisTreatmentProcess = deathRecordStructureMap.get("诊疗经过");
+            /*if (CatalogueUtil.isEmpty(diagnosisTreatmentProcess)) {
+                return;
+            }
+            if (!diagnosisTreatmentProcess.contains("加重") && !diagnosisTreatmentProcess.contains("抢救")) {
+                status.set("-1");
+            }*/
+            if(StringUtils.isEmpty(diagnosisTreatmentProcess)){
+                status.set("-1");
+            }
+        }
+    }
 }

+ 35 - 31
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0344.java

@@ -1,32 +1,36 @@
-package com.lantone.qc.kernel.catalogue.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 : DEAR0344
- * @Description : 死亡记录无抢救经过
- * @Author : 胡敬
- * @Date: 2020-03-18 18:35
- */
-@Component
-public class DEAR0344 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 diagnosisTreatmentProcess = deathRecordStructureMap.get("诊疗经过");
-            if (CatalogueUtil.isEmpty(diagnosisTreatmentProcess)) {
-                return;
-            }
-            if (!diagnosisTreatmentProcess.contains("抢救")) {
-                status.set("-1");
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.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.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0344
+ * @Description : 死亡记录无抢救经过
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:35
+ */
+@Component
+public class DEAR0344 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 diagnosisTreatmentProcess = deathRecordStructureMap.get("诊疗经过");
+            /*if (CatalogueUtil.isEmpty(diagnosisTreatmentProcess)) {
+                return;
+            }
+            if (!diagnosisTreatmentProcess.contains("抢救")) {
+                status.set("-1");
+            }*/
+            if(StringUtils.isEmpty(diagnosisTreatmentProcess)){
+                status.set("-1");
+            }
+        }
+    }
 }

+ 38 - 38
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0121.java

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

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java

@@ -189,6 +189,7 @@ public class DUT0296 extends QCCatalogue {
         try {
             Date dateIn = StringUtil.parseDateTime(beDate);
             Date dateOut = StringUtil.parseDateTime(leaveDate);
+            if (dateIn == null || dateOut == null) return 0;
             Calendar from = Calendar.getInstance();
             from.setTime(dateIn);
             Calendar to = Calendar.getInstance();

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0092.java

@@ -35,7 +35,7 @@ public class FIRC0092 extends QCCatalogue {
         }
 
         Map<String,String> structureMap = firstCourseRecordDoc.getStructureMap();
-        String structureV= structureMap.get("治疗监测计划");
+        String structureV= structureMap.get("治疗计划");
         if(StringUtil.isNotBlank(structureV) && structureV.contains("护理")){
             findText = true;
         }
@@ -43,6 +43,7 @@ public class FIRC0092 extends QCCatalogue {
                 (treatPlanLabel.getMedicine() != null || treatPlanLabel.getTreat().size() > 0
                         || treatPlanLabel.getPacs().size() > 0)) {
             status.set("0");
+            return;
         }
         if (treatPlanLabel.getNursingLevel() == null) {
             info.set("无护理级别");

+ 7 - 23
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0093.java

@@ -24,14 +24,12 @@ import java.util.Map;
 public class FIRC0093 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         status.set("0");
-        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
         FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
-        if (firstCourseRecordDoc != null && beHospitalizedDoc != null) {
+        if (firstCourseRecordDoc != null ) {
             Map<String, String> courseRecordDocStructureMap = firstCourseRecordDoc.getStructureMap();
-            Map<String, String> beHospitalizedDocStructureMap = beHospitalizedDoc.getStructureMap();
-            if (courseRecordDocStructureMap != null && beHospitalizedDocStructureMap != null) {
+            if (courseRecordDocStructureMap != null ) {
                 String couDate = courseRecordDocStructureMap.get("记录时间");
-                String beDate = beHospitalizedDocStructureMap.get("入院日期");
+                String beDate = courseRecordDocStructureMap.get("入院日期");
                 if (StringUtils.isNotEmpty(couDate) && StringUtils.isNotEmpty(beDate)) {
                     Date date_in = StringUtil.parseDateTime(beDate);
                     Date date_out = StringUtil.parseDateTime(couDate);
@@ -41,27 +39,13 @@ public class FIRC0093 extends QCCatalogue {
                     boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
                     if (firc) {
                         status.set("-1");
+                        return;
                     }
                 }
             }
-        } else {
-            if (beHospitalizedDoc != null) {
-                Map<String, String> beHospitalizedDocStructureMap = beHospitalizedDoc.getStructureMap();
-                if (beHospitalizedDocStructureMap != null) {
-                    String beDate = beHospitalizedDocStructureMap.get("入院日期");
-                    if (StringUtils.isNotEmpty(beDate)) {
-                        Date date_in = StringUtil.parseDateTime(beDate);
-                        Date date_out = new Date();
-                        if (date_in == null) {
-                            return;
-                        }
-                        boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
-                        if (firc) {
-                            status.set("-1");
-                        }
-                    }
-                }
-            }
+        }else {
+            status.set("-1");
+            return;
         }
     }
 }

+ 9 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0500.java

@@ -54,6 +54,15 @@ public class FIRC0500 extends QCCatalogue {
                 return;
             }
         }
+        //结构化再获取诊断依据,判断是否包含主诉内容
+        String diagnose_resuse = structureMap.get("诊断依据");
+        if (StringUtil.isNotBlank(diagnose_resuse)) {
+            diagnose_resuse = diagnose_resuse.replaceAll("[\\p{Punct}\\pP。]", "");
+            if (diagnose_resuse.contains(chief_text)) { //首程诊断依据.contains(入院记录主诉)
+                status.set("0");
+                return;
+            }
+        }
         if(StringUtils.isNotBlank(firstCourseRecordDoc.getText())){
             if (firstCourseRecordDoc.getText().contains(chief_text)) {
                 status.set("0");

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

@@ -15,6 +15,7 @@ import java.util.stream.Collectors;
 /**
  * @ClassName : FIRP0173
  * @Description :门(急)诊诊断与现病史里的内容不一致
+ * 逻辑:门(急)诊诊断的第一个诊断要在现病史中“拟”、“以”后面的诊断中出现
  * @Author : 胡敬
  * @Date: 2020-03-18 16:30
  */

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

@@ -1,31 +1,32 @@
-package com.lantone.qc.kernel.catalogue.firstpagerecord;
-
-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 : FIRP0209
- * @Description : 工作单位及地址没有填写
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28ss
- */
-@Component
-public class FIRP0209 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
-            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            String dischargeTime = firstpageStructureMap.get(Content.work_unit);
-            if(CatalogueUtil.isEmpty(dischargeTime)){
-                status.set("-1");
-            }
-
-        }
-    }
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+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.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0209
+ * @Description : 工作单位及地址没有填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28ss
+ */
+@Component
+public class FIRP0209 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String dischargeTime = firstpageStructureMap.get(Content.work_unit);
+            if(StringUtils.isBlank(dischargeTime)){
+                status.set("-1");
+            }
+
+        }
+    }
 }

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

@@ -35,7 +35,7 @@ public class FIRP0222 extends QCCatalogue {
         Map<String, String> firpStructureMap = firstPageRecordDoc.getStructureMap();
         Map<String, String> medStructureMap = medicalRecordInfoDoc.getStructureMap();
         String admitDept = firpStructureMap.get(Content.admitDept);
-        String behDeptId = medStructureMap.get("behDeptId");
+        String behDeptId = medStructureMap.get("behDeptName");
         if (StringUtil.isNotBlank(admitDept) && StringUtil.isNotBlank(behDeptId) && !admitDept.equals(behDeptId)) {
             status.set("-1");
         }

+ 35 - 32
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02883.java

@@ -1,33 +1,36 @@
-package com.lantone.qc.kernel.catalogue.firstpagerecord;
-
-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 : FIRP0737
- * @Description : 现住址邮编信息错误
- * @Author : 胡敬
- * @Date: 2020-05-08 16:00
- */
-@Component
-public class FIRP02883 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
-            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            String zipcode = firstpageStructureMap.get(Content.current_address_zipcode);
-            if (!CatalogueUtil.isEmpty(zipcode)) {
-                String regex = "^\\d{6}$";
-                if (!zipcode.matches(regex)) {
-                    status.set("-1");
-                }
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+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 : FIRP0737
+ * @Description : 现住址邮编信息错误
+ * @Author : 胡敬
+ * @Date: 2020-05-08 16:00
+ */
+@Component
+public class FIRP02883 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String zipcode = firstpageStructureMap.get(Content.current_address_zipcode);
+            if (!CatalogueUtil.isEmpty(zipcode)) {
+                if ("-".equals(zipcode) || "/".equals(zipcode)) {
+                    return;
+                }
+                String regex = "^\\d{6}$";
+                if (!zipcode.matches(regex)) {
+                    status.set("-1");
+                }
+            }
+        }
+    }
 }

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

@@ -24,7 +24,7 @@ public class FIRP02885 extends QCCatalogue {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String zipcode = firstpageStructureMap.get(Content.household_address_zipcode);
             if (StringUtil.isNotBlank(zipcode)) {
-                if ("-".equals(zipcode)) {
+                if ("-".equals(zipcode) || "/".equals(zipcode)) {
                     return;
                 }
                 if (CatalogueUtil.numbersOnly(zipcode)) {

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

@@ -24,7 +24,7 @@ public class FIRP02886 extends QCCatalogue {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String zipcode = firstpageStructureMap.get(Content.work_unit_zipcode);
             if (StringUtil.isNotBlank(zipcode)) {
-                if ("-".equals(zipcode)) {
+                if ("-".equals(zipcode) || "/".equals(zipcode)) {
                     return;
                 }
                 if (CatalogueUtil.numbersOnly(zipcode)) {

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02992.java

@@ -7,10 +7,12 @@ import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : FIRP02992
@@ -49,6 +51,7 @@ public class FIRP02992 extends QCCatalogue {
             }
             String regx = ";|;|,|,|、| ";
             List<String> fpList = Lists.newArrayList(fpAllergyDrug.split(regx));
+            fpList = fpList.stream().filter(x -> StringUtils.isNotBlank(x) && !x.trim().equals("其它")).collect(Collectors.toList());
             // 全部包含
             for (String s : fpList) {
                 if (!beDrugAllergy.contains(s)) {

+ 26 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02993.java

@@ -7,6 +7,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -15,6 +16,7 @@ import java.util.Map;
 
 /**
  * 病案首页手术名称未填
+ * 如果有手术记录,病案首页手术为空就报
  * @author wangfeng
  * @Description:
  * @date 2020-06-28 17:10
@@ -26,7 +28,29 @@ public class FIRP02993 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             //取出病程信息里的手术记录的名称
             List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-            if (!operationDocs.isEmpty()) {
+            long count = operationDocs.stream().map(i -> i.getOperationRecordDoc()).filter(v -> v != null && StringUtils.isNotBlank(v.getOperationName())).count();
+            //取出病案首页里的手术名称operationNameList;
+            Map<String, Object> structureExtMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            Object operation = structureExtMap.get(Content.operative_information);//手术信息
+            List<String> operationNameList = new ArrayList<String>();
+            List<Map<String, String>> mapStrs = (List<Map<String, String>>) operation;
+            // 解决空指针,如果无数据,报错
+            if (mapStrs == null && count == 0) {
+                return ;
+            }
+            if (mapStrs.size() > 0) {
+                for (Map<String, String> mapStr : mapStrs
+                ) {
+                    String name = mapStr.get(Content.operative_name);//手术名称
+                    operationNameList.add(name);
+                }
+            }
+            if(count > 0 && operationNameList.size() == 0){
+                status.set("-1");
+                return;
+            }
+
+            /*if (!operationDocs.isEmpty()) {
                 List<String> nameberList = new ArrayList<String>();
                 for (OperationDoc operationDoc : operationDocs
                 ) {
@@ -80,7 +104,7 @@ public class FIRP02993 extends QCCatalogue {
                     return;
                 }
 
-            }
+            }*/
 
         }
     }

+ 10 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0322.java

@@ -27,12 +27,20 @@ public class OPE0322 extends QCCatalogue {
             return;
         }
         long cou = inputInfo.getOperationDocs().stream().map(i -> i.getOperationRecordDoc()).filter(i -> i != null).count();
-        for (DoctorAdviceDoc dad:doctorAdviceDocs) {
+        long od_count = inputInfo.getOperationDocs().stream().map(i -> i.getOperationDiscussionDoc()).filter(i -> i != null
+                && i.getStructureMap().containsKey("术后诊断")
+        && !i.getStructureMap().get("术后诊断").contains("平产")
+        && !i.getStructureMap().get("术后诊断").contains("顺产")).count();
+        if(od_count > 0 && cou == 0){
+            status.set("-1");
+            return;
+        }
+        /*for (DoctorAdviceDoc dad:doctorAdviceDocs) {
             String name = dad.getStructureMap().get("医嘱项目名称");
             if(name.contains("手术") && cou == 0){
                 status.set("-1");
             }
-        }
+        }*/
         /*long cou = inputInfo.getOperationDocs().stream().map(i -> i.getOperationRecordDoc()).filter(i -> i != null).count();
         if (cou == 0) {
             status.set("-1");

+ 41 - 45
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0649.java

@@ -1,46 +1,42 @@
-package com.lantone.qc.kernel.catalogue.operationdiscussion;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
-import com.lantone.qc.pub.model.doc.operation.OperationDoc;
-import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : OPE0649
- * @Description : 术后首程麻醉方式未填写
- * @Author : 胡敬
- * @Date: 2020-03-30 10:10
- */
-@Component
-public class OPE0649 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-//        boolean isOperativePatient = true;//是手术患者(暂时默认是)
-//        if (isOperativePatient) {
-            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if(operationDocs == null || operationDocs.size() == 0){
-            status.set("0");
-            return;
-        }
-
-            for (OperationDoc operationDoc : operationDocs) {
-                OperationDiscussionDoc operationDiscussionDoc = operationDoc.getOperationDiscussionDoc();
-                if (operationDiscussionDoc == null) {
-                    continue;
-                }
-                Map<String, String> operationDiscussionStructureMap = operationDiscussionDoc.getStructureMap();
-                if (CatalogueUtil.isEmpty(operationDiscussionStructureMap.get("麻醉方式"))) {
-                    status.set("-1");
-                    return;
-                }
-            }
-//        }
-    }
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : OPE0649
+ * @Description : 术后首程麻醉方式未填写
+ * @Author : 胡敬
+ * @Date: 2020-03-30 10:10
+ */
+@Component
+public class OPE0649 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(operationDocs == null || operationDocs.size() == 0){
+            status.set("0");
+            return;
+        }
+        for (OperationDoc operationDoc : operationDocs) {
+            OperationDiscussionDoc operationDiscussionDoc = operationDoc.getOperationDiscussionDoc();
+            if (operationDiscussionDoc == null) {
+                continue;
+            }
+            Map<String, String> operationDiscussionStructureMap = operationDiscussionDoc.getStructureMap();
+            if (operationDiscussionStructureMap.containsKey("麻醉方式") && CatalogueUtil.isEmpty(operationDiscussionStructureMap.get("麻醉方式"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
 }

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0650.java

@@ -34,6 +34,9 @@ public class OPE0650 extends QCCatalogue {
                 continue;
             }
             Map<String, String> operationDiscussionStructureMap = operationDiscussionDoc.getStructureMap();
+            if(!operationDiscussionStructureMap.containsKey("手术名称")){
+                return;
+            }
             if (CatalogueUtil.isEmpty(operationDiscussionStructureMap.get("手术名称"))) {
                 status.set("-1");
                 return;

+ 22 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE03025.java

@@ -14,6 +14,7 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 /**
  * @Description: 手术患者无术前讨论记录(邵逸夫)
@@ -37,11 +38,18 @@ public class PRE03025 extends QCCatalogue {
         }
         if (inputInfo.getBeHospitalizedDoc() != null
                 && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史") != null
-                && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史").matches(".*急诊.*术.*|.*急症.*术.*")) {
+//                && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史").matches(".*急诊.*术.*|.*急症.*术.*")) {
+                && match_word(inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史"))) {
             return;
         }
+        //判断首程里是否有急诊
         boolean emergencyOperation = findEmergencyOperation(inputInfo);
+
         boolean emergencyOperationFromWardRecord = findEmergencyOperationFromWardRecord(inputInfo);
+        if(emergencyOperation || emergencyOperationFromWardRecord){
+            return;
+        }
+
 
         int i = getOperationSum(operationDocs); // 获取手术记录次数
         int j = 0;  // 获取术前讨论、术前小结次数
@@ -65,11 +73,12 @@ public class PRE03025 extends QCCatalogue {
     private boolean findEmergencyOperation(InputInfo inputInfo) {
         FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
         if (firstCourseRecordDoc != null) {
-            String treatPlan = firstCourseRecordDoc.getStructureMap().get("疗计划");
+            String treatPlan = firstCourseRecordDoc.getStructureMap().get("疗计划");
             // 根据医学部要求,加入“急症”和“术”
             if (StringUtil.isNotBlank(treatPlan)) {
-                String regex = ".*急诊.*术.*|.*急症.*术.*";
-                return treatPlan.matches(regex);
+                return match_word(treatPlan);
+//                String regex = ".*急诊.*术.*|.*急症.*术.*";
+//                return treatPlan.matches(regex);
             }
         }
         return false;
@@ -101,6 +110,7 @@ public class PRE03025 extends QCCatalogue {
      */
     private int getOperationSum(List<OperationDoc> operationDocs) {
         int num = 0;
+        List<String> dateStrList = new ArrayList<>();
         for (OperationDoc operationDoc : operationDocs) {
             OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
             if (operationRecordDoc == null) {
@@ -108,7 +118,7 @@ public class PRE03025 extends QCCatalogue {
             }
             Map<String, String> structureMap = operationRecordDoc.getStructureMap();
             String dateStr = structureMap.get("手术日期");
-            List<String> dateStrList = new ArrayList<>();
+
             if (StringUtil.isNotBlank(dateStr)) {
                 if (!dateStrList.contains(dateStr)) {
                     dateStrList.add(dateStr);
@@ -118,4 +128,11 @@ public class PRE03025 extends QCCatalogue {
         }
         return num;
     }
+
+    private boolean match_word(String content){
+        String regex = "(?<=急诊)(.+)(?=术)";
+        Pattern p = Pattern.compile(regex);
+        boolean b = p.matcher(content).find();
+        return b;
+    }
 }

+ 40 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0144.java

@@ -10,10 +10,12 @@ import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 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;
 
 /**
  * @ClassName : THR0144
@@ -42,26 +44,54 @@ public class THR0144 extends QCCatalogue {
             return;
         }
         int j = 0; //最后两次查房记录
-        for (int i = allDoctorWradDocs.size() - 1; i > 0 && j < 2; i--) {
+        for (int i = allDoctorWradDocs.size() - 1; i >= 0 && j < 2; i--) {
             j++;
             ThreeLevelWardDoc lastWardDoc = allDoctorWradDocs.get(i);
             Map<String, String> structureMap = lastWardDoc.getStructureMap();
             String conditionRecord = structureMap.get("病情记录");
             String treatmentPlan = structureMap.get("治疗计划和措施");
             String title = structureMap.get("查房标题");
-            if (StringUtil.isBlank(title) || title.contains("病理报告")) {
+            String ob = structureMap.get("记录医师个人职称");
+            if ( StringUtils.isNotBlank(title) && title.contains("病理报告")) {
                 continue;
             }
             conditionRecord = StringUtil.isBlank(conditionRecord) ? "" : conditionRecord;
             treatmentPlan = StringUtil.isBlank(treatmentPlan) ? "" : treatmentPlan;
             //主任或主治查房 标题需要包含“主任”或“主治”,内容需要包含“出院”
-            if ((conditionRecord.contains("出院") || treatmentPlan.contains("出院") || conditionRecord.contains("转上级医院"))
+            if (StringUtils.isNotBlank(title) && (conditionRecord.contains("出院") || treatmentPlan.contains("出院") || leave_method(treatmentPlan))
                     && (CatalogueUtil.subTitle(title).contains(Content.attend)
                     || CatalogueUtil.subTitle(title).contains(Content.director)
                     || CatalogueUtil.subTitle(title).contains("主刀"))) {
                 status.set("0");
                 return;
             }
+            //treatmentPlan里包含出院或转院,记录医师职称为A/F
+            if(StringUtils.isNotBlank(ob) && (conditionRecord.contains("出院") || treatmentPlan.contains("出院") || leave_method(treatmentPlan)
+                    || leave_method(conditionRecord))
+            && (ob.equals("A") || ob.equals("F"))){
+                status.set("0");
+                return;
+            }
+            //treatmentPlan前20个字包含A或F,并且包含出院或转院
+            boolean treat_boolean = false;
+            if(treatmentPlan.length()>10){
+                String sub_treat = treatmentPlan.substring(0, 10);
+                if(sub_treat.contains("A") || sub_treat.contains("F")){
+                    treat_boolean = true;
+                }
+            }
+            boolean record_boolean = false;
+            if(conditionRecord.length()>10){
+                String sub_treat = conditionRecord.substring(0, 10);
+                if(sub_treat.contains("A") || sub_treat.contains("F")){
+                    record_boolean = true;
+                }
+            }
+            if((conditionRecord.contains("出院") || treatmentPlan.contains("出院") || leave_method(treatmentPlan))
+            && (record_boolean || treat_boolean)){
+                status.set("0");
+                return;
+            }
             //普通查房 内容需要包含“上级”和“出院”
             if (StringUtil.isBlank(title)
                     || (title.contains("日常查房记录") || title.contains("普通查房记录") || title.contains("日常病程记录"))
@@ -72,4 +102,11 @@ public class THR0144 extends QCCatalogue {
             }
         }
     }
+
+    public boolean leave_method(String content){
+        String compile = "(?<=转)(.+)(?=院)";
+        Pattern p = Pattern.compile(compile);
+        boolean b = p.matcher(content).find();
+        return b;
+    }
 }

+ 18 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02985.java

@@ -5,6 +5,7 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -22,6 +23,8 @@ import java.util.*;
  */
 @Component
 public class THR02985 extends QCCatalogue {
+    private static final String[] KSS = {"阿昔洛韦片","[国产]伐昔洛韦分散片","阿昔洛韦针","[进口]伐昔洛韦片"
+            ,"[浓缩型]双黄连口服液"};
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
         List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
@@ -37,6 +40,9 @@ public class THR02985 extends QCCatalogue {
             String startDateStr = adviceDocStructureMap.get("医嘱开始时间");
             if (StringUtil.isNotBlank(drugCategory) && drugCategory.equals("1")) {
                 if (StringUtil.isNotBlank(name)) {
+                    if(Arrays.asList(KSS).contains(name)){
+                       continue;
+                    }
                     doctorAdviceDrugMap.put(StringUtil.parseDateTime(startDateStr), name);
                 }
             }
@@ -58,7 +64,7 @@ public class THR02985 extends QCCatalogue {
                 if (drug.equals("合资") || drug.equals("进口") || drug.equals("国产") ) {
                     continue;
                 }
-                matchSum = getMatchSum(allDoctorWradDocs, doctorAdviceDate, drug, matchSum, 2);
+                matchSum = getMatchSum(inputInfo.getFirstCourseRecordDoc(), allDoctorWradDocs, doctorAdviceDate, drug.replace("针",""), matchSum, 2);
                 if (matchSum > 0) {
                     isFind = true;
                 }
@@ -76,7 +82,17 @@ public class THR02985 extends QCCatalogue {
         }
     }
 
-    private int getMatchSum(List<ThreeLevelWardDoc> allDoctorWradDocs, Date doctorAdviceDate, String drug, int matchSum, int days) {
+    private int getMatchSum(FirstCourseRecordDoc firstCourseRecordDoc, List<ThreeLevelWardDoc> allDoctorWradDocs, Date doctorAdviceDate, String drug, int matchSum, int days) {
+        if (firstCourseRecordDoc != null) {
+            String wardDateStr = firstCourseRecordDoc.getStructureMap().get("病历日期");
+            String content = firstCourseRecordDoc.getStructureMap().get("治疗计划") + firstCourseRecordDoc.getStructureMap().get("诊疗计划");
+            Date wardDate = StringUtil.parseDateTime(wardDateStr);
+            if (doctorAdviceDate.before(wardDate) && !CatalogueUtil.compareTime(doctorAdviceDate, wardDate, days * 24 * 60L)) {
+                if (content.contains(drug)) {
+                    matchSum++;
+                }
+            }
+        }
         for (ThreeLevelWardDoc threeLevelWardDoc : allDoctorWradDocs) {
             Map<String, String> wardDocStructureMap = threeLevelWardDoc.getStructureMap();
             String wardDateStr = wardDocStructureMap.get("查房日期");

+ 43 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02986.java

@@ -5,24 +5,29 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 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.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @ClassName : THR02986
  * @Description : 医嘱有激素使用病程无记录
  * 药品类型(0.普药 1.抗生素 2.激素)
  * @Author : 胡敬
- * @Date: 2020-06-23 10:43
+ * @Date: 2020-06-23 10:04
  */
 @Component
 public class THR02986 extends QCCatalogue {
+    private static final String[] JS = {"瑞格列奈片","西格列汀片","维格列汀片","伏格列波糖片","[合资]二甲双胍片"
+            ,"[进口]硫辛酸针","[合资]阿卡波糖片","格列齐特缓释片","达格列净片","[合资]格列美脲片","[绿叶]阿卡波糖胶囊"
+            ,"[海汇]格列美脲片","格列吡嗪缓释胶囊","[国产]阿卡波糖片","格列吡嗪控释片","[国产]二甲双胍片","沙格列汀片"
+            ,"吡格列酮二甲双胍片","[艾可拓]吡格列酮片","阿仑膦酸钠维D3片","[卡司平]吡格列酮片","[国产]硫辛酸针"
+            ,"格列喹酮片","[国产]阿仑膦酸钠肠溶片","那格列奈片","[自备]格列齐特-II片"};
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
         List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
@@ -36,8 +41,12 @@ public class THR02986 extends QCCatalogue {
             String name = adviceDocStructureMap.get("医嘱项目名称");
             String drugCategory = adviceDocStructureMap.get("药品类型");
             String startDateStr = adviceDocStructureMap.get("医嘱开始时间");
-            if (StringUtil.isNotBlank(drugCategory) && drugCategory.contains("2")) {
+            if (StringUtil.isNotBlank(drugCategory) && drugCategory.equals("2")) {
+
                 if (StringUtil.isNotBlank(name)) {
+                    if(Arrays.asList(JS).contains(name)){
+                        continue;
+                    }
                     doctorAdviceDrugMap.put(StringUtil.parseDateTime(startDateStr), name);
                 }
             }
@@ -48,15 +57,27 @@ public class THR02986 extends QCCatalogue {
             return;
         }
         String infoStr = "";
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for (Map.Entry<Date, String> doctorAdviceDrug : doctorAdviceDrugMap.entrySet()) {
             Date doctorAdviceDate = doctorAdviceDrug.getKey();
-            String drug = doctorAdviceDrug.getValue();
-            int matchSum = 0;
-            matchSum = getMatchSum(allDoctorWradDocs, doctorAdviceDate, drug, matchSum, 2);
-            if (matchSum == 0) {
-                infoStr = CatalogueUtil.concatInfo(infoStr, drug);
+            Set<String> splitDrugs = CatalogueUtil.getRegexWords(doctorAdviceDrug.getValue(), "[((\\[][^\\[\\]()()]+[\\]))]");
+
+            boolean isFind = false;
+            for (String drug : splitDrugs) {
+                int matchSum = 0;
+                if (drug.equals("合资") || drug.equals("进口") || drug.equals("国产") ) {
+                    continue;
+                }
+                matchSum = getMatchSum(inputInfo.getFirstCourseRecordDoc(), allDoctorWradDocs, doctorAdviceDate, drug, matchSum, 2);
+                if (matchSum > 0) {
+                    isFind = true;
+                }
+            }
+            if (!isFind) {
+                String.format(infoStr = CatalogueUtil.concatInfo(infoStr, doctorAdviceDrug.getValue() + "<医嘱时间>:" + sdf.format(doctorAdviceDate)));
             }
         }
+
         if (StringUtil.isNotBlank(infoStr)) {
             status.set("-1");
             info.set(infoStr);
@@ -65,7 +86,17 @@ public class THR02986 extends QCCatalogue {
         }
     }
 
-    private int getMatchSum(List<ThreeLevelWardDoc> allDoctorWradDocs, Date doctorAdviceDate, String drug, int matchSum, int days) {
+    private int getMatchSum(FirstCourseRecordDoc firstCourseRecordDoc, List<ThreeLevelWardDoc> allDoctorWradDocs, Date doctorAdviceDate, String drug, int matchSum, int days) {
+        if (firstCourseRecordDoc != null) {
+            String wardDateStr = firstCourseRecordDoc.getStructureMap().get("病历日期");
+            String content = firstCourseRecordDoc.getStructureMap().get("治疗计划") + firstCourseRecordDoc.getStructureMap().get("诊疗计划");
+            Date wardDate = StringUtil.parseDateTime(wardDateStr);
+            if (doctorAdviceDate.before(wardDate) && !CatalogueUtil.compareTime(doctorAdviceDate, wardDate, days * 24 * 60L)) {
+                if (content.contains(drug)) {
+                    matchSum++;
+                }
+            }
+        }
         for (ThreeLevelWardDoc threeLevelWardDoc : allDoctorWradDocs) {
             Map<String, String> wardDocStructureMap = threeLevelWardDoc.getStructureMap();
             String wardDateStr = wardDocStructureMap.get("查房日期");

+ 5 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03015.java

@@ -10,6 +10,7 @@ import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -45,9 +46,12 @@ public class THR03015 extends QCCatalogue {
         for (DirectorDoctorWardDoc directorDoctorWardDoc : directorDoctorWardDocs) {
             jlDateStr = directorDoctorWardDoc.getStructureMap().get("记录时间");
             shDateStr = directorDoctorWardDoc.getStructureMap().get("审核日期");
+            if(StringUtils.isBlank(shDateStr)){
+                continue;
+            }
             professor = getProfessor(directorDoctorWardDoc.getStructureMap().get("审核人"));
             if (StringUtil.isBlank(professor)
-                    || !professor.contains("主任")
+//                    || !professor.contains("主任")
                     || CatalogueUtil.compareTime(StringUtil.parseDateTime(jlDateStr), StringUtil.parseDateTime(shDateStr), 7 * 24 * 60L)) {
                 findIndications = false;
                 break;

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03022.java

@@ -39,6 +39,9 @@ public class THR03022 extends QCCatalogue {
         boolean findIndications = false;
         for (ThreeLevelWardDoc threeLevelWardDoc : allDoctorWradDocs) {
             Map<String, String> rescueStructureMap = threeLevelWardDoc.getStructureMap();
+            if(rescueStructureMap.containsKey("记录医师个人职称") && rescueStructureMap.get("记录医师个人职称").equals("A")){
+                return;
+            }
             title = CatalogueUtil.subTitle(rescueStructureMap.get("查房标题"));
             record = CatalogueUtil.subTitle(rescueStructureMap.get("病情记录"));
             if (StringUtil.isNotBlank(title) && title.contains(Content.director)) {

+ 48 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03023.java

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
@@ -8,8 +9,11 @@ import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.DateUtil;
 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.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -25,17 +29,36 @@ import java.util.Map;
  */
 @Component
 public class THR03023 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         /**
+         * 入院当天有病重医嘱,当天写首次病程录就好,不需要写查房记录。这个不应该报错。
          * 1、有病重医嘱、查房记录。
          * 2、第一个病重医嘱的开始时间当天有查房记录,结束时间有查房记录。
          * 3、每2天有查房记录。
+         * 4、如果医嘱结束时间大于出院时间,那以出院时间为结束时间
+         * 5、首程也算第一次查房
          */
         status.set("0");
         if (ListUtil.isEmpty(inputInfo.getDoctorAdviceDocs()) ||
                 ListUtil.isEmpty(inputInfo.getThreeLevelWardDocs())) {
             return;
         }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String leaveDateString = "";
+        String inputDateString = "";
+        String input_data = "";
+        Date leaveDate = null;
+        if (inputInfo.getLeaveHospitalDoc() != null) {
+            leaveDateString = inputInfo.getLeaveHospitalDoc().getStructureMap().get("出院时间");
+            inputDateString = inputInfo.getLeaveHospitalDoc().getStructureMap().get("入院时间");
+            input_data = simpleDateFormat.format(simpleDateFormat.parse(inputDateString)).toString();
+        } else if (inputInfo.getDeathRecordDoc() != null) {
+            leaveDateString = inputInfo.getDeathRecordDoc().getStructureMap().get("死亡时间");
+        }
+        if (StringUtils.isNotEmpty(leaveDateString)) {
+            leaveDate = StringUtil.parseDateTime(leaveDateString);
+        }
+
         List<DoctorAdviceDoc> doctorAdviceDocList = inputInfo.getDoctorAdviceDocs();
         List<List<Date>> doctorAdviceDate = new ArrayList<>();
 
@@ -45,10 +68,18 @@ public class THR03023 extends QCCatalogue {
             String name = structureMap.get("医嘱项目名称");
             if (StringUtil.isNotBlank(name) && name.contains("病重")) {
                 String startDateStr = structureMap.get("医嘱开始时间");
+                String advice_date = simpleDateFormat.format(simpleDateFormat.parse(startDateStr)).toString();
+                if(input_data.equals(advice_date)){
+                    return;
+                }
                 String endDateStr = structureMap.get("医嘱结束时间");
                 if (StringUtil.isNotBlank(startDateStr) && StringUtil.isNotBlank(endDateStr)) {
                     Date startDate = StringUtil.parseDateTime(startDateStr);
                     Date endDate = StringUtil.parseDateTime(endDateStr);
+                    //如果医嘱结束时间大于出院时间,那以出院时间为结束时间
+                    if (leaveDate != null && leaveDate.before(endDate)) {
+                        endDate = leaveDate;
+                    }
                     if (startDate.before(endDate)) {
                         List<Date> listDate = new ArrayList<>();
                         listDate.add(DateUtil.dateZeroClear(startDate));
@@ -75,6 +106,15 @@ public class THR03023 extends QCCatalogue {
             }
         }
 
+        //首程也算第一次查房
+        if (inputInfo.getFirstCourseRecordDoc() != null) {
+            String recordTime = inputInfo.getFirstCourseRecordDoc().getStructureMap().get("病历日期");
+            if (StringUtils.isNotEmpty(recordTime)) {
+                Date recordDate = StringUtil.parseDateTime(recordTime);
+                dateRecordDay.add(DateUtil.dateZeroClear(recordDate));
+            }
+        }
+
         if (ListUtil.isEmpty(dateRecordDay)) {
             return ;
         }
@@ -95,17 +135,20 @@ public class THR03023 extends QCCatalogue {
 
         // 医嘱开始时间当天有查房记录
         if (!dateRecordDay.contains(doctorDateStart)) {
+            info.set(DateUtil.formatDate(doctorDateStart));
             status.set("-1");
             return ;
         }
         // 医嘱结束时间当天有查房记录
         if (!dateRecordDay.contains(doctorDateEnd)) {
+            info.set(DateUtil.formatDate(doctorDateEnd));
             status.set("-1");
             return ;
         }
         int flag = 0;
         Date nextDate = doctorDateStart;
         int returnFlag = 0; // 防止出现死循环系统崩溃
+        String infoStr = "";
         while(returnFlag <= 1000) {
             if (!dateRecordDay.contains(nextDate)) {
                 flag++;
@@ -114,7 +157,7 @@ public class THR03023 extends QCCatalogue {
             }
             if (flag == 2) {
                 status.set("-1");
-                return ;
+                infoStr = CatalogueUtil.concatInfo(infoStr, DateUtil.formatDate(nextDate));
             }
             nextDate = DateUtil.addDate(nextDate, 1);
             if (nextDate.after(doctorDateEnd)) {
@@ -122,5 +165,8 @@ public class THR03023 extends QCCatalogue {
             }
             returnFlag++; // 防止出现死循环系统崩溃
         }
+        if (StringUtils.isNotEmpty(infoStr)) {
+            info.set(infoStr);
+        }
     }
 }

+ 36 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03024.java

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
@@ -8,6 +9,7 @@ import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.DateUtil;
 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.ArrayList;
@@ -30,12 +32,25 @@ public class THR03024 extends QCCatalogue {
          * 1、有病危医嘱、查房记录。
          * 2、第一个危重医嘱的开始时间当天有查房记录,结束时间有查房记录。
          * 3、每天有查房记录。
+         * 4、如果医嘱结束时间大于出院时间,那以出院时间为结束时间
+         * 5、首程也算第一次查房
          */
         status.set("0");
         if (ListUtil.isEmpty(inputInfo.getDoctorAdviceDocs()) ||
                 ListUtil.isEmpty(inputInfo.getThreeLevelWardDocs())) {
             return;
         }
+        String leaveDateString = "";
+        Date leaveDate = null;
+        if (inputInfo.getLeaveHospitalDoc() != null) {
+            leaveDateString = inputInfo.getLeaveHospitalDoc().getStructureMap().get("出院时间");
+        } else if (inputInfo.getDeathRecordDoc() != null) {
+            leaveDateString = inputInfo.getDeathRecordDoc().getStructureMap().get("死亡时间");
+        }
+        if (StringUtils.isNotEmpty(leaveDateString)) {
+            leaveDate = StringUtil.parseDateTime(leaveDateString);
+        }
+
         List<DoctorAdviceDoc> doctorAdviceDocList = inputInfo.getDoctorAdviceDocs();
         List<List<Date>> doctorAdviceDate = new ArrayList<>();
 
@@ -49,6 +64,10 @@ public class THR03024 extends QCCatalogue {
                 if (StringUtil.isNotBlank(startDateStr) && StringUtil.isNotBlank(endDateStr)) {
                     Date startDate = StringUtil.parseDateTime(startDateStr);
                     Date endDate = StringUtil.parseDateTime(endDateStr);
+                    //如果医嘱结束时间大于出院时间,那以出院时间为结束时间
+                    if (leaveDate != null && leaveDate.before(endDate)) {
+                        endDate = leaveDate;
+                    }
                     if (startDate.before(endDate)) {
                         List<Date> listDate = new ArrayList<>();
                         listDate.add(DateUtil.dateZeroClear(startDate));
@@ -69,8 +88,16 @@ public class THR03024 extends QCCatalogue {
         for (ThreeLevelWardDoc threeLevelWardDoc : allDoctorWradDocs) {
             Map<String, String> rescueStructureMap = threeLevelWardDoc.getStructureMap();
             String recordTime = rescueStructureMap.get("查房日期");
-            Date recordDate = StringUtil.parseDateTime(recordTime);
-            if (recordDate != null) {
+            if (StringUtils.isNotEmpty(recordTime)) {
+                Date recordDate = StringUtil.parseDateTime(recordTime);
+                dateRecordDay.add(DateUtil.dateZeroClear(recordDate));
+            }
+        }
+        //首程也算第一次查房
+        if (inputInfo.getFirstCourseRecordDoc() != null) {
+            String recordTime = inputInfo.getFirstCourseRecordDoc().getStructureMap().get("病历日期");
+            if (StringUtils.isNotEmpty(recordTime)) {
+                Date recordDate = StringUtil.parseDateTime(recordTime);
                 dateRecordDay.add(DateUtil.dateZeroClear(recordDate));
             }
         }
@@ -95,20 +122,23 @@ public class THR03024 extends QCCatalogue {
 
         // 医嘱开始时间当天有查房记录
         if (!dateRecordDay.contains(doctorDateStart)) {
+            info.set(DateUtil.formatDate(doctorDateStart));
             status.set("-1");
             return ;
         }
         // 医嘱结束时间当天有查房记录
         if (!dateRecordDay.contains(doctorDateEnd)) {
+            info.set(DateUtil.formatDate(doctorDateEnd));
             status.set("-1");
             return ;
         }
         Date nextDate = doctorDateStart;
         int returnFlag = 0; // 防止出现死循环系统崩溃
+        String infoStr = "";
         while(returnFlag <= 1000) {
             if (!dateRecordDay.contains(nextDate)) {
                 status.set("-1");
-                return ;
+                infoStr = CatalogueUtil.concatInfo(infoStr, DateUtil.formatDate(nextDate));
             }
             nextDate = DateUtil.addDate(nextDate, 1);
             if (nextDate.after(doctorDateEnd)) {
@@ -116,5 +146,8 @@ public class THR03024 extends QCCatalogue {
             }
             returnFlag++; // 防止出现死循环系统崩溃
         }
+        if (StringUtils.isNotEmpty(infoStr)) {
+            info.set(infoStr);
+        }
     }
 }

+ 3 - 4
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/FirstCourseRecordAI.java

@@ -102,11 +102,10 @@ public class FirstCourseRecordAI extends ModelAI {
                 //先从结构化数据找病例特点
                 if (StringUtil.isNotBlank(structureMap.get("现病史"))) {
                     putContent(similarContent, structureMap.get("现病史"), inputInfo.getBeHospitalizedDoc().getPresentLabel().getText());
+                } else if (firstCourseRecordDoc.getCaseCharacteristicLabel() != null && StringUtil.isNotBlank(firstCourseRecordDoc.getCaseCharacteristicLabel().getText())) {
+                    //再从doc找病例特点
+                    putContent(similarContent, firstCourseRecordDoc.getCaseCharacteristicLabel().getText(), inputInfo.getBeHospitalizedDoc().getPresentLabel().getText());
                 }
-                //                else if (firstCourseRecordDoc.getCaseCharacteristicLabel() != null && StringUtil.isNotBlank(firstCourseRecordDoc.getCaseCharacteristicLabel().getText())) {
-                //                    //再从doc找病例特点
-                //                    putContent(similarContent, firstCourseRecordDoc.getCaseCharacteristicLabel().getText(), inputInfo.getBeHospitalizedDoc().getPresentLabel().getText());
-                //                }
             }
 
             JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);//crf返回数据

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

@@ -43,7 +43,7 @@ public class CatalogueUtil {
         if (StringUtil.isEmpty(content)) {
             return "";
         }
-        return content.replaceAll("[\r\n|/r/n|\n|/n|/t|\t]", "").trim();
+        return content.replaceAll("[\r\n|/r/n|\n|/n|/t|\t]", " ").trim();
     }
 
     public static String[] extractDigit(String value) {

kernel/src/main/resources/application.yml → kernel/src/main/resources/bootstrap.yml


+ 1 - 0
public/src/main/java/com/lantone/qc/pub/Content.java

@@ -293,6 +293,7 @@ public class Content {
             "yyyy/MM/ddHH:m",
             "yyyy/MM/ddH:mm",
             "yyyy/MM/ddH:m",
+            "yyyy/MM/ddHH:mm:",
             "yyyy/M/ddHH:mm",
             "yyyy/M/ddHH:m",
             "yyyy/M/ddH:mm",

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfCrisisValueReportDocTrans.java

@@ -43,6 +43,8 @@ public class ShaoyfCrisisValueReportDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
             "本人姓名=姓名",
-            "危急=危急值"
+            "危急=危急值记录内容",
+            "事件日期=记录时间",
+            "危急值=危急值记录内容"
     );
 }

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfDeathCaseDiscussDocTrans.java

@@ -44,7 +44,8 @@ public class ShaoyfDeathCaseDiscussDocTrans extends ModelDocTrans {
             "事件日期=记录时间",
             "现病史- 发病情况=入院情况",
             "医生=记录医师",
-            "本人姓名=姓名"
+            "本人姓名=姓名",
+            "参加人员及职称=参加讨论人员"
     );
 
 }

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfDifficultCaseDiscussDocTrans.java

@@ -47,7 +47,8 @@ public class ShaoyfDifficultCaseDiscussDocTrans extends ModelDocTrans {
             "结 论=结论",
             "讨论意见=讨论内容",
             "事件日期=讨论时间",
-            "本人姓名=姓名"
+            "本人姓名=姓名",
+            "参加人员及职称=参加讨论者"
     );
 
 }

+ 8 - 8
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfFirstCourseRecordDocTrans.java

@@ -33,14 +33,14 @@ public class ShaoyfFirstCourseRecordDocTrans extends ModelDocTrans {
         if (sourceMap.get("主诊医生") != null) {
             sourceMap.put("主诊医生", sourceMap.get("主诊医生").replace("&amp;amp;nbsp;", ""));
         }
-        PropertiesUtil propertiesUtil = new PropertiesUtil("kernel.properties");
-        MysqlJdbc nlpJdbc = new MysqlJdbc(propertiesUtil.getProperty("mysql.redis.user"), propertiesUtil.getProperty("mysql.redis.password"), propertiesUtil.getProperty("mysql.redis.url"));
-
-        Map<String, Object> map = new HashMap<>();
-        map.put("ft", sourceMap.get("病例特点"));
-        List<Map<String, Object>> list = new ArrayList<>();
-        list.add(map);
-        nlpJdbc.insert(list, "ft_temp", new String[]{"ft"});
+//        PropertiesUtil propertiesUtil = new PropertiesUtil("kernel.properties");
+//        MysqlJdbc nlpJdbc = new MysqlJdbc(propertiesUtil.getProperty("mysql.redis.user"), propertiesUtil.getProperty("mysql.redis.password"), propertiesUtil.getProperty("mysql.redis.url"));
+//
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("ft", sourceMap.get("病例特点"));
+//        List<Map<String, Object>> list = new ArrayList<>();
+//        list.add(map);
+//        nlpJdbc.insert(list, "ft_temp", new String[]{"ft"});
         Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
         structureMap.put("记录时间",structureMap.get("病历日期"));
         // 病例特点=主诉+现病史-发病情况+专科检查+实验室检查+影像学检查+辅助检查结果+呼吸+脉搏+体温+血压

+ 1 - 2
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfOperationDocTrans.java

@@ -203,9 +203,8 @@ public class ShaoyfOperationDocTrans extends ModelDocTrans {
             "参加人员及职称=参加人员",
             "主刀医师=主刀医师签名",
             "术前准备=术前准备内容",
-            "注意事项=术前术后注意事项",
+            "注意事项=可能意外和防范措施",
             "辅助检查结果=辅助检查",
-            "术中、术后防范措施=可能意外和防范措施",
             "现病史- 发病情况=发病经过",
             "本人姓名=姓名",
             "手术名称=拟行术式",