Sfoglia il codice sorgente

婚姻状况前后不一致

zhaops 3 anni fa
parent
commit
aa7b40424c

+ 65 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0372.java

@@ -1,10 +1,9 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.RegexUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.MaritalStatus;
-import com.lantone.qc.pub.model.label.MaritalLabel;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -18,8 +17,17 @@ public class BEH0372 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getBeHospitalizedDoc() == null) {
-            status.set("0");
+        /**
+         * 1.获取入院记录中婚姻状况,为空则通过
+         * 2.获取入院记录中婚育史,为空或者包含【详见】或者婚育史等于【其他】则通过 
+         * 3.婚姻为【未婚】,婚育史包含【未婚/未结婚】任一则通过 ,不存在但包含【已故/丧偶/去世/亡故/已逝/死亡/离婚/离异/适龄结婚/适龄婚育/结婚/再婚/育有/已婚】中任一则报出。
+         * 4.婚姻为【丧偶】并且婚育史包含【已故/丧偶/去世/亡故/已逝/死亡】任一则通过,不存在但包含【离婚/离异/未婚/未结婚】中任一则报出
+         * 5.婚姻为【离婚/离异】并且婚育史包含【离婚/离异】任一则通过,不存在但包含【未婚/未结婚/已故/丧偶/去世/亡故/已逝/死亡】中任一则报出。
+         * 6.婚姻为【已婚/再婚】并且婚育史包含【适龄结婚/适龄婚育/结婚/再婚/育有/已婚】任一则通过,不存在但包含【未婚/未结婚/离婚/离异/已故/丧偶/去世/亡故/已逝/死亡】中任一则报出。
+         */
+
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null || inputInfo.getBeHospitalizedDoc().getStructureMap() == null) {
             return;
         }
 
@@ -28,59 +36,77 @@ public class BEH0372 extends QCCatalogue {
         if (StringUtil.isBlank(bhbasicInfoStatus)) {
             bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻");
         }
-        if (StringUtil.isBlank(basicInfoStatus) || basicInfoStatus.contains("详见")
-                || basicInfoStatus.contains("见旧病历") || basicInfoStatus.contains("见既往病历") || StringUtil.isBlank(bhbasicInfoStatus)) {
-            status.set("0");
-            return;
-        }
-        bhbasicInfoStatus = bhbasicInfoStatus.replace(" ", "");
-        if (bhbasicInfoStatus.equals("未婚") && (basicInfoStatus.contains("未婚") || basicInfoStatus.contains("未结婚"))) {
-            status.set("0");
-            return;
+
+        if (StringUtil.isBlank(bhbasicInfoStatus)) {
+            if (inputInfo.getBeHospitalizedDoc().getMaritalLabel() != null
+                    && inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus() != null
+                    && StringUtil.isNotBlank(inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus().getName())) {
+                bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus().getName();
+            }
         }
 
-        if (StringUtil.isNotBlank(bhbasicInfoStatus) && basicInfoStatus.equals("其他")) {
-            status.set("0");
+        if (StringUtil.isBlank(bhbasicInfoStatus)) {
             return;
         }
 
-        if (bhbasicInfoStatus.equals("丧偶") &&
-                (basicInfoStatus.contains("已故") || basicInfoStatus.contains("丧偶") || basicInfoStatus.contains("去世") ||
-                        basicInfoStatus.contains("亡故") || basicInfoStatus.contains("已逝") || basicInfoStatus.contains("死"))) {
-            status.set("0");
-            return;
+        if (StringUtil.isBlank(basicInfoStatus)) {
+            if (inputInfo.getBeHospitalizedDoc().getMaritalLabel() != null) {
+                basicInfoStatus = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getText();
+            }
         }
 
-        if ((bhbasicInfoStatus.equals("离婚") || bhbasicInfoStatus.equals("离异")) &&
-                (basicInfoStatus.contains("离异") || basicInfoStatus.contains("离婚"))) {
-            status.set("0");
+        if (StringUtil.isBlank(basicInfoStatus) || basicInfoStatus.contains("详见")
+                || basicInfoStatus.contains("见旧病历") || basicInfoStatus.contains("见既往病历")
+                || basicInfoStatus.equals("其他")) {
             return;
         }
 
-        if (bhbasicInfoStatus.equals("已婚") && (basicInfoStatus.contains("结婚") || basicInfoStatus.contains("再婚")
-                || basicInfoStatus.contains("育有") || basicInfoStatus.contains("已婚") || basicInfoStatus.contains("婚育"))) {
-            status.set("0");
-            return;
+        bhbasicInfoStatus = bhbasicInfoStatus.replace(" ", "");
+
+        //3.婚姻为【未婚】,婚育史包含【未婚/未结婚】任一则通过 ,不存在但包含【已故/丧偶/去世/亡故/已逝/死亡/离婚/离异/适龄结婚/适龄婚育/结婚/再婚/育有/已婚】中任一则报出。
+        if (bhbasicInfoStatus.equals("未婚")) {
+            if (RegexUtil.getRegexRes(basicInfoStatus, "未婚|未结婚")) {
+                return;
+            }
+            if (RegexUtil.getRegexRes(basicInfoStatus, "已故|丧偶|去世|亡故|已逝|死亡|离婚|离异|适龄结婚|适龄婚育|结婚|再婚|育有|已婚")) {
+                status.set("-1");
+                return;
+            }
         }
 
-        MaritalStatus mts = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus();
-        if (mts != null && StringUtil.isNotBlank(mts.getName())) {
-            String maritalStatus = mts.getName();
-            if (basicInfoStatus.equals(maritalStatus)) {
-                status.set("0");
+        //4.婚姻为【丧偶】并且婚育史包含【已故/丧偶/去世/亡故/已逝/死亡】任一则通过,不存在但包含【离婚/离异/未婚/未结婚】中任一则报出
+        if (bhbasicInfoStatus.equals("丧偶")) {
+            if (RegexUtil.getRegexRes(basicInfoStatus, "已故|丧偶|去世|亡故|已逝|死亡")) {
+                return;
+            }
+            if (RegexUtil.getRegexRes(basicInfoStatus, "离婚|离异|未婚|未结婚")) {
+                status.set("-1");
                 return;
             }
         }
 
-        //无婚育史
-        MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
-        if (maritalLabel == null || maritalLabel.getText() == null) {
-            status.set("0");
+        //5.婚姻为【离婚/离异】并且婚育史包含【离婚/离异】任一则通过,不存在但包含【未婚/未结婚/已故/丧偶/去世/亡故/已逝/死亡】中任一则报出。
+        if (bhbasicInfoStatus.equals("离婚") || bhbasicInfoStatus.equals("离异")) {
+            if (RegexUtil.getRegexRes(basicInfoStatus, "离婚|离异")) {
+                return;
+            }
+            if (RegexUtil.getRegexRes(basicInfoStatus, "未婚|未结婚|已故|丧偶|去世|亡故|已逝|死亡")) {
+                status.set("-1");
+                return;
+            }
         }
 
-        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("结婚")) {
-            return;
+        //6.婚姻为【已婚/再婚】并且婚育史包含【适龄结婚/适龄婚育/结婚/再婚/育有/已婚】任一则通过,不存在但包含【未婚/未结婚/离婚/离异/已故/丧偶/去世/亡故/已逝/死亡】中任一则报出。
+        if (bhbasicInfoStatus.equals("已婚") || bhbasicInfoStatus.contains("再婚")) {
+            if (RegexUtil.getRegexRes(basicInfoStatus, "适龄结婚|适龄婚育|结婚|再婚|育有|已婚")) {
+                return;
+            }
+            if (RegexUtil.getRegexRes(basicInfoStatus, "未婚|未结婚|离婚|离异|已故|丧偶|去世|亡故|已逝|死亡")) {
+                status.set("-1");
+                return;
+            }
         }
+
     }
 
-}
+}