Browse Source

1、初步诊断不完整兼容台州、邵逸夫修改

louhr 5 years ago
parent
commit
7ebf3ae961

+ 65 - 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,35 @@ 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("心脏病");
+//                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 +148,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 +162,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());