rengb 5 anni fa
parent
commit
8715f99d2e

+ 9 - 31
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0032.java

@@ -1,12 +1,13 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
-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.entity.Diag;
 import com.lantone.qc.pub.model.label.PastLabel;
 import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -28,39 +29,16 @@ public class BEH0032 extends QCCatalogue {
         if (ListUtil.isEmpty(diags)) {
             return;
         }
-        String pastLabelText = pastLabel.getText();
-        List<String> yinxDiagNames = diags.stream().filter(i -> i.getNegative() != null).map(i -> i.getName()).collect(Collectors.toList());
-        List<String> yangxDiagNams = diags.stream().filter(i -> i.getNegative() == null).map(i -> i.getName()).collect(Collectors.toList());
-        if (isNotHas(yinxDiagNames, pastLabelText) || isNotHas(yangxDiagNams, pastLabelText)) {
+        List<String> wtDiagNames = CatalogueUtil.noInQuotes(
+                diags.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList()),
+                pastLabel.getText()
+        );
+        if (ListUtil.isNotEmpty(wtDiagNames)) {
             status = "-1";
-        }
-    }
-
-    /**
-     * 是未标引号吗?
-     *
-     * @param diagNames ture-是未标  false-标了
-     * @return
-     */
-    private boolean isNotHas(List<String> diagNames, String pastLabelText) {
-        boolean flag = false;
-        if (ListUtil.isNotEmpty(diagNames)) {
-            List<String> sections = Lists.newArrayList();
-            int index = 0;
-            for (String txt : pastLabelText.split("\"")) {
-                if (index % 2 == 1) {
-                    sections.add(txt);
-                }
-                index++;
-            }
-            for (String diagName : diagNames) {
-                if (sections.stream().filter(section -> section.indexOf(diagName) != -1).count() == 0) {
-                    flag = true;
-                    info += diagName + " ";
-                }
+            for (String wtDiagName : wtDiagNames) {
+                info += wtDiagName + " ";
             }
         }
-        return flag;
     }
 
 }

+ 27 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0034.java

@@ -1,12 +1,20 @@
 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.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Operation;
+import com.lantone.qc.pub.model.label.PastLabel;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
- * @Description:
+ * @Description: 手术名称未标引号
  * @author: rengb
  * @time: 2020/3/10 14:02
  */
@@ -15,6 +23,22 @@ public class BEH0034 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        
+        status = "0";
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        List<Operation> operations = pastLabel.getOperations();
+        if (ListUtil.isEmpty(operations)) {
+            return;
+        }
+        List<String> wtOperationNames = CatalogueUtil.noInQuotes(
+                operations.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList()),
+                pastLabel.getText()
+        );
+        if (ListUtil.isNotEmpty(wtOperationNames)) {
+            status = "-1";
+            for (String wtOperationName : wtOperationNames) {
+                info += wtOperationName + " ";
+            }
+        }
     }
-}
+
+}

+ 27 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0035.java

@@ -1,12 +1,20 @@
 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.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.AllergyMedicine;
+import com.lantone.qc.pub.model.label.PastLabel;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
- * @Description:
+ * @Description: 过敏药物未标引号
  * @author: rengb
  * @time: 2020/3/10 14:02
  */
@@ -15,6 +23,22 @@ public class BEH0035 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        
+        status = "0";
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        List<AllergyMedicine> allergyMedicines = pastLabel.getAllergyMedicines();
+        if (ListUtil.isEmpty(allergyMedicines)) {
+            return;
+        }
+        List<String> wtAmNames = CatalogueUtil.noInQuotes(
+                allergyMedicines.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList()),
+                pastLabel.getText()
+        );
+        if (ListUtil.isNotEmpty(wtAmNames)) {
+            status = "-1";
+            for (String wtAmName : wtAmNames) {
+                info += wtAmName + " ";
+            }
+        }
     }
-}
+
+}

+ 10 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0050.java

@@ -3,10 +3,12 @@ package com.lantone.qc.kernel.catalogue.behospitalized;
 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.Smoking;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 /**
- * @Description:
+ * @Description: 吸烟史患者描述不规范
  * @author: rengb
  * @time: 2020/3/10 14:02
  */
@@ -15,6 +17,11 @@ public class BEH0050 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        
+        Smoking smoking = inputInfo.getBeHospitalizedDoc().getPersonalLabel().getSmoking();
+        if (smoking.getPd() != null && StringUtil.isNotBlank(smoking.getPd().getName())
+                && smoking.getUsage() != null && StringUtil.isNotBlank(smoking.getUsage().getName())) {
+            status = "0";
+        }
     }
-}
+
+}

+ 10 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0051.java

@@ -3,10 +3,12 @@ package com.lantone.qc.kernel.catalogue.behospitalized;
 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.Drinking;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 /**
- * @Description:
+ * @Description: 饮酒史患者描述不规范
  * @author: rengb
  * @time: 2020/3/10 14:02
  */
@@ -15,6 +17,11 @@ public class BEH0051 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        
+        Drinking drinking = inputInfo.getBeHospitalizedDoc().getPersonalLabel().getDrinking();
+        if (drinking.getPd() != null && StringUtil.isNotBlank(drinking.getPd().getName())
+                && drinking.getUsage() != null && StringUtil.isNotBlank(drinking.getUsage().getName())) {
+            status = "0";
+        }
     }
-}
+
+}

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

@@ -1,14 +1,14 @@
 package com.lantone.qc.kernel.util;
 
+import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import lombok.Getter;
 import lombok.Setter;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -28,8 +28,9 @@ public class CatalogueUtil {
     public static boolean isEmpty(String content) {
         return StringUtil.isBlank(removeSpecialChar(content));
     }
+
     public static String removeSpecialChar(String content) {
-        if (StringUtil.isEmpty(content)){
+        if (StringUtil.isEmpty(content)) {
             return "";
         }
         return content.replaceAll("[\r\n|/r/n|\n|/n|/t|\t]", "").trim();
@@ -53,4 +54,36 @@ public class CatalogueUtil {
         }
         return res;
     }
+
+    /**
+     * words中的所有词,哪些不包含在text文本里的引号下面
+     * 如:
+     * word:{"高血压","糖尿病","白血病","感冒"}
+     * text: 否认患有"高血压,糖尿病等","白血病",感冒
+     * 结果:感冒
+     *
+     * @param words
+     * @param text
+     * @return
+     */
+    public static List<String> noInQuotes(List<String> words, String text) {
+        List<String> retWords = Lists.newArrayList();
+        if (ListUtil.isNotEmpty(words) && StringUtil.isNotBlank(text)) {
+            List<String> sections = Lists.newArrayList();
+            int index = 0;
+            for (String txt : text.split("\"")) {
+                if (index % 2 == 1) {
+                    sections.add(txt);
+                }
+                index++;
+            }
+            for (String word : words) {
+                if (StringUtil.isNotBlank(word) && sections.stream().filter(section -> section.indexOf(word) != -1).count() == 0) {
+                    retWords.add(word);
+                }
+            }
+        }
+        return retWords;
+    }
+
 }