|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|