Browse Source

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

Conflicts:
	kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0382.java
louhr 5 years ago
parent
commit
58932c934e
48 changed files with 51046 additions and 51024 deletions
  1. 5 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02956.java
  2. 5 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02957.java
  3. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0440.java
  4. 15 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0441.java
  5. 13 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0444.java
  6. 4 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0492.java
  7. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0299.java
  8. 12 9
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0307.java
  9. 8 8
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0308.java
  10. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0569.java
  11. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0534.java
  12. 14 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0383.java
  13. 13 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0384.java
  14. 14 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0386.java
  15. 23 14
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0084.java
  16. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0497.java
  17. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0500.java
  18. 3 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0170.java
  19. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0204.java
  20. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0205.java
  21. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0206.java
  22. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0212.java
  23. 9 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0226.java
  24. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0242.java
  25. 22 20
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0248.java
  26. 35 26
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0250.java
  27. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0251.java
  28. 4 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0253.java
  29. 4 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0260.java
  30. 4 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0262.java
  31. 4 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0264.java
  32. 4 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0266.java
  33. 9 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02885.java
  34. 9 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02886.java
  35. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0323.java
  36. 52 69
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0587.java
  37. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0636.java
  38. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0651.java
  39. 0 85
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0587.java
  40. 15 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0682.java
  41. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/ModelAI.java
  42. 25357 25357
      kernel/src/main/resources/cache/3/concept_diag_properties.dict
  43. 25357 25357
      kernel/src/main/resources/cache/3/hospital_diag_info.dict
  44. 1 0
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouClinicalBloodDocTrans.java
  45. 3 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouCrisisValueReportDocTrans.java
  46. 2 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstCourseRecordDocTrans.java
  47. 6 3
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouOperationDocTrans.java
  48. 1 0
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouRescueDocTrans.java

+ 5 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02956.java

@@ -24,10 +24,11 @@ public class BEH02956 extends QCCatalogue {
         }
         Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
         String marry = beHospitalStructureMap.get("婚姻");
-        if (StringUtil.isNotBlank(marry) && "已婚".equals(marry)) {
-            if (StringUtil.isBlank(beHospitalStructureMap.get("结婚年龄"))) {
-                status.set("-1");
-            }
+        if (StringUtil.isNotBlank(marry) && "未婚".equals(marry)){
+            return;
+        }
+        if (StringUtil.isBlank(beHospitalStructureMap.get("结婚年龄"))) {
+            status.set("-1");
         }
     }
 }

+ 5 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02957.java

@@ -24,10 +24,11 @@ public class BEH02957 extends QCCatalogue {
         }
         Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
         String marry = beHospitalStructureMap.get("婚姻");
-        if (StringUtil.isNotBlank(marry) && "已婚".equals(marry)) {
-            if (StringUtil.isBlank(beHospitalStructureMap.get("夫妻关系"))) {
-                status.set("-1");
-            }
+        if (StringUtil.isNotBlank(marry) && "未婚".equals(marry)){
+            return;
+        }
+        if (StringUtil.isBlank(beHospitalStructureMap.get("夫妻关系"))) {
+            status.set("-1");
         }
     }
 }

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

@@ -25,7 +25,7 @@ public class BEH0440 extends QCCatalogue {
             return;
         }
         Map<String, String> bhMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if (StringUtil.isNotBlank(bhMap.get("户口地址"))) {
+        if (StringUtil.isNotBlank(bhMap.get("户口地址")) || StringUtil.isNotBlank(bhMap.get("联系地址"))) {
             status.set("0");
         }
     }

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

@@ -32,10 +32,12 @@ public class BEH0441 extends QCCatalogue {
             status.set("0");
             return;
         }
+        List<String> words = Lists.newArrayList("胃纳", "食纳", "食欲", "未纳", "纳眠", "饮食", "纳眠"
+                ,"禁食","未食","鼻饲","食","吃","饮");
+        /*
         String presentText = presentLabel.getText();
         if (StringUtil.isNotBlank(presentText)) {
-            List<String> words = Lists.newArrayList("胃纳", "食纳", "食欲", "未纳", "纳眠", "饮食", "纳眠"
-                    ,"禁食","未食","鼻饲","食","吃","饮");
+
             for (String word : words) {
                 if (presentText.contains(word)) {
                     status.set("0");
@@ -43,6 +45,7 @@ public class BEH0441 extends QCCatalogue {
                 }
             }
         }
+         */
         List<GeneralDesc> generals = presentLabel.getGenerals();
         List<General> gens = presentLabel.getGens();
 
@@ -53,19 +56,22 @@ public class BEH0441 extends QCCatalogue {
 
         if (ListUtil.isNotEmpty(generals)) {
             for (GeneralDesc general : generals) {
-                if (general.getName().contains("纳") || general.getName().contains("饮食")
-                        || general.getName().contains("进食") || general.getName().contains("食欲")) {
-                    status.set("0");
-                    break;
+                for (String word : words) {
+                    if (general.getName().contains(word)) {
+                        status.set("0");
+                        return;
+                    }
                 }
             }
         }
 
         if (ListUtil.isNotEmpty(gens)) {
             for (General general : gens) {
-                if (general.getName().contains("纳") || general.getName().contains("饮食") || general.getName().contains("进食")) {
-                    status.set("0");
-                    break;
+                for (String word : words) {
+                    if (general.getName().contains(word)) {
+                        status.set("0");
+                        return;
+                    }
                 }
             }
         }

+ 13 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0444.java

@@ -32,6 +32,7 @@ public class BEH0444 extends QCCatalogue {
         PresentLabel presentLabel = beHospitalizedDoc.getPresentLabel();
         if (presentLabel != null) {
             List<String> words = Lists.newArrayList("神志", "神清", "神不清", "意识清", "意识不清", "昏迷","精神","意识");
+            /*
             String presentLabelText = presentLabel.getText();
             if (StringUtil.isNotBlank(presentLabelText)) {
                 for (String word : words) {
@@ -41,6 +42,8 @@ public class BEH0444 extends QCCatalogue {
                     }
                 }
             }
+
+             */
             List<GeneralDesc> generals = presentLabel.getGenerals();
             List<General> gens = presentLabel.getGens();
             if (ListUtil.isEmpty(generals) && ListUtil.isEmpty(gens)) {
@@ -49,18 +52,22 @@ public class BEH0444 extends QCCatalogue {
             }
             if (ListUtil.isNotEmpty(generals)) {
                 for (GeneralDesc general : generals) {
-                    if (general.getName().contains("精神") || general.getName().contains("神志")) {
-                        status.set("0");
-                        break;
+                    for (String word : words) {
+                        if (general.getName().contains(word)){
+                            status.set("0");
+                            return;
+                        }
                     }
                 }
             }
 
             if (ListUtil.isNotEmpty(gens)) {
                 for (General general : gens) {
-                    if (general.getName().contains("精神") || general.getName().contains("神志")) {
-                        status.set("0");
-                        break;
+                    for (String word : words) {
+                        if (general.getName().contains(word)){
+                            status.set("0");
+                            return;
+                        }
                     }
                 }
             }

+ 4 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0492.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.label.LisLabel;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -28,6 +29,9 @@ public class BEH0492 extends QCCatalogue {
             if (lisLabel != null && CatalogueUtil.isEmpty(lisLabel.getText())) {
                 status.set("-1");
             }
+            if (StringUtil.isBlank(inputInfo.getBeHospitalizedDoc().getStructureMap().get("实验室检查"))){
+                status.set("-1");/* 台州市里医院结构化判断 */
+            }
         }
     }
 }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0299.java

@@ -28,7 +28,7 @@ public class CLI0299 extends QCCatalogue {
             st:
             for (DoctorAdviceDoc doc:doctorAdviceDocs) {
                 Map<String, String> structureMap = doc.getStructureMap();
-                if(structureMap.get("医嘱项目名称").contains("输血") && structureMap.get("医嘱处方类型").contains("治疗")){
+                if(structureMap.get("医嘱项目名称").contains("输血")){
                     if(ListUtil.isEmpty(clinicalBloodDocs)){
                         status.set("-1");
                         break st;

+ 12 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0307.java

@@ -22,24 +22,27 @@ public class CLI0307 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
 
         List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
-        if(ListUtil.isEmpty(clinicalBloodDocs)){
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
             status.set("0");
             return;
         }
-        if(clinicalBloodDocs != null && clinicalBloodDocs.size()>0){
-            for (ClinicalBloodDoc cliB:clinicalBloodDocs) {
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            int matchSum = 0;
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
                 Map<String, String> cliBStructureMap = cliB.getStructureMap();
                 //台州
-                if(StringUtils.isNotEmpty(cliBStructureMap.get("输血计划"))){
-                    status.set("0");
-                    break;
+                if (StringUtils.isNotEmpty(cliBStructureMap.get("输血计划"))) {
+                    matchSum++;
+                    continue;
                 }
 
-                if(StringUtils.isNotEmpty(cliBStructureMap.get("输注种类、血型、数量"))){
-                    status.set("0");
-                    break;
+                if (StringUtils.isNotEmpty(cliBStructureMap.get("输注种类、血型、数量"))) {
+                    matchSum++;
                 }
             }
+            if (matchSum == clinicalBloodDocs.size()) {
+                status.set("0");
+            }
         }
 
     }

+ 8 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0308.java

@@ -35,16 +35,16 @@ public class CLI0308 extends QCCatalogue {
                     status.set("0");
                     break;
                 }
+
                 String infusion_process = cliBStructureMap.get("输注过程");
-                if (StringUtils.isEmpty(infusion_process)) {
-                    status.set("0");
-                    continue;
-                }
-                if (infusion_process.matches(regex) || infusion_process.contains("无") || infusion_process.contains("未见")) {
-                    status.set("0");
-                } else {
-                    status.set("-1");
+                if (StringUtils.isNotEmpty(infusion_process)) {
+                    if (infusion_process.matches(regex) || infusion_process.contains("无") || infusion_process.contains("未见")) {
+                        status.set("0");
+                    } else {
+                        status.set("-1");
+                    }
                 }
+
             }
         } else {
             status.set("0");

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0569.java

@@ -52,7 +52,7 @@ public class CLI0569 extends QCCatalogue {
                 }
             }
             if (matchSum != clinicalBloodDocs.size()) {
-                status.set("0");
+                status.set("-1");
             }
         }
 

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0534.java

@@ -32,7 +32,7 @@ public class CON0534 extends QCCatalogue {
             }
             Map<String, String> consultationResultStructureMap = consultationApplicationDoc.getStructureMap();
             String consultationDateStr = consultationResultStructureMap.get("会诊科室");
-            if (CatalogueUtil.isEmpty(consultationDateStr)) {
+            if (CatalogueUtil.isEmpty(consultationDateStr) || "【会诊科室】".equals(consultationDateStr)) {
                 status.set("-1");
                 return;
             }

+ 14 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0383.java

@@ -24,11 +24,23 @@ public class CRI0383 extends QCCatalogue {
         List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
         if (ListUtil.isNotEmpty(crisisValueReportDocs)) {
             crisisValueReportDocs.forEach(crisisValueReportDoc -> {
-                if (StringUtil.isBlank(crisisValueReportDoc.getStructureMap().get("报告时间"))) {
-                    status.set("-1");
+                if (StringUtil.isNotBlank(crisisValueReportDoc.getStructureMap().get("内容"))) {
+                    /* 台州相应数据需从危急值内容中截取 */
+                    String reportDate = getReportDate(crisisValueReportDoc.getStructureMap().get("内容"));
+                    if (StringUtil.isBlank(reportDate)) {
+                        status.set("-1");
+                    }
                 }
             });
         }
     }
 
+    private String getReportDate(String str) {
+        String reportDate = "";
+        if (StringUtil.isNotBlank(str) && str.contains("于{") && str.contains("}接到")) {
+            reportDate = str.substring(str.indexOf("于{") + 2, str.indexOf("}接到"));
+        }
+        return reportDate;
+    }
+
 }

+ 13 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0384.java

@@ -24,11 +24,22 @@ public class CRI0384 extends QCCatalogue {
         List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
         if (ListUtil.isNotEmpty(crisisValueReportDocs)) {
             crisisValueReportDocs.forEach(crisisValueReportDoc -> {
-                if (StringUtil.isBlank(crisisValueReportDoc.getStructureMap().get("危急值记录内容"))) {
-                    status.set("-1");
+                if (StringUtil.isNotBlank(crisisValueReportDoc.getStructureMap().get("内容"))) {
+                    /* 台州相应数据需从危急值内容中截取 */
+                    String report = getReport(crisisValueReportDoc.getStructureMap().get("内容"));
+                    if (StringUtil.isBlank(report)) {
+                        status.set("-1");
+                    }
                 }
             });
         }
     }
 
+    private String getReport(String str) {
+        String reportDate = "";
+        if (StringUtil.isNotBlank(str) && str.contains("危急值报告:{") && str.contains("}。立即查看")) {
+            reportDate = str.substring(str.indexOf("危急值报告:{") + 7, str.indexOf("}。立即查看"));
+        }
+        return reportDate;
+    }
 }

+ 14 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/crisisvaluereport/CRI0386.java

@@ -24,11 +24,23 @@ public class CRI0386 extends QCCatalogue {
         List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
         if (ListUtil.isNotEmpty(crisisValueReportDocs)) {
             crisisValueReportDocs.forEach(crisisValueReportDoc -> {
-                if (StringUtil.isBlank(crisisValueReportDoc.getStructureMap().get("病情分析及处理"))) {
-                    status.set("-1");
+                if (StringUtil.isNotBlank(crisisValueReportDoc.getStructureMap().get("内容"))) {
+                    /* 台州相应数据需从危急值内容中截取 */
+                    String report = getReport(crisisValueReportDoc.getStructureMap().get("内容"));
+                    if (StringUtil.isBlank(report)) {
+                        status.set("-1");
+                    }
                 }
             });
         }
     }
 
+    private String getReport(String str) {
+        String reportDate = "";
+        if (StringUtil.isNotBlank(str) && str.contains("给予{") && str.contains("},密切")) {
+            reportDate = str.substring(str.indexOf("给予{") + 3, str.indexOf("},密切"));
+        }
+        return reportDate;
+    }
+
 }

+ 23 - 14
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0084.java

@@ -1,10 +1,12 @@
 package com.lantone.qc.kernel.catalogue.firstcourserecord;
 
+import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
+import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
@@ -21,41 +23,48 @@ public class FIRC0084 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
-        if(firstCourseRecordDoc != null){
+        if (firstCourseRecordDoc != null) {
             Map<String, String> courseRecordDocStructureMap = firstCourseRecordDoc.getStructureMap();
-            if(courseRecordDocStructureMap != null){
+            if (courseRecordDocStructureMap != null) {
                 String identify_diag = courseRecordDocStructureMap.get("鉴别诊断");
                 String characteristic = courseRecordDocStructureMap.get("病例特点");
                 String initDiags = courseRecordDocStructureMap.get("初步诊断");
                 String condition = courseRecordDocStructureMap.get("诊断依据");
                 String pacs = courseRecordDocStructureMap.get("辅助检查");
+                if (StringUtil.isBlank(pacs)){
+                    pacs = getPacs(courseRecordDocStructureMap);
+                }
                 String tretment_plan = courseRecordDocStructureMap.get("诊疗计划");
-                if(StringUtils.isNotEmpty(tretment_plan)){
-                    if(CatalogueUtil.removeSpecialChar(tretment_plan).contains("同上")){
+                if (StringUtils.isNotEmpty(tretment_plan)) {
+                    if (CatalogueUtil.removeSpecialChar(tretment_plan).contains("同上")) {
                         status.set("-1");
                     }
-                }else if(StringUtils.isNotEmpty(identify_diag)){
-                    if(CatalogueUtil.removeSpecialChar(identify_diag).contains("同上")){
+                } else if (StringUtils.isNotEmpty(identify_diag)) {
+                    if (CatalogueUtil.removeSpecialChar(identify_diag).contains("同上")) {
                         status.set("-1");
                     }
-                }else if(StringUtils.isNotEmpty(characteristic)){
-                    if(CatalogueUtil.removeSpecialChar(characteristic).contains("同上")){
+                } else if (StringUtils.isNotEmpty(characteristic)) {
+                    if (CatalogueUtil.removeSpecialChar(characteristic).contains("同上")) {
                         status.set("-1");
                     }
-                }else if(StringUtils.isNotEmpty(initDiags)){
-                    if(CatalogueUtil.removeSpecialChar(initDiags).contains("同上")){
+                } else if (StringUtils.isNotEmpty(initDiags)) {
+                    if (CatalogueUtil.removeSpecialChar(initDiags).contains("同上")) {
                         status.set("-1");
                     }
-                }else if(StringUtils.isNotEmpty(condition)){
-                    if(CatalogueUtil.removeSpecialChar(condition).contains("同上")){
+                } else if (StringUtils.isNotEmpty(condition)) {
+                    if (CatalogueUtil.removeSpecialChar(condition).contains("同上")) {
                         status.set("-1");
                     }
-                }else if(StringUtils.isNotEmpty(pacs)){
-                    if(CatalogueUtil.removeSpecialChar(pacs).contains("同上")){
+                } else if (StringUtils.isNotEmpty(pacs)) {
+                    if (CatalogueUtil.removeSpecialChar(pacs).contains("同上")) {
                         status.set("-1");
                     }
                 }
             }
         }
     }
+
+    private String getPacs(Map<String, String> courseRecordDocStructureMap) {
+        return CatalogueUtil.structureMapJoin(courseRecordDocStructureMap, Lists.newArrayList("实验室检查", "影像学检查"));
+    }
 }

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

@@ -23,7 +23,7 @@ public class FIRC0497 extends QCCatalogue {
         if(firstCourseRecordDoc != null){
             Map<String, String> firstRecordMap = firstCourseRecordDoc.getStructureMap();
             if(firstRecordMap != null){
-                String morbidity_after = firstRecordMap.get("发病经过");
+                String morbidity_after = firstRecordMap.get("现病史");/* 台州将发病经过映射成现病史,以便于首程现病史相似度方便取值 */
                 if(morbidity_after != null){
                     if(CatalogueUtil.isEmpty(morbidity_after)){
                         status.set("-1");

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

@@ -40,7 +40,7 @@ public class FIRC0500 extends QCCatalogue {
 
         if (StringUtil.isNotBlank(firstCourseChief)) {
             firstCourseChief = firstCourseChief.replaceAll("[\\p{Punct}\\pP。]", "");
-            if (firstCourseChief.equals(chief_text)) { //首程主诉.equals(入院记录主诉)
+            if (firstCourseChief.contains(chief_text) || chief_text.contains(firstCourseChief)) { //首程主诉.equals(入院记录主诉)
                 status.set("0");
                 return;
             }

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

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

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

@@ -11,7 +11,7 @@ import java.util.Map;
 
 /**
  * @ClassName : FIRP0204
- * @Description : 籍贯没有填写
+ * @Description : 籍贯填写
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28ss
  */

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

@@ -11,7 +11,7 @@ import java.util.Map;
 
 /**
  * @ClassName : FIRP0205
- * @Description : 民族没有填写
+ * @Description : 民族填写
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28ss
  */

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

@@ -11,7 +11,7 @@ import java.util.Map;
 
 /**
  * @ClassName : FIRP0206
- * @Description : 职业没有填写
+ * @Description : 职业填写
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28ss
  */

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

@@ -11,7 +11,7 @@ import java.util.Map;
 
 /**
  * @ClassName : FIRP0212
- * @Description : 先地址邮编未填写
+ * @Description : 现住址邮编未填写
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28ss
  */

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

@@ -1,12 +1,12 @@
 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.List;
 import java.util.Map;
 
 /**
@@ -19,13 +19,15 @@ import java.util.Map;
 public class FIRP0226 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 qc_date = firstpageStructureMap.get(Content.dischargeDiag);
-            if(CatalogueUtil.isEmpty(qc_date)){
-                status.set("-1");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
+            Map<String, Object> structureExtMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            Object dischargeDiagObj = structureExtMap.get(Content.dischargeDiag);
+            if (dischargeDiagObj != null) {
+                List<Map<String, String>> dischargeDiagList = (List) dischargeDiagObj;
+                if (dischargeDiagList.size() == 0) {
+                    status.set("-1");
+                }
             }
-
         }
     }
 }

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

@@ -23,7 +23,8 @@ public class FIRP0242 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String outDept = firstpageStructureMap.get(Content.outDept);
-            if(CatalogueUtil.isEmpty(outDept)){
+            /* 台州运行质控病案首页出院科室未填时默认为【出院科室】,希望之后his能直接处理掉默认值设为空 */
+            if(CatalogueUtil.isEmpty(outDept) || "【出院科室】".equals(outDept)){
                 status.set("-1");
             }
 

+ 22 - 20
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0248.java

@@ -5,10 +5,9 @@ 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.RescueDoc;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -23,35 +22,38 @@ import java.util.regex.Pattern;
 public class FIRP0248 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+        if (inputInfo.getFirstPageRecordDoc() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            int rescueNum = inputInfo.getRescueDocs().size();
+            boolean match = false;
+
+            String fpRescueNumStr = firstpageStructureMap.get("病人抢救次数");
+            if (StringUtil.isNotBlank(fpRescueNumStr) && CatalogueUtil.numbersOnly(fpRescueNumStr)) {
+                int fpRescueNum = Integer.parseInt(fpRescueNumStr);
+                if (fpRescueNum == rescueNum) {
+                    match = true;
+                }
+            }
             String name = firstpageStructureMap.get(Content.rescue_condition);
-            if (!CatalogueUtil.isEmpty(name)){
+            if (!CatalogueUtil.isEmpty(name)) {
                 String[] split = name.split("\\s+");
                 Pattern compile = Pattern.compile("(?<=抢救).*(?=次)");
                 Matcher matcher = compile.matcher(split[0]);
-                while (matcher.find()){
-                    try{
+                while (matcher.find()) {
+                    try {
                         String number = matcher.group(0);
-                        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
-                        if(rescueDocs != null && rescueDocs.size()>0){
-                            int size = rescueDocs.size();
-                            try{
-                                int num = Integer.parseInt(number);
-                                if(num != size){
-                                    status.set("-1");
-                                }
-                            }catch (Exception e){
-                                e.printStackTrace();
-                            }
-
+                        int num = Integer.parseInt(number);
+                        if (num == rescueNum) {
+                            match = true;
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                 }
+            }
 
-
+            if (!match) {
+                status.set("-1");
             }
         }
     }

+ 35 - 26
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0250.java

@@ -6,6 +6,7 @@ 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.RescueDoc;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -23,45 +24,53 @@ import java.util.regex.Pattern;
 public class FIRP0250 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getRescueDocs().size() > 0) {
+            List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+            int rescueNum = getRescueNum(rescueDocs);/* 抢救记录中抢救成功次数 */
+            boolean match = false;
+
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String successfulRescueTimes = firstpageStructureMap.get("病人抢救成功次数");
+            int successfulRescueTimesTZ = 0;
+            if (StringUtil.isNotBlank(successfulRescueTimes) && CatalogueUtil.numbersOnly(successfulRescueTimes)) {
+                successfulRescueTimesTZ = Integer.parseInt(successfulRescueTimes);
+            }
+            if (rescueNum == successfulRescueTimesTZ) {
+                match = true;
+            }
             String name = firstpageStructureMap.get(Content.rescue_condition);
-            if (!CatalogueUtil.isEmpty(name)){
+            if (StringUtil.isNotBlank(name)) {
                 String[] split = name.split("\\s+");
                 Pattern compile = Pattern.compile("(?<=成功).*(?=次)");
                 Matcher matcher = compile.matcher(split[0]);
-                while (matcher.find()){
-                    try{
+                while (matcher.find()) {
+                    try {
                         String number = matcher.group(0);
-                        int i = 0;
-                        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
-                        if(rescueDocs != null && rescueDocs.size()>0){
-                            for (RescueDoc re:rescueDocs
-                                 ) {
-                                Map<String, String> structureMap = re.getStructureMap();
-                                String qjgc = structureMap.get("抢救过程");
-                                if(!qjgc.contains("死亡")){
-                                    i++;
-                                }
-                            }
-
-                            try{
-                                int num = Integer.parseInt(number);
-                                if(num != i){
-                                    status.set("-1");
-                                }
-                            }catch (Exception e){
-                                e.printStackTrace();
-                            }
-
+                        int num = Integer.parseInt(number);
+                        if (num == rescueNum) {
+                            match = true;
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                 }
+            }
 
+            if (!match){
+                status.set("-1");
+            }
+        }
+    }
 
+    private int getRescueNum(List<RescueDoc> rescueDocs) {
+        int i = 0;
+        for (RescueDoc re : rescueDocs) {
+            Map<String, String> structureMap = re.getStructureMap();
+            String qjgc = structureMap.get("抢救过程");
+            if (!qjgc.contains("死亡")) {
+                i++;
             }
         }
+        return i;
     }
 }

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

@@ -25,7 +25,8 @@ public class FIRP0251 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String name = firstpageStructureMap.get(Content.single_disease_management);
-            if (!CatalogueUtil.isEmpty(name)){
+            /* 台州运行质控病案首页未填时有默认值,希望之后his能直接处理掉默认值,设为空 */
+            if (!CatalogueUtil.isEmpty(name) && !"【】".equals(name)){
                 status.set("0");
             }
         }

+ 4 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0253.java

@@ -1,10 +1,10 @@
 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 com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -18,14 +18,15 @@ import java.util.Map;
 @Component
 public class FIRP0253 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getFirstPageRecordDoc() == null){
+        if (inputInfo.getFirstPageRecordDoc() == null) {
             status.set("0");
             return;
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String name = firstpageStructureMap.get(Content.clinical_pathway_management);
-            if (!CatalogueUtil.isEmpty(name)){
+            /* 台州运行质控病案首页未填时有默认值,希望之后his能直接处理掉默认值,设为空 */
+            if (StringUtil.isNotBlank(name) && !"【】".equals(name)) {
                 status.set("0");
             }
         }

+ 4 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0260.java

@@ -1,10 +1,10 @@
 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 com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -21,7 +21,9 @@ public class FIRP0260 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(firstpageStructureMap.get(Content.i_o))){
+            String iO = firstpageStructureMap.get(Content.i_o);
+            /* 台州运行质控病案首页未填时有默认值,希望之后his能直接处理掉默认值,设为空 */
+            if (StringUtil.isBlank(iO) || "【】".equals(iO)) {
                 status.set("-1");
             }
         }

+ 4 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0262.java

@@ -1,10 +1,10 @@
 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 com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -21,7 +21,9 @@ public class FIRP0262 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(firstpageStructureMap.get(Content.ob_oa))){
+            String obOa = firstpageStructureMap.get(Content.ob_oa);
+            /* 台州运行质控病案首页未填时有默认值,希望之后his能直接处理掉默认值,设为空 */
+            if (StringUtil.isBlank(obOa) || "【】".equals(obOa)) {
                 status.set("-1");
             }
         }

+ 4 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0264.java

@@ -1,10 +1,10 @@
 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 com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -21,7 +21,9 @@ public class FIRP0264 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(firstpageStructureMap.get(Content.clinical_pathology))){
+            String clinicalPathology = firstpageStructureMap.get(Content.clinical_pathology);
+            /* 台州运行质控病案首页未填时有默认值,希望之后his能直接处理掉默认值,设为空 */
+            if (StringUtil.isBlank(clinicalPathology) || "【】".equals(clinicalPathology)) {
                 status.set("-1");
             }
         }

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

@@ -5,6 +5,7 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -21,7 +22,9 @@ public class FIRP0266 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(firstpageStructureMap.get(Content.radiation_pathology))){
+            String radiationPathology = firstpageStructureMap.get(Content.radiation_pathology);
+            /* 台州运行质控病案首页未填时有默认值,希望之后his能直接处理掉默认值,设为空 */
+            if (StringUtil.isBlank(radiationPathology) || "【】".equals(radiationPathology)) {
                 status.set("-1");
             }
         }

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

@@ -23,10 +23,15 @@ public class FIRP02885 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String zipcode = firstpageStructureMap.get(Content.household_address_zipcode);
-            if (StringUtil.isNotBlank(zipcode) && CatalogueUtil.numbersOnly(zipcode)) {
-                String regex = "^\\d{6}$";
-                if (!zipcode.matches(regex)) {
-                    status.set("-1");
+            if (StringUtil.isNotBlank(zipcode)) {
+                if ("-".equals(zipcode)) {
+                    return;
+                }
+                if (CatalogueUtil.numbersOnly(zipcode)) {
+                    String regex = "^\\d{6}$";
+                    if (!zipcode.matches(regex)) {
+                        status.set("-1");
+                    }
                 }
             }
         }

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

@@ -23,10 +23,15 @@ public class FIRP02886 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String zipcode = firstpageStructureMap.get(Content.work_unit_zipcode);
-            if (StringUtil.isNotBlank(zipcode) && CatalogueUtil.numbersOnly(zipcode)) {
-                String regex = "^\\d{6}$";
-                if (!zipcode.matches(regex)) {
-                    status.set("-1");
+            if (StringUtil.isNotBlank(zipcode)) {
+                if ("-".equals(zipcode)) {
+                    return;
+                }
+                if (CatalogueUtil.numbersOnly(zipcode)) {
+                    String regex = "^\\d{6}$";
+                    if (!zipcode.matches(regex)) {
+                        status.set("-1");
+                    }
                 }
             }
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0323.java

@@ -36,7 +36,7 @@ public class OPE0323 extends QCCatalogue {
                     long count = operationDocs.stream().filter(operationDoc -> {
                         boolean flag = false;
                         if (operationDoc.getOperationRecordDoc() != null) {
-                            String surgeon = operationDoc.getOperationRecordDoc().getStructureMap().get("手术医师");
+                            String surgeon = operationDoc.getOperationRecordDoc().getStructureMap().get("主刀医师");
                             String assist1 = operationDoc.getOperationRecordDoc().getStructureMap().get("一助");
                             String signature = operationDoc.getOperationRecordDoc().getStructureMap().get("主刀医师签名");
                             if (StringUtil.isNotBlank(surgeon) && StringUtil.isNotBlank(assist1)) {

+ 52 - 69
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0587.java

@@ -1,102 +1,85 @@
 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.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
+import com.lantone.qc.pub.model.doc.transferrecord.TransferOutDoc;
+import com.lantone.qc.pub.model.doc.transferrecord.TransferRecordDoc;
 import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 /**
- * @author wangfeng
- * @Description: 术后没有连续记录3天
- * @date 2020-07-01 10:31
+ * @ClassName : THR0587
+ * @Description : 术后病程录没有连续记录3天
+ * @Author : 胡敬
+ * @Date: 2020-03-30 16:17
  */
 @Component
 public class OPE0587 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();
+        List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
         if (ListUtil.isEmpty(operationDocs) || ListUtil.isEmpty(threeLevelWardDocs)) {
             return;
         }
-        if (inputInfo.getMedicalRecordInfoDoc() == null || inputInfo.getMedicalRecordInfoDoc().getStructureMap().size() == 0) {
-            return;
-        }
-        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-        //取出所有查房时间
-        List<String> roundsDate = new ArrayList<>();
-        for (ThreeLevelWardDoc t : threeLevelWardDocs) {
-            Date threeLevelDate = StringUtil.parseDateTime(t.getStructureMap().get("查房日期"));
-            roundsDate.add(formatter.format(threeLevelDate));
-        }
-
-        //取出出院时间
-        Map<String, String> structureMaps = inputInfo.getFirstPageRecordDoc().getStructureMap();
-        String leaveHospitalDate = structureMaps.get("出院时间") == null ? null : structureMaps.get("出院时间");
-        Date leaveDate = StringUtil.parseDateTime(leaveHospitalDate);
-        //没有出院时间, 直接退出
-        if (leaveHospitalDate != null) {
-        //取出病程信息里的手术信息的所有 手术日期
-        List<String> operDateList = new ArrayList<>();
-        for (OperationDoc opera : operationDocs) {
-            OperationRecordDoc operationRecordDoc = opera.getOperationRecordDoc();
-            String operDate = operationRecordDoc.getStructureMap().get("手术日期");
-            if (StringUtil.isNotBlank(operDate)) {
-                operDateList.add(operDate);
+        //所有查房记录的日期天
+        List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
+        List<Date> wardRecordDayList = getWardRecordDay(allDoctorWradDocs);
+        String OperationEndDateStr = "";
+        //转入日期后应该有的查房记录的日期天
+        List<Date> rollInDay = null;
+        for (OperationDoc operationDoc : operationDocs) {
+            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
+            if (operationRecordDoc == null) {
+                continue;
             }
-        }
-        if (operDateList.size() > 0) {
-            for (String operDates : operDateList) {
-                Date oper = StringUtil.parseDateTime(operDates);
-                //手术时间 减去 出院时间
-                long day = (leaveDate.getTime() - oper.getTime()) / (24 * 60 * 60 * 1000);
-                //时间大于三天才能判断有没有连续三天查房
-                if (day > 3) {
-                    List<String> operDatesNew = new ArrayList<>();
-                    //用手术时间加三天
-                    for (int i = 1; i < 4; i++) {
-                        Date firstTimeOfDay = DateUtil.getFirstTimeOfDay(DateUtil.addDay(oper, i));
-                        operDatesNew.add(formatter.format(firstTimeOfDay));
-                    }
-                    if (roundsDate.size() > 2) {//查房日期取出没有3天时间, 直接报错
-                        //去重
-                        List<String> listTemp = new ArrayList<String>();
-                        for (int i = 0; i < roundsDate.size(); i++) {
-                            if (!listTemp.contains(roundsDate.get(i))) {
-                                listTemp.add(roundsDate.get(i));
-                            }
-                        }
-                        int i = 0;
-                        //循环两个时间List,
-                        for (String str : operDatesNew) {
-                            for (String s : listTemp) {
-                                if (str.equals(s)) {
-                                    i++;
-                                }
-                            }
-                        }
-                        if (i < 3) {
-                            status.set("-1");
-                        }
-                    } else {
-                        status.set("-1");
-                        return;
-                    }
-                }
+            Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
+            OperationEndDateStr = operationRecordStructureMap.get("手术结束时间");
+            if (CatalogueUtil.isEmpty(OperationEndDateStr)) {
+                continue;
+            }
+            Date OperationEndDate = StringUtil.parseDateTime(OperationEndDateStr);
+            rollInDay = new ArrayList<>();
+            for (int i = 1; i <= 3; i++) {
+                Date wardRecordDay = DateUtil.dateZeroClear(DateUtil.addDate(OperationEndDate, i));
+                rollInDay.add(wardRecordDay);
+            }
+            if (!wardRecordDayList.containsAll(rollInDay)) {
+                status.set("-1");
+                return;
             }
         }
     }
+
+    /**
+     * 所有查房记录的日期天
+     *
+     * @param threeLevelWardDocs
+     */
+    private List<Date> getWardRecordDay(List<ThreeLevelWardDoc> threeLevelWardDocs) {
+        List<Date> dateRecordDay = new ArrayList<>();
+        String recordTime = "";
+        for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
+            Map<String, String> rescueStructureMap = threeLevelWardDoc.getStructureMap();
+            recordTime = rescueStructureMap.get("查房日期");
+            Date recordDate = StringUtil.parseDateTime(recordTime);
+            if (recordDate == null) {
+                continue;
+            }
+            dateRecordDay.add(DateUtil.dateZeroClear(recordDate));
+        }
+        return dateRecordDay;
     }
-}
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0636.java

@@ -33,7 +33,7 @@ public class OPE0636 extends QCCatalogue {
                 long count = operationDocs.stream().filter(operationDoc -> {
                     boolean flag = false;
                     if (operationDoc.getOperationRecordDoc() != null
-                            && StringUtil.isBlank(operationDoc.getOperationRecordDoc().getStructureMap().get("手术医师"))) {
+                            && StringUtil.isBlank(operationDoc.getOperationRecordDoc().getStructureMap().get("主治医师"))) {
                         flag = true;
                     }
                     return flag;

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

@@ -35,7 +35,7 @@ public class OPE0651 extends QCCatalogue {
             }
             Map<String, String> operationDiscussionStructureMap = operationDiscussionDoc.getStructureMap();
             String operationDateStr = operationDiscussionStructureMap.get("手术日期");
-            String dateStr = operationDiscussionStructureMap.get("时间");
+            String dateStr = operationDiscussionStructureMap.get("记录日期");
             if (CatalogueUtil.isEmpty(operationDateStr) || CatalogueUtil.isEmpty(dateStr)) {
                 continue;
             }
@@ -44,7 +44,7 @@ public class OPE0651 extends QCCatalogue {
             if (operationDate == null || date == null) {
                 continue;
             }
-            boolean compareTime = CatalogueUtil.compareTime(operationDate, date, (long) 60);
+            boolean compareTime = CatalogueUtil.compareTime(operationDate, date, 60L);
             if (compareTime) {
                 status.set("-1");
                 return;

+ 0 - 85
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0587.java

@@ -1,85 +0,0 @@
-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.ThreeLevelWardDoc;
-import com.lantone.qc.pub.model.doc.operation.OperationDoc;
-import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
-import com.lantone.qc.pub.model.doc.transferrecord.TransferOutDoc;
-import com.lantone.qc.pub.model.doc.transferrecord.TransferRecordDoc;
-import com.lantone.qc.pub.util.DateUtil;
-import com.lantone.qc.pub.util.ListUtil;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName : THR0587
- * @Description : 术后病程录没有连续记录3天
- * @Author : 胡敬
- * @Date: 2020-03-30 16:17
- */
-@Component
-public class THR0587 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
-        if (ListUtil.isEmpty(operationDocs) || ListUtil.isEmpty(threeLevelWardDocs)) {
-            return;
-        }
-        //所有查房记录的日期天
-        List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
-        List<Integer> wardRecordDayList = getWardRecordDay(allDoctorWradDocs);
-        String OperationEndDateStr = "";
-        //转入日期后应该有的查房记录的日期天
-        List<Integer> rollInDay = null;
-        for (OperationDoc operationDoc : operationDocs) {
-            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
-            if (operationRecordDoc == null) {
-                continue;
-            }
-            Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
-            OperationEndDateStr = operationRecordStructureMap.get("手术结束时间");
-            if (CatalogueUtil.isEmpty(OperationEndDateStr)) {
-                continue;
-            }
-            Date OperationEndDate = StringUtil.parseDateTime(OperationEndDateStr);
-            rollInDay = new ArrayList<>();
-            for (int i = 1; i <= 3; i++) {
-                int wardRecordDay = DateUtil.getDay(DateUtil.addDate(OperationEndDate, i));
-                rollInDay.add(wardRecordDay);
-            }
-            if (!wardRecordDayList.containsAll(rollInDay)) {
-                status.set("-1");
-                return;
-            }
-        }
-    }
-
-    /**
-     * 所有查房记录的日期天
-     *
-     * @param threeLevelWardDocs
-     */
-    private List<Integer> getWardRecordDay(List<ThreeLevelWardDoc> threeLevelWardDocs) {
-        List<Integer> dateRecordDay = new ArrayList<>();
-        String recordTime = "";
-        for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
-            Map<String, String> rescueStructureMap = threeLevelWardDoc.getStructureMap();
-            recordTime = rescueStructureMap.get("查房日期");
-            Date recordDate = StringUtil.parseDateTime(recordTime);
-            if (recordDate == null) {
-                continue;
-            }
-            dateRecordDay.add(DateUtil.getDay(recordDate));
-        }
-        return dateRecordDay;
-    }
-}

+ 15 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0682.java

@@ -21,6 +21,19 @@ import java.util.Map;
 @Component
 public class THR0682 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(rescueStructureMap.get("病情变化"))) {
+                status.set("-1");
+                return;
+            }
+        }
+        /*
         status.set("0");
         List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
         if (ListUtil.isEmpty(rescueDocs)) {
@@ -42,5 +55,7 @@ public class THR0682 extends QCCatalogue {
                 return;
             }
         }
+
+         */
     }
 }

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

@@ -251,7 +251,7 @@ public class ModelAI {
      */
     public JSONArray getChiefPresentSimilarOutputs(JSONArray predY) {
         JSONArray dataArr = new JSONArray();
-        if (predY.size() > 0) {
+        if (predY != null && predY.size() > 0) {
             dataArr = predY.getJSONArray(0);
         }
         return dataArr;

File diff suppressed because it is too large
+ 25357 - 25357
kernel/src/main/resources/cache/3/concept_diag_properties.dict


File diff suppressed because it is too large
+ 25357 - 25357
kernel/src/main/resources/cache/3/hospital_diag_info.dict


+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouClinicalBloodDocTrans.java

@@ -44,6 +44,7 @@ public class TaiZhouClinicalBloodDocTrans extends ModelDocTrans {
             "开始时间=输注开始",
             "医生=记录医师",
             "结束时间=输注结束",
+            "病历日期=记录时间",
             "内容=输注后效果评价"
     );
 

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouCrisisValueReportDocTrans.java

@@ -41,6 +41,8 @@ public class TaiZhouCrisisValueReportDocTrans extends ModelDocTrans {
         return crisisValueReportDoc;
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "病历日期=记录时间"
+    );
 
 }

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstCourseRecordDocTrans.java

@@ -79,7 +79,8 @@ public class TaiZhouFirstCourseRecordDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
                         "本人姓名=姓名",
-            "现病史- 发病情况=发病经过",
+            "现病史- 发病情况=现病史",
+            "现病史- 发病情况=现病史",
             "医生=医师签名",
             "治疗计划和措施=治疗计划",
             "体温(耳)=体温耳",

+ 6 - 3
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouOperationDocTrans.java

@@ -107,7 +107,10 @@ public class TaiZhouOperationDocTrans extends ModelDocTrans {
     private List<String> operationDiscussion_keyContrasts = Lists.newArrayList(
             "本人姓名=姓名",
             "开始时间=手术开始时间",
-            "结束时间=手术结束时间"
+            "结束时间=手术结束时间",
+            "书写日期=记录日期",
+            "注意事项=术后注意事项",
+            "治疗计划和措施=术后处理措施"
     );
 
 
@@ -149,8 +152,8 @@ public class TaiZhouOperationDocTrans extends ModelDocTrans {
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
             "结束时间=手术结束时间",
             "开始时间=手术开始时间",
-            "医生=手术医师",
-            "手术医师=主刀医师签名",
+            "医生=主刀医师签名",
+            "手术医师=主刀医师",
             "助手=一助",
             "本人姓名=姓名"
     );

+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouRescueDocTrans.java

@@ -43,6 +43,7 @@ public class TaiZhouRescueDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
             "事件日期=抢救开始时间",
+            "抢救病情=病情变化",
             "本人姓名=姓名"
     );