Browse Source

配偶死亡原因未描述--宁波中医院规则添加

Admin 3 năm trước cách đây
mục cha
commit
b4905b3dd0

+ 104 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/behospitalized/BEH0378.java

@@ -0,0 +1,104 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.behospitalized;
+
+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.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Family;
+import com.lantone.qc.pub.model.label.FamilyLabel;
+import com.lantone.qc.pub.model.label.MaritalLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 配偶死亡原因未描述
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0378 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        FamilyLabel familyLabel = inputInfo.getBeHospitalizedDoc().getFamilyLabel();
+        MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
+
+        if (familyLabel == null || maritalLabel == null ||
+                StringUtil.isBlank(familyLabel.getText()) || StringUtil.isBlank(maritalLabel.getText())) {
+            return;
+        }
+        List<Family> familiesFl = null;
+        List<Family> familiesMl = null;
+
+        if (familyLabel != null) {
+            familiesFl = familyLabel.getFamilies();
+            //规则匹配
+            String familyText = familyLabel.getText();
+            if (StringUtil.isNotBlank(familyText) && (familyText.contains("自然死亡")|| familyText.matches("[\\s\\S]*(?=配偶因)[^,;,;。]{0,15}(?=已故)[\\s\\S]*"))) {
+                status.set("0");
+                return;
+            }
+        }
+        if (maritalLabel != null && maritalLabel.getFamily() != null) {
+            familiesMl = maritalLabel.getFamily();
+            if (familiesMl == null) {
+                return;
+            }
+            for (Family family : familiesMl) {
+                if (family.getDead() != null && family.getName() != null) {
+                    String maritalText = maritalLabel.getText();
+                    int index1 = maritalText.indexOf(family.getDead().getName());
+                    int index2 = maritalText.indexOf(family.getName());
+                    if (0 < index1 && index1 < index2 && maritalText.substring(index1, index2).contains(",")) {
+                        family.setDead(null);
+                    }
+                }
+            }
+        }
+        List<Family> familyList = Lists.newArrayList();
+
+        if (familiesFl != null && familiesFl.size() > 0) {
+            familyList.addAll(familiesFl);
+        }
+        if (familiesMl != null && familiesMl.size() > 0) {
+            familyList.addAll(familiesMl);
+        }
+
+        familyList = familyList
+                .stream()
+                .filter(
+                        i -> i != null
+                                && StringUtil.isNotBlank(i.getName())
+                                && i.getName().contains("配偶")
+                                && i.getDead() != null
+                                && StringUtil.isNotBlank(i.getDead().getName())
+                )
+                .collect(Collectors.toList());
+
+        if (familyList.size() > 0) {
+            status.set("-1");
+            long count = familyList
+                    .stream()
+                    .filter(
+                            i -> (i.getDead().getDeadReason() != null && StringUtil.isNotBlank(i.getDead().getDeadReason().getName()))
+                                    || (i.getDead().getUnknow() != null && StringUtil.isNotBlank(i.getDead().getUnknow().getName()))
+                    )
+                    .count();
+            if (count > 0) {
+                status.set("0");
+            }
+        }
+        String maritalText = maritalLabel.getText();
+        if (StringUtil.isNotBlank(maritalText) && maritalText.matches("[\\s\\S]*(?=配偶因)[^,;,;。]{0,15}(?=已故)[\\s\\S]*")) {
+            status.set("0");
+            return;
+        }
+    }
+}