Forráskód Böngészése

修改规则 FIRC03237 血型填写错误

hecc 3 éve
szülő
commit
1acdb86227

+ 40 - 38
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRC03237.java

@@ -9,6 +9,7 @@ import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.doc.LisDoc;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -21,34 +22,30 @@ import java.util.Map;
 @Component
 public class FIRC03237 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<String> type = Arrays.asList("A型","B型","O型","o型","AB型","不详","未查","A","B","O","o","AB","1","2","3","4","5","6");
         if (inputInfo.getFirstPageRecordDoc() == null){
-            status.set("0");
             return;
         }
 
-        List<LisDoc> lisDocs = inputInfo.getLisDocs();
         //1.获取【首页>>血型】填写内容,保存为T_A。若文书不在或字段未填写,直接返回。
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String bloodType = firstpageStructureMap.get(Content.bloodType);
             if (bloodType == null){
-                status.set("0");
                 return;
             }
 
             //2.判断:若T_A不属于【A型/B型/O型/AB型/不详/未查/A/B/O/AB/1/2/3/4/5/6】任一,则报规则。
-            if (!CatalogueUtil.isEmpty(bloodType) &&
-                    (!bloodType.contains("A型") || !bloodType.contains("B型") || !bloodType.contains("O型") || !bloodType.contains("AB型")
-                            || !bloodType.contains("不详") || !bloodType.contains("未查") || !bloodType.contains("A") || !bloodType.contains("B")
-                            || !bloodType.contains("O") || !bloodType.contains("AB") || !bloodType.contains("1") || !bloodType.contains("2")
-                            || !bloodType.contains("3") || !bloodType.contains("4") || !bloodType.contains("5") || !bloodType.contains("6"))){
-                status.set("-1");
-            }
+                if (!CatalogueUtil.isEmpty(bloodType) && (!type.contains(bloodType))) {
+                    status.set("-1");
+                    return;
+                }
 
             //3.判断:病历内存在【输血*记录】文书,或【病案首页>>血费】>0,若血型填写为(不详/未查/5/6/-),则报规则。
             List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
             if (clinicalBloodDocs !=null && clinicalBloodDocs.size()>0) {
-                if (!CatalogueUtil.isEmpty(bloodType) &&
+                if ((!CatalogueUtil.isEmpty(bloodType)) &&
                         (bloodType.contains("不详") || bloodType.contains("未查") || bloodType.contains("5") || bloodType.contains("6") || bloodType.contains("-"))){
                     status.set("-1");
                     return;
@@ -56,50 +53,55 @@ public class FIRC03237 extends QCCatalogue {
             }
 
             if (Integer.valueOf(firstpageStructureMap.get("血费")) >0){
-                if (!CatalogueUtil.isEmpty(bloodType) &&
+                if ((!CatalogueUtil.isEmpty(bloodType)) &&
                         (bloodType.contains("不详") || bloodType.contains("未查") || bloodType.contains("5") || bloodType.contains("6") || bloodType.contains("-"))){
                     status.set("-1");
                     return;
                 }
             }
 
+            List<LisDoc> lisDocs = inputInfo.getLisDocs();
             //4.获取检验报告单存在【血型鉴定】>>【ABO血型】结果值,保存为T_B。若未获得血型化验结果,则直接返回(或内测时能提示未成功获取血型化验结果)
             if (inputInfo.getLisDocs() == null){
-                status.set("0");
                 return;
             }
+
+            //5.判断:
             for (LisDoc lisDoc : lisDocs) {
-                //5.判断:
                 Map<String, String> structureMap = lisDoc.getStructureMap();
-                String result = structureMap.get("AOB血型").replace(" ",null);
-                //5.1若T_B为【A型、A】任一(可自己定义更多同义写法或改用正则p11匹配),则T_A必须为【1、A、A型】任一,否则报规则;
-                if (result.contains("A型") || result.contains("A")){
-                    if (!bloodType.contains("1") || !bloodType.contains("A") || !bloodType.contains("A型")){
-                        status.set("-1");
-                        return;
+                String check = structureMap.get("报告名称");
+                if (check.contains("输血血样检测") || check.contains("血型鉴定")){
+                    String result = structureMap.get("检验结果");
+                    //5.1若T_B为【A型、A】任一(可自己定义更多同义写法或改用正则p11匹配),则T_A必须为【1、A、A型】任一,否则报规则;
+                    if (result.contains("A型") || result.contains("A")){
+                        if (!(bloodType.contains("1") || bloodType.contains("A") || bloodType.contains("A型"))){
+                            status.set("-1");
+                            return;
+                        }
                     }
-                }
-                //5.2若T_B为【B型、B 型、B】任一(可自己定义更多同义写法或改用正则p12匹配),则T_A必须为【2、B、B型】任一,否则报规则;
-                if (result.contains("B型") || result.contains("B")){
-                    if (!bloodType.contains("2") || !bloodType.contains("B") || !bloodType.contains("B型")){
-                        status.set("-1");
-                        return;
+                    //5.2若T_B为【B型、B 型、B】任一(可自己定义更多同义写法或改用正则p12匹配),则T_A必须为【2、B、B型】任一,否则报规则;
+                    if (result.contains("B型") || result.contains("B")){
+                        if (!(bloodType.contains("2") || bloodType.contains("B") || bloodType.contains("B型"))){
+                            status.set("-1");
+                            return;
+                        }
                     }
-                }
-                //5.4若T_B为【O型、O 型、O】任一(可自己定义更多同义写法或改用正则p14匹配),则T_A必须为【3、O、O型】任一,否则报规则;
-                if (result.contains("O型") || result.contains("O")){
-                    if (!bloodType.contains("3") || !bloodType.contains("O") || !bloodType.contains("O型")){
-                        status.set("-1");
-                        return;
+                    //5.4若T_B为【O型、O 型、O】任一(可自己定义更多同义写法或改用正则p14匹配),则T_A必须为【3、O、O型】任一,否则报规则;
+                    if (result.contains("O型") || result.contains("O")){
+                        if (!(bloodType.contains("3") || bloodType.contains("O") || bloodType.contains("O型") || bloodType.contains("o") || bloodType.contains("o型"))){
+                            status.set("-1");
+                            return;
+                        }
                     }
-                }
-                //5.3若T_B为【AB型、AB 型、AB】任一(可自己定义更多同义写法或改用正则p13匹配),则T_A必须为【4、AB、AB型】任一,否则报规则;
-                if (result.contains("AB型") || result.contains("AB")){
-                    if (!bloodType.contains("4") || !bloodType.contains("AB") || !bloodType.contains("AB型")){
-                        status.set("-1");
-                        return;
+                    //5.3若T_B为【AB型、AB 型、AB】任一(可自己定义更多同义写法或改用正则p13匹配),则T_A必须为【4、AB、AB型】任一,否则报规则;
+                    if (result.contains("AB型") || result.contains("AB")){
+                        if (!(bloodType.contains("4") || bloodType.contains("AB") || bloodType.contains("AB型"))){
+                            status.set("-1");
+                            return;
+                        }
                     }
                 }
+
             }
         }
     }