Browse Source

温附一:规则调试

wangsy 3 years ago
parent
commit
eea6d67295

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

@@ -29,7 +29,8 @@ public class FIRC03087 extends QCCatalogue {
             return;
         }
         String text = treatPlanLabel.getText();
-        if (StringUtil.isBlank(text) || text.contains("检查") || text.contains("检验") || text.contains("三大常规") || text.contains("CT")) {
+        if (StringUtil.isBlank(text) || text.contains("检查") || text.contains("检验")
+                || text.contains("三大常规") || text.contains("血常规") || text.contains("CT")) {
             status.set("0");
             return;
         }

+ 114 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/wenfuyi/behospitalized/BEH0376.java

@@ -0,0 +1,114 @@
+package com.lantone.qc.kernel.catalogue.hospital.wenfuyi.behospitalized;
+
+import com.google.common.collect.Lists;
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.model.entity.Family;
+import com.lantone.qc.pub.model.label.MaritalLabel;
+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;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 子女健康状况未描述
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0376 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        MaritalLabel maritalLabel = beHospitalizedDoc.getMaritalLabel();
+        //台州市结构化的
+        Map<String, String> structureMap_beh = beHospitalizedDoc.getStructureMap();
+        if (StringUtils.isNotEmpty(structureMap_beh.get("子女健康状况"))) {
+            status.set("0");
+            return;
+        }
+        if (maritalLabel == null || StringUtils.isEmpty(maritalLabel.getText())) {
+            status.set("0");
+            return;
+        }
+        //硬规则 匹配未育
+        String marry = structureMap_beh.get(Content.marry);
+        if (StringUtil.isBlank(marry)) {
+            marry = structureMap_beh.get("婚姻状况");
+        }
+        if ("未婚".equals(marry)) {
+            status.set("0");
+            return;
+        }
+        String maritalText = maritalLabel.getText();
+        if (StringUtil.isNotBlank(maritalText)) {
+            List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女", "详见",
+                    "无子女", "见旧病历", "见既往病历", "子女体健");
+            for (String word : words) {
+                if (maritalText.contains(word)) {
+                    status.set("0");
+                    return;
+                }
+            }
+            String regex = ".*\\d+-\\d+-\\d+-0.*";
+            if (maritalText.matches(regex)) {
+                status.set("0");
+                return;
+            }
+            //温附一处理子女未描述健康状况
+            if (maritalText.contains("有子女育") && maritalText.substring(maritalText.indexOf("有子女育")).contains("健康")) {
+                status.set("0");
+                return;
+            }
+        }
+        //未婚 无子女
+        if (maritalLabel.getMaritalStatus() != null && maritalLabel.getMaritalStatus().getName().contains("未婚")) {
+            status.set("0");
+            return;
+        }
+        List<Family> familyList = Lists.newArrayList();
+        List<Family> familiesFl = inputInfo.getBeHospitalizedDoc().getFamilyLabel().getFamilies();
+        List<Family> familiesMl = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getFamily();
+        if (ListUtil.isNotEmpty(familiesFl)) {
+            familyList.addAll(familiesFl);
+        }
+        if (ListUtil.isNotEmpty(familiesMl)) {
+            familyList.addAll(familiesMl);
+        }
+
+        Pattern p = Pattern.compile("[儿子女兄弟姐妹]");
+        List<Family> filterFamilies = familyList
+                .stream()
+                .filter(
+                        i -> i != null
+                                && StringUtil.isNotBlank(i.getName())
+                                && p.matcher(i.getName()).find()).collect(Collectors.toList());
+
+        for (Family family : filterFamilies) {
+            if (family.getDead() != null) {
+                status.set("0");
+                return;
+            } else if (family.getHealthCondition() != null && StringUtil.isNotBlank(family.getHealthCondition().getName())) {
+                status.set("0");
+                return;
+            } else if (family.getDiags() != null && family.getDiags().size() > 0) {
+                status.set("0");
+                return;
+            }
+        }
+    }
+
+}