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

1.修改禅道bug

hujing 5 éve
szülő
commit
35d2cd787d

+ 17 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0030.java

@@ -4,7 +4,9 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.label.PastLabel;
 import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
@@ -20,7 +22,7 @@ public class BEH0030 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if(inputInfo.getBeHospitalizedDoc() == null){
+        if (inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             return;
         }
@@ -30,14 +32,20 @@ public class BEH0030 extends QCCatalogue {
             status.set("0");
             return;
         }
-
-        if (ListUtil.isNotEmpty(
-                CatalogueUtil.filterDiagsByNature(
-                        inputInfo.getBeHospitalizedDoc().getPastLabel().getDiags(),
-                        "infectious",
-                        "1"
-                )
-        )) {
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        if (pastLabel != null) {
+            if (ListUtil.isNotEmpty(
+                    CatalogueUtil.filterDiagsByNature(
+                            pastLabel.getDiags(),
+                            "infectious",
+                            "1"
+                    )
+            )) {
+                status.set("0");
+            }
+        }
+        String pastText = pastLabel.getText();
+        if (StringUtil.isNotBlank(pastText) && (pastText.contains("肝炎") || pastText.contains("结核"))){
             status.set("0");
         }
     }

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

@@ -32,7 +32,8 @@ public class BEH0375 extends QCCatalogue {
         }
         //硬规则 匹配未婚
         MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
-        if (maritalLabel != null && maritalLabel.getText().contains("未婚")) {
+        if (maritalLabel != null &&
+                (maritalLabel.getText().contains("未婚") || maritalLabel.getText().contains("离婚"))) {
             status.set("0");
             return;
         }

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

@@ -36,11 +36,11 @@ public class LEA0149 extends QCCatalogue {
                 Map<String, String> lhStructureMap = leaveHospitalDoc.getStructureMap();
                 ChiefLabel chiefLabel = beHospitalizedDoc.getChiefLabel();
                 if (lhStructureMap != null && chiefLabel != null) {
-                    String bhChief = chiefLabel.getText().replaceAll("[\\p{Punct}\\pP。-]", "");
+                    String bhChief = CatalogueUtil.int2ChineseNum(chiefLabel.getText().replaceAll("[\\p{Punct}\\pP。-]", ""));
                     String leaveChief = lhStructureMap.get("主诉");
                     String bhThings = lhStructureMap.get("入院情况");
                     if (StringUtil.isNotBlank(bhThings)){
-                        bhThings = bhThings.replaceAll("[\\p{Punct}\\pP。-]", "");
+                        bhThings = CatalogueUtil.int2ChineseNum(bhThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
                     }
 
                     //如果出院小结结构化数据能取出主诉,则直接用该主诉和入院记录主诉比较

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

@@ -1,5 +1,6 @@
 package com.lantone.qc.kernel.util;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.Content;
@@ -32,7 +33,9 @@ import java.util.regex.Pattern;
 @Setter
 public class CatalogueUtil {
     public static Map<String, QCCatalogue> qcCatalogueMap = new HashMap<>();
-
+    public static Map<Integer, String> intMapString =
+            ImmutableMap.<Integer, String>builder().put(1, "一").put(2, "二").put(3, "三").put(4, "四").put(5, "五")
+                    .put(6, "六").put(7, "七").put(8, "八").put(9, "九").build();
 
     public static boolean isEmpty(String content) {
         return StringUtil.isBlank(removeSpecialChar(content));
@@ -114,8 +117,8 @@ public class CatalogueUtil {
         }
         List<Diag> retDiags = Lists.newArrayList();
         diags.forEach(i -> {
-            if (i != null && StringUtil.isNotBlank(i.getName())) {
-                Map<String, String> diagDetailMap = conceptDiagPropertyMap.get(i.getName());
+            if (i != null && StringUtil.isNotBlank(i.getHospitalDiagName())) {
+                Map<String, String> diagDetailMap = conceptDiagPropertyMap.get(i.getHospitalDiagName());
                 if (diagDetailMap != null) {
                     String natureValue_ = diagDetailMap.get(nature);
                     if (StringUtil.isNotBlank(natureValue_) && natureValue_.equals(natureValue)) {
@@ -312,4 +315,26 @@ public class CatalogueUtil {
         }
         return false;
     }
+
+    public static String int2ChineseNum(String content) {
+        StringBuffer sb = new StringBuffer();
+        char[] contentArr = content.toCharArray();
+        for (int i = 0; i < contentArr.length; i++) {
+            if (isNumeric(contentArr[i])){
+                int num = Integer.parseInt(String.valueOf(contentArr[i]));
+                sb.append(intMapString.get(num));
+            } else {
+                sb.append(contentArr[i]);
+            }
+        }
+        return sb.toString();
+    }
+
+
+    public static boolean isNumeric(char c) {
+        if (c < 48 || c > 57) {
+            return false;
+        }
+        return true;
+    }
 }