Procházet zdrojové kódy

Merge remote-tracking branch 'origin/dev-taizhou-running' into dev

louhr před 5 roky
rodič
revize
53c99f2c67
25 změnil soubory, kde provedl 267 přidání a 132 odebrání
  1. 59 20
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java
  2. 8 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0012.java
  3. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02966.java
  4. 24 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0422.java
  5. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0309.java
  6. 49 43
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0099.java
  7. 9 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0114.java
  8. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0115.java
  9. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0556.java
  10. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0557.java
  11. 5 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0558.java
  12. 6 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0339.java
  13. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0598.java
  14. 59 21
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0095.java
  15. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC02970.java
  16. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0150.java
  17. 3 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0151.java
  18. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0152.java
  19. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0153.java
  20. 16 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0154.java
  21. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA02968.java
  22. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0396.java
  23. 3 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDeathCaseDiscussDocTrans.java
  24. 1 0
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDeathRecordDocTrans.java
  25. 9 0
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstPageRecordDocTrans.java

+ 59 - 20
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java

@@ -13,13 +13,11 @@ import com.lantone.qc.pub.model.label.DiagLabel;
 import com.lantone.qc.pub.model.label.PastLabel;
 import com.lantone.qc.pub.model.label.PresentLabel;
 import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @ClassName : BEH0011
@@ -36,6 +34,9 @@ public class BEH0011 extends QCCatalogue {
     @Autowired
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
 
+    private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
+    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         if (inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
@@ -64,14 +65,8 @@ public class BEH0011 extends QCCatalogue {
                         }
                         /* 现病史中一般情况之后的疾病名称 */
                         if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
-                            if (presentDiag.getHospitalDiagName().contains("心")
-                                    || presentDiag.getHospitalDiagName().contains("脑萎缩")
-                                    || presentDiag.getHospitalDiagName().contains("慢性")
-                                    || presentDiag.getHospitalDiagName().contains("血糖")) {
-                                if (!presentDiag.getHospitalDiagName().contains("心脏病")
-                                        && !presentDiag.getHospitalDiagName().contains("低血糖")) {
-                                    presentPastDiags.add(presentDiag.getHospitalDiagName());
-                                }
+                            if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
+                                presentPastDiags.add(presentDiag.getHospitalDiagName());
                             }
                         }
                     }
@@ -82,6 +77,29 @@ public class BEH0011 extends QCCatalogue {
         if (pastLabel != null) {
             List<Diag> pastDiags = pastLabel.getDiags();
             addDiagHospitalName(presentPastDiags, pastDiags);
+        } else {            //结构化数据
+            List<Diag> pastDiags = new ArrayList<>();
+
+            Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+            String a1 = structureMap.get("高血压");
+            if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                Diag diag = new Diag();
+                diag.setName("高血压");
+                diag.setHospitalDiagName("高血压");
+                if (!isHave(presentPastDiags, "高血压")) {
+                    pastDiags.add(diag);
+                }
+            }
+            a1 = structureMap.get("糖尿病");
+            if  (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                Diag diag = new Diag();
+                diag.setName("糖尿病");
+                diag.setHospitalDiagName("糖尿病");
+                if (!isHave(presentPastDiags, "糖尿病")) {
+                    pastDiags.add(diag);
+                }
+            }
+            addDiagHospitalName(presentPastDiags, pastDiags);
         }
         /* 取初步诊断中疾病名称 */
         List<String> initDiags = new ArrayList<>();
@@ -124,14 +142,8 @@ public class BEH0011 extends QCCatalogue {
             if (pastDiag.getNegative() != null) {
                 continue;
             }
-            if (pastDiag.getHospitalDiagName().contains("心")
-                    || pastDiag.getHospitalDiagName().contains("脑萎缩")
-                    || pastDiag.getHospitalDiagName().contains("慢性")
-                    || pastDiag.getHospitalDiagName().contains("血糖")) {
-                if (!pastDiag.getHospitalDiagName().contains("心脏病")
-                        && !pastDiag.getHospitalDiagName().contains("低血糖")) {
-                    presentPastDiag.add(pastDiag.getHospitalDiagName());
-                }
+            if (isContains(pastDiag.getHospitalDiagName()) && !isFilter(pastDiag.getHospitalDiagName())) {
+                presentPastDiag.add(pastDiag.getHospitalDiagName());
             }
         }
     }
@@ -144,6 +156,33 @@ public class BEH0011 extends QCCatalogue {
             presentPastDiag.add(pastDiag.getHospitalDiagName());
         }
     }
+
+    private boolean isHave(Set<String> presentDiag, String diagName) {
+        for (String haveDiag : presentDiag) {
+            if (haveDiag.contains(diagName) || diagName.contains(haveDiag)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isContains(String diagName) {
+        for (String c : containList) {
+            if (diagName.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isFilter(String diagName) {
+        for (String c : filterList) {
+            if (diagName.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
     /* 原逻辑
     Map<String, Map<String, Object>> diagMap = specialStorageUtil.getJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
     String initDiagText = CatalogueUtil.removeSpecialChar(initialDiagLabel.getText());

+ 8 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0012.java

@@ -1,8 +1,8 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.dbanaly.util.KernelConstants;
 import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Diag;
@@ -35,19 +35,22 @@ public class BEH0012 extends QCCatalogue {
         }
         List<String> diags_out = new ArrayList<>();
         Map<String, String> hostpital_standDiag = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DIAG_MAP);
-        if (hostpital_standDiag == null){
+        if (hostpital_standDiag == null) {
             status.set("0");
             return;
         }
-        List<Diag> diags = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getDiags();
+        List<Diag> diags = null;
+        if (inputInfo.getBeHospitalizedDoc().getInitialDiagLabel() != null) {
+            diags = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getDiags();
+        }
         if (diags != null && diags.size() > 0) {
             for (Diag diag : diags) {
                 List<String> disList = Arrays.asList(strings);
                 for (String diagSplit : diag.getHospitalDiagName().split("、")) {
-                    if ("ACT".equals(diagSplit)){
+                    if ("ACT".equals(diagSplit)) {
                         continue;
                     }
-                    String hospitalDiagName = diagSplit.trim().replace("待查", "").replace("?","").replace("?","");
+                    String hospitalDiagName = diagSplit.trim().replace("待查", "").replace("?", "").replace("?", "");
                     if (hospitalDiagName.contains("伴")) {
                         hospitalDiagName = hospitalDiagName.substring(0, hospitalDiagName.indexOf("伴"));
                     }

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

@@ -13,7 +13,7 @@ import java.util.Map;
 
 /**
  * @ClassName : BEH02966
- * @Description :  入院记录查体与性别不匹配
+ * @Description :  患者病历书写与性别不符(入院记录)
  * @Author : 胡敬
  * @Date: 2020-06-13 15:51
  */
@@ -46,7 +46,7 @@ public class BEH02966 extends QCCatalogue {
         }
 
         List<String> keys = Lists.newArrayList("主诉", "现病史", "既往史", "个人史", "体格检查", "一般情况"
-                , "初步诊断", "专科体格检查", "神经系统检查");
+                , "初步诊断", "专科体格检查", "神经系统检查", "实验室检查", "影像学检查");
         String text = CatalogueUtil.structureMapJoin(beHospitalStructureMap, keys);
 
         for (String noMatchWord : noMatchWords) {

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

@@ -1,12 +1,13 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
 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.BeHospitalizedDoc;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.Map;
 
 
@@ -18,7 +19,27 @@ import java.util.Map;
 @Component
 public class BEH0422 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        /**
+         * 记录日期比入院日期早就报错
+         */
         status.set("0");
-
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        if (beHospitalizedDoc == null) {
+            return;
+        }
+        Map<String, String> docStructureMap = beHospitalizedDoc.getStructureMap();
+        String admissionDateStr = docStructureMap.get("入院日期");
+        String recordDateStr = docStructureMap.get("记录日期");
+        if (StringUtil.isBlank(admissionDateStr) || StringUtil.isBlank(recordDateStr)) {
+            return;
+        }
+        Date admissionDate = StringUtil.parseDateTime(admissionDateStr);
+        Date recordDate = StringUtil.parseDateTime(recordDateStr);
+        if (admissionDate == null || recordDate == null) {
+            return;
+        }
+        if (admissionDate.after(recordDate)) {
+            status.set("-1");
+        }
     }
 }

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

@@ -22,7 +22,7 @@ public class CLI0309 extends QCCatalogue {
         status.set("0");
         List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();//输血记录
         List<ClinicBloodEffectDoc> clinicBloodEffectDocs = inputInfo.getClinicBloodEffectDocs();//输血效果评价
-        if (ListUtil.isEmpty(clinicalBloodDocs) || ListUtil.isEmpty(clinicBloodEffectDocs)) {
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
             return;
         }
         if (clinicalBloodDocs.size() < clinicBloodEffectDocs.size()) {

+ 49 - 43
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0099.java

@@ -1,44 +1,50 @@
-package com.lantone.qc.kernel.catalogue.deathcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAC0099
- * @Description : 死亡病例讨论记录中无主诉
- * @Author : 胡敬
- * @Date: 2020-03-19 09:35
- */
-@Component
-public class DEAC0099 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathCaseDiscussDoc() != null && inputInfo.getDeathCaseDiscussDoc().getStructureMap() != null
-                && inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getChiefLabel() != null) {
-            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
-            String chiefText = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
-            String admissionStatus = deathCaseDiscussStructureMap.get("入院情况");
-            if (CatalogueUtil.isEmpty(admissionStatus) || CatalogueUtil.isEmpty(chiefText)) {
-                return;
-            }
-            chiefText = CatalogueUtil.removeSpecialChar(chiefText).replace("。", "");
-            if(StringUtils.isNotEmpty(chiefText)){
-                return;
-            }
-            admissionStatus = CatalogueUtil.removeSpecialChar(admissionStatus).replace("。", "");
-            if (!admissionStatus.contains(chiefText)) {
-                status.set("-1");
-            }
-            //处理台州的
-            if (admissionStatus.contains("患者因")) {
-                status.set("0");
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.deathcasediscuss;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0099
+ * @Description : 死亡病例讨论记录中无主诉
+ * @Author : 胡敬
+ * @Date: 2020-03-19 09:35
+ */
+@Component
+public class DEAC0099 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathCaseDiscussDoc() != null
+                && inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getChiefLabel() != null) {
+            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
+            String deathCaseDiscussChief = deathCaseDiscussStructureMap.get("主诉");
+            if (StringUtil.isNotBlank(deathCaseDiscussChief)) {
+                return;
+            }
+
+            String chiefText = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
+            String admissionStatus = deathCaseDiscussStructureMap.get("入院情况");
+            if (CatalogueUtil.isEmpty(admissionStatus) || CatalogueUtil.isEmpty(chiefText)) {
+                return;
+            }
+            chiefText = CatalogueUtil.removeSpecialChar(chiefText).replace("。", "");
+            if (StringUtils.isNotEmpty(chiefText)) {
+                return;
+            }
+            admissionStatus = CatalogueUtil.removeSpecialChar(admissionStatus).replace("。", "");
+            if (!admissionStatus.contains(chiefText)) {
+                status.set("-1");
+            }
+            //处理台州的
+            if (admissionStatus.contains("患者因")) {
+                status.set("0");
+            }
+        }
+    }
 }

+ 9 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0114.java

@@ -4,6 +4,7 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -20,11 +21,16 @@ public class DEAC0114 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getDeathCaseDiscussDoc() != null && inputInfo.getDeathCaseDiscussDoc().getStructureMap() != null) {
             Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
+            String deathCause = deathCaseDiscussStructureMap.get("死亡原因");
+            boolean findDeathCause = false;
+            if (StringUtil.isNotBlank(deathCause)) {
+                findDeathCause = true;
+            }
             String discussionContent = deathCaseDiscussStructureMap.get("讨论内容");
-            if (CatalogueUtil.isEmpty(discussionContent)) {
-                return;
+            if (StringUtil.isNotEmpty(discussionContent) && discussionContent.contains("因")) {
+                findDeathCause = true;
             }
-            if (!discussionContent.contains("因")) {
+            if (!findDeathCause) {
                 status.set("-1");
             }
         }

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

@@ -20,7 +20,8 @@ public class DEAC0115 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getDeathCaseDiscussDoc() != null && inputInfo.getDeathCaseDiscussDoc().getStructureMap() != null) {
             Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
-            if (CatalogueUtil.isEmpty(deathCaseDiscussStructureMap.get("记录医师"))) {
+            String sign = deathCaseDiscussStructureMap.get("记录医师");
+            if (CatalogueUtil.isEmpty(sign)) {
                 status.set("-1");
             }
         }

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0556.java

@@ -12,13 +12,13 @@ import java.util.Date;
 import java.util.Map;
 
 /**
- * @ClassName : DEAR0556
+ * @ClassName : DEAC0556
  * @Description :  死亡病例讨论参加人员姓名及职称未填写
  * @Author :kwz
  * @Date: 2020-03-18 18:38
  */
 @Component
-public class DEAR0556 extends QCCatalogue {
+public class DEAC0556 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0557.java

@@ -9,13 +9,13 @@ import org.springframework.stereotype.Component;
 import java.util.Map;
 
 /**
- * @ClassName : DEAR0557
+ * @ClassName : DEAC0557
  * @Description :  死亡病例讨论无具体讨论意见
  * @Author :kwz
  * @Date: 2020-03-18 18:38
  */
 @Component
-public class DEAR0557 extends QCCatalogue {
+public class DEAC0557 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {

+ 5 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0558.java

@@ -9,18 +9,18 @@ import org.springframework.stereotype.Component;
 import java.util.Map;
 
 /**
- * @ClassName : DEAR0558
+ * @ClassName : DEAC0558
  * @Description :  死亡病例讨论无主持人小结意见
  * @Author :kwz
  * @Date: 2020-03-18 18:38
  */
 @Component
-public class DEAR0558 extends QCCatalogue {
+public class DEAC0558 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 (inputInfo.getDeathCaseDiscussDoc() != null) {
+            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
+            String deathTime = deathCaseDiscussStructureMap.get("结论");
             if (CatalogueUtil.isEmpty(deathTime)) {
                 status.set("-1");
             }

+ 6 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0339.java

@@ -4,6 +4,7 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -21,9 +22,13 @@ public class DEAR0339 extends QCCatalogue {
         if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null
                 && inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getChiefLabel() != null) {
             Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            String deathChief = deathRecordStructureMap.get("主诉");
+            if (StringUtil.isNotBlank(deathChief)) {
+                return;
+            }
             String chiefText = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
             String admissionStatus = deathRecordStructureMap.get("入院情况");
-            if (CatalogueUtil.isEmpty(admissionStatus) || CatalogueUtil.isEmpty(chiefText)) {
+            if (admissionStatus == null || CatalogueUtil.isEmpty(chiefText)) {
                 return;
             }
             chiefText = CatalogueUtil.removeSpecialChar(chiefText).replace("。", "");

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

@@ -40,7 +40,7 @@ public class DUT0598 extends QCCatalogue {
             }
             Date rollOutRecordDate = StringUtil.parseDateTime(rollInRecordDateStr);
             Date recordDate = StringUtil.parseDateTime(recordDateStr);
-            if (rollOutRecordDate != null && recordDate != null && !rollOutRecordDate.before(recordDate)) {
+            if (rollOutRecordDate != null && recordDate != null && rollOutRecordDate.before(recordDate)) {
                 boolean compareTime = CatalogueUtil.compareTime(rollOutRecordDate, recordDate, (long) 24 * 60);
                 if (compareTime) {
                     status.set("-1");

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

@@ -13,13 +13,11 @@ import com.lantone.qc.pub.model.label.DiagLabel;
 import com.lantone.qc.pub.model.label.PastLabel;
 import com.lantone.qc.pub.model.label.PresentLabel;
 import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @ClassName : FIRC0095
@@ -33,13 +31,16 @@ public class FIRC0095 extends QCCatalogue {
     @Autowired
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
 
+    private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
+    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         if (inputInfo.getFirstCourseRecordDoc() == null) {
             status.set("0");
             return;
         }
         PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
-        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
+        DiagLabel initialDiagLabel = inputInfo.getFirstCourseRecordDoc().getInitialDiagLabel();
         PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
         if (initialDiagLabel == null) {
             status.set("0");
@@ -61,14 +62,8 @@ public class FIRC0095 extends QCCatalogue {
                         }
                         /* 现病史中一般情况之后的疾病名称 */
                         if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
-                            if (presentDiag.getHospitalDiagName().contains("心")
-                                    || presentDiag.getHospitalDiagName().contains("脑萎缩")
-                                    || presentDiag.getHospitalDiagName().contains("慢性")
-                                    || presentDiag.getHospitalDiagName().contains("血糖")) {
-                                if (!presentDiag.getHospitalDiagName().contains("心脏病")
-                                        && !presentDiag.getHospitalDiagName().contains("低血糖")) {
-                                    presentPastDiags.add(presentDiag.getHospitalDiagName());
-                                }
+                            if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
+                                presentPastDiags.add(presentDiag.getHospitalDiagName());
                             }
                         }
                     }
@@ -79,6 +74,28 @@ public class FIRC0095 extends QCCatalogue {
         if (pastLabel != null) {
             List<Diag> pastDiags = pastLabel.getDiags();
             addDiagHospitalName(presentPastDiags, pastDiags);
+        } else {            //结构化数据
+            List<Diag> pastDiags = new ArrayList<>();
+            Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+            String a1 = structureMap.get("高血压");
+            if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                Diag diag = new Diag();
+                diag.setName("高血压");
+                diag.setHospitalDiagName("高血压");
+                if (!isHave(presentPastDiags, "高血压")) {
+                    pastDiags.add(diag);
+                }
+            }
+            a1 = structureMap.get("糖尿病");
+            if  (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                Diag diag = new Diag();
+                diag.setName("糖尿病");
+                diag.setHospitalDiagName("糖尿病");
+                if (!isHave(presentPastDiags, "糖尿病")) {
+                    pastDiags.add(diag);
+                }
+            }
+            addDiagHospitalName(presentPastDiags, pastDiags);
         }
         /* 取初步诊断中疾病名称 */
         List<String> initDiags = new ArrayList<>();
@@ -121,14 +138,8 @@ public class FIRC0095 extends QCCatalogue {
             if (pastDiag.getNegative() != null) {
                 continue;
             }
-            if (pastDiag.getHospitalDiagName().contains("心")
-                    || pastDiag.getHospitalDiagName().contains("脑萎缩")
-                    || pastDiag.getHospitalDiagName().contains("慢性")
-                    || pastDiag.getHospitalDiagName().contains("血糖")) {
-                if (!pastDiag.getHospitalDiagName().contains("心脏病")
-                        && !pastDiag.getHospitalDiagName().contains("低血糖")) {
-                    presentPastDiag.add(pastDiag.getHospitalDiagName());
-                }
+            if (isContains(pastDiag.getHospitalDiagName()) && !isFilter(pastDiag.getHospitalDiagName())) {
+                presentPastDiag.add(pastDiag.getHospitalDiagName());
             }
         }
     }
@@ -141,4 +152,31 @@ public class FIRC0095 extends QCCatalogue {
             presentPastDiag.add(pastDiag.getHospitalDiagName());
         }
     }
+
+    private boolean isHave(Set<String> presentDiag, String diagName) {
+        for (String haveDiag : presentDiag) {
+            if (haveDiag.contains(diagName) || diagName.contains(haveDiag)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isContains(String diagName) {
+        for (String c : containList) {
+            if (diagName.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isFilter(String diagName) {
+        for (String c : filterList) {
+            if (diagName.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
 }

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

@@ -28,7 +28,7 @@ public class FIRC02970 extends QCCatalogue {
             return;
         }
         Map<String, String> firstCourseRecordStructureMap = inputInfo.getFirstCourseRecordDoc().getStructureMap();
-        List<String> keys = Lists.newArrayList("需求评估", "预期目标", "诊疗计划", "治疗监测计划");
+        List<String> keys = Lists.newArrayList("需求评估", "预期目标", "诊疗计划", "治疗监测计划", "治疗计划", "检查计划");
         String text = structureMapJoin(firstCourseRecordStructureMap, keys);
         if (StringUtil.isNotBlank(text) && text.contains("生命体征") && !text.contains("血压") && !text.contains("心率") && !text.contains("心电监护")) {
             status.set("-1");

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

@@ -24,7 +24,7 @@ public class LEA0150 extends QCCatalogue {
             return;
         }
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() != null) {
+        if (deathRecordDoc != null) {
             status.set("0");
         } else {
             String message = leaveHospitalDoc.getStructureMap().get("入院情况");

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0151.java

@@ -24,11 +24,11 @@ public class LEA0151 extends QCCatalogue {
             return;
         }
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() != null) {
+        if (deathRecordDoc != null) {
             status.set("0");
         } else {
-            String text = leaveHospitalDoc.getBeHospitalizedLabel().getText();
-            if (!StringUtils.isBlank(text)) {
+            String message = leaveHospitalDoc.getStructureMap().get("入院诊断");
+            if (!StringUtils.isBlank(message)) {
                 status.set("0");
             }
         }

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

@@ -24,7 +24,7 @@ public class LEA0152 extends QCCatalogue {
             return;
         }
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() != null) {
+        if (deathRecordDoc != null) {
             status.set("0");
         } else {
             String message = leaveHospitalDoc.getStructureMap().get("诊治经过");

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

@@ -23,7 +23,7 @@ public class LEA0153 extends QCCatalogue {
             return;
         }
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() != null) {
+        if (deathRecordDoc != null) {
             status.set("0");
         } else {
             String message = leaveHospitalDoc.getStructureMap().get("出院情况");

+ 16 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0154.java

@@ -6,13 +6,14 @@ import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.label.DiagLabel;
+import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
 
 /**
- * @Description: 出院记录内容缺出院(死亡)诊断
+ * @Description: 出院记录内容缺出院(死亡)诊断 出院记录内容缺出院诊断
  * @author: rengb
  * @time: 2020/3/10 13:53
  */
@@ -21,22 +22,25 @@ public class LEA0154 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
         LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
         if (leaveHospitalDoc == null) {
+            status.set("0");
             return;
         }
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() == null) {
-            Map<String, String> structureMap = leaveHospitalDoc.getStructureMap();
-            if(StringUtils.isNotEmpty(structureMap.get("出院诊断"))){
-                return;
-            }
-            DiagLabel leaveDiagLabel = leaveHospitalDoc.getLeaveDiagLabel();
-            if (leaveDiagLabel != null) {
-                if (StringUtils.isBlank(leaveDiagLabel.getText())) {
-                    status.set("-1");
-                }
+        if (deathRecordDoc != null) {
+            status.set("0");
+            return;
+        }
+        Map<String, String> structureMap = leaveHospitalDoc.getStructureMap();
+        if (StringUtils.isNotEmpty(structureMap.get("出院诊断"))) {
+            status.set("0");
+            return;
+        }
+        DiagLabel leaveDiagLabel = leaveHospitalDoc.getLeaveDiagLabel();
+        if (leaveDiagLabel != null) {
+            if (StringUtil.isNotBlank(leaveDiagLabel.getText())) {
+                status.set("0");
             }
         }
     }

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

@@ -46,7 +46,7 @@ public class LEA02968 extends QCCatalogue {
             return;
         }
         List<String> keys = Lists.newArrayList("入院诊断", "出院诊断", "入院情况", "诊治经过", "出院情况", "出院医嘱"
-                , "随访计划", "主诉", "专科检查", "健康教育");
+                , "随访计划", "主诉", "专科检查", "健康教育", "辅助检查", "影像学检查", "实验室检查");
         String text = CatalogueUtil.structureMapJoin(structureMap, keys);
 
         for (String noMatchWord : noMatchWords) {

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

@@ -24,7 +24,7 @@ public class LEA0396 extends QCCatalogue {
             return;
         }
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null || deathRecordDoc.getText() == null) {
+        if (deathRecordDoc != null) {
             status.set("0");
         } else {
             String time = leaveHospitalDoc.getStructureMap().get("出院时间");

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

@@ -41,7 +41,9 @@ public class TaiZhouDeathCaseDiscussDocTrans extends ModelDocTrans {
             "医生=记录医师",
             "本人姓名=姓名",
             "事件日期=讨论时间",
-            "当前诊断=死亡诊断"
+            "当前诊断=死亡诊断",
+            "病历日期=记录时间",
+            "讨论小结=结论"
     );
 
 }

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

@@ -40,6 +40,7 @@ public class TaiZhouDeathRecordDocTrans extends ModelDocTrans {
             "诊治经过=诊疗经过",
             "本人姓名=姓名",
             "现病史- 发病情况=发病情况",
+            "病历日期=记录时间",
             "医生=记录医师"
     );
 

+ 9 - 0
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstPageRecordDocTrans.java

@@ -41,6 +41,15 @@ public class TaiZhouFirstPageRecordDocTrans extends ModelDocTrans {
         /* structureExtMap.put(Content.outpatientEmergencyDiag, FastJsonUtils.getJsonToBean(content.get(Content.outpatientEmergencyDiag), Object.class));*/
         structureExtMap.put(Content.operative_information, FastJsonUtils.getJsonToBean(content.get(Content.operative_information), Object.class));
         structureExtMap.put(Content.dischargeDiag, FastJsonUtils.getJsonToBean(content.get(Content.dischargeDiag), Object.class));
+
+        List<Map<String, String>> dischargeDiag = (List) structureExtMap.get(Content.dischargeDiag);
+        for (Map<String, String> diag : dischargeDiag) {
+            String diagCategory = diag.get("诊断类别");
+            if (StringUtil.isNotBlank(diagCategory) && "1".equals(diagCategory)) {
+                diag.put("诊断类别", "主要诊断");
+                break;
+            }
+        }
         //        structureExtMap.put(Content.pathologyDiagnose, FastJsonUtils.getJsonToBean(content.get(Content.pathologyDiagnose), Object.class));
         firstPageRecordDoc.setStructureExtMap(structureExtMap);