Browse Source

自动化测试bug修正

zhaops 4 years ago
parent
commit
4475d06768

+ 1 - 0
cdssman-service/src/main/java/com/diagbot/dto/RuleDTO.java

@@ -12,6 +12,7 @@ import lombok.Setter;
 @Setter
 public class RuleDTO {
     private Long ruleOrderNo;
+    private Integer ruleType;
     private Integer ruleLibType;
     private String ruleLibTypeName;
     private String ruleLibName;

+ 211 - 177
cdssman-service/src/main/java/com/diagbot/facade/MedRuleConvertFacade.java

@@ -170,7 +170,7 @@ public class MedRuleConvertFacade {
                 List<ResultRule> tempList = Lists.newLinkedList();
 
                 ResultRule result = new ResultRule();
-                result.setRuleType(ruleVO.getRuleType());
+                result.setRuleType(record.getRuleType());
 
                 result.setRuleId(record.getRuleId());
                 result.setRuleLibType(record.getRuleLibType());
@@ -178,10 +178,30 @@ public class MedRuleConvertFacade {
                 result.setRuleLibName(record.getRuleLibName());
                 result.setRuleHisName("");
                 result.setRuleHisDetailName("");
-
+                result.setMessage("");
+                result.setRuleMsg(record.getRuleMsg());
+                result.setReferenceValue("");
                 result.setHasSubCond(record.getHasSubCond());
 
                 if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
+
+                    if (record.getRuleBaseId() == null) {
+                        if (result.getRuleType().equals(RuleTypeEnum.Critical.getKey())
+                                && result.getRuleLibType().equals(LexiconEnum.PacsResult.getKey())) {
+                            //其他值提醒辅检
+                        } else if (result.getRuleType().equals(RuleTypeEnum.HighRisk.getKey())
+                                && result.getRuleLibType().equals(LexiconEnum.Operation.getKey())) {
+                            //高危手术
+                        } else {
+                            result.setSuccess(0);
+                            result.setMessage("规则不完整,缺少基础规则;");
+                            tempList.add(result);
+                            tempMap.put(num++, tempList);
+                            inputList = addRuleOrderNo(tempMap, 1, Lists.newLinkedList(), inputList);
+                            continue;
+                        }
+                    }
+
                     result.setRuleBaseId(record.getRuleBaseId());
                     result.setRuleBaseType(record.getRuleBaseType());
                     result.setRuleBaseLibType(record.getRuleBaseLibType());
@@ -191,6 +211,22 @@ public class MedRuleConvertFacade {
                     result.setRuleBaseHisDetailName("");
                     result.setGroupType(record.getGroupType());
 
+                    //其他值提醒辅检
+                    if (result.getRuleType().equals(RuleTypeEnum.OtherValReminders.getKey())) {
+                        result.setExpectedOutput(record.getRuleMsg());
+                    }
+
+                    //高危药品
+                    if (result.getRuleType().equals(RuleTypeEnum.HighRisk.getKey())
+                            && result.getRuleLibType().equals(LexiconEnum.Medicine.getKey())) {
+                        result.setReferenceValue(record.getRuleMsg());
+                    }
+
+                    //输血其他值提醒
+                    if (result.getRuleType().equals(RuleTypeEnum.Transfusion.getKey())) {
+                        result.setReferenceValue(record.getRuleMsg());
+                    }
+
                     if (StringUtil.isNotBlank(result.getRuleBaseLibName())) {
                         switch (result.getRuleBaseLibName()) {
                             case "新生儿":
@@ -213,29 +249,8 @@ public class MedRuleConvertFacade {
                                 break;
                         }
                     }
-                }
-
-                result.setMessage("");
-                result.setReferenceValue("");
-                result.setRuleMsg(record.getRuleMsg());
 
-                //其他值提醒辅检
-                if (result.getRuleType().equals(RuleTypeEnum.OtherValReminders.getKey())) {
-                    result.setExpectedOutput(record.getRuleMsg());
-                }
-
-                //高危药品
-                if (result.getRuleType().equals(RuleTypeEnum.HighRisk.getKey())
-                        && result.getRuleLibType().equals(LexiconEnum.Medicine.getKey())) {
-                    result.setReferenceValue(record.getRuleMsg());
-                }
-
-                //输血其他值提醒
-                if (result.getRuleType().equals(RuleTypeEnum.Transfusion.getKey())) {
-                    result.setReferenceValue(record.getRuleMsg());
-                }
-                //比较关系
-                if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
+                    //比较关系
                     if (StringUtil.isNotBlank(record.getRuleBaseMinOperator())
                             && StringUtil.isNotBlank(record.getRuleBaseMaxOperator())) {
                         //上下限比较
@@ -394,33 +409,37 @@ public class MedRuleConvertFacade {
             Integer num = 1;
             for (ResultRule result : entry.getValue()) {
                 List<ResultRule> tempList = Lists.newLinkedList();
-                if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
-                    if (result.getRuleBaseLibType() != null
-                            && (result.getRuleBaseLibType().equals(LexiconEnum.MedChemClass.getKey())
-                            || result.getRuleBaseLibType().equals(LexiconEnum.MedZhiLiaoClass.getKey())
-                            || result.getRuleBaseLibType().equals(LexiconEnum.MedYaoLiClass.getKey())
-                            || result.getRuleBaseLibType().equals(LexiconEnum.MedJiePouClass.getKey()))) {
-                        List<String> medicines = medClassMedMap.get(result.getRuleBaseLibName());
-                        if (ListUtil.isNotEmpty(medicines)) {
-                            for (String med : medicines) {
-                                ResultRule medResult = new ResultRule();
-                                BeanUtil.copyProperties(result, medResult);
-                                medResult.setReferenceValue("药品类别_" + result.getRuleBaseLibType() + "_" + result.getRuleBaseLibTypeName() + "_" + result.getRuleBaseLibName());
-                                medResult.setRuleBaseLibName(med);
-                                medResult.setRuleBaseLibType(LexiconEnum.Medicine.getKey());
-                                medResult.setRuleBaseLibTypeName(LexiconEnum.Medicine.getName());
-                                tempList.add(medResult);
+                if (result.getSuccess() != null && result.getSuccess().equals(0)) {
+                    tempList.add(result);
+                } else {
+                    if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
+                        if (result.getRuleBaseLibType() != null
+                                && (result.getRuleBaseLibType().equals(LexiconEnum.MedChemClass.getKey())
+                                || result.getRuleBaseLibType().equals(LexiconEnum.MedZhiLiaoClass.getKey())
+                                || result.getRuleBaseLibType().equals(LexiconEnum.MedYaoLiClass.getKey())
+                                || result.getRuleBaseLibType().equals(LexiconEnum.MedJiePouClass.getKey()))) {
+                            List<String> medicines = medClassMedMap.get(result.getRuleBaseLibName());
+                            if (ListUtil.isNotEmpty(medicines)) {
+                                for (String med : medicines) {
+                                    ResultRule medResult = new ResultRule();
+                                    BeanUtil.copyProperties(result, medResult);
+                                    medResult.setReferenceValue("药品类别_" + result.getRuleBaseLibType() + "_" + result.getRuleBaseLibTypeName() + "_" + result.getRuleBaseLibName());
+                                    medResult.setRuleBaseLibName(med);
+                                    medResult.setRuleBaseLibType(LexiconEnum.Medicine.getKey());
+                                    medResult.setRuleBaseLibTypeName(LexiconEnum.Medicine.getName());
+                                    tempList.add(medResult);
+                                }
+                            } else {
+                                result.setSuccess(0);
+                                result.setMessage(result.getMessage() + result.getRuleBaseLibName() + "(" + result.getRuleBaseLibTypeName() + ")缺少相关药品通用名称;");
+                                tempList.add(result);
                             }
                         } else {
-                            result.setSuccess(0);
-                            result.setMessage(result.getMessage() + result.getRuleBaseLibName() + "(" + result.getRuleBaseLibTypeName() + ")缺少相关药品通用名称;");
                             tempList.add(result);
                         }
                     } else {
                         tempList.add(result);
                     }
-                } else {
-                    tempList.add(result);
                 }
                 tempMap.put(num++, tempList);
             }
@@ -436,37 +455,41 @@ public class MedRuleConvertFacade {
             Integer num = 1;
             for (ResultRule result : entry.getValue()) {
                 List<ResultRule> tempList = Lists.newLinkedList();
-                if (result.getRuleType().equals(RuleTypeEnum.OtherValReminders.getKey())) {
-                    if (StringUtil.isNotBlank(result.getRuleBaseLibName())
-                            && result.getRuleBaseLibName().equals("流产")) {
-                        List<String> conflictDiseases = Lists.newLinkedList();
-                        if (hospitalId < 0) {
-                            List<KlConcept> concepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
-                                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                                    .eq("status", StatusEnum.Enable.getKey())
-                                    .eq("lib_type", LexiconEnum.Disease.getKey())
-                                    .like("lib_name", result.getRuleBaseLibName()));
-                            if (ListUtil.isNotEmpty(concepts)) {
-                                conflictDiseases = concepts.stream().map(i -> i.getLibName()).collect(Collectors.toList());
+                if (result.getSuccess() != null && result.getSuccess().equals(0)) {
+                    tempList.add(result);
+                } else {
+                    if (result.getRuleType().equals(RuleTypeEnum.OtherValReminders.getKey())) {
+                        if (StringUtil.isNotBlank(result.getRuleBaseLibName())
+                                && result.getRuleBaseLibName().equals("流产")) {
+                            List<String> conflictDiseases = Lists.newLinkedList();
+                            if (hospitalId < 0) {
+                                List<KlConcept> concepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                        .eq("status", StatusEnum.Enable.getKey())
+                                        .eq("lib_type", LexiconEnum.Disease.getKey())
+                                        .like("lib_name", result.getRuleBaseLibName()));
+                                if (ListUtil.isNotEmpty(concepts)) {
+                                    conflictDiseases = concepts.stream().map(i -> i.getLibName()).collect(Collectors.toList());
+                                }
+                            } else {
+                                conflictDiseases = diseaseConfigMap.keySet().stream()
+                                        .filter(i -> i.contains(result.getRuleBaseLibName())).collect(Collectors.toList());
+                            }
+                            for (String conflictDisease : conflictDiseases) {
+                                ResultRule convertResult = new ResultRule();
+                                BeanUtil.copyProperties(result, convertResult);
+                                convertResult.setReferenceValue(convertResult.getRuleBaseLibType() + "_" + convertResult.getRuleBaseLibTypeName() + "_" + convertResult.getRuleBaseLibName());
+                                convertResult.setRuleBaseLibName(conflictDisease);
+                                convertResult.setRuleBaseLibType(LexiconEnum.Disease.getKey());
+                                convertResult.setRuleBaseLibTypeName(LexiconEnum.Disease.getName());
+                                tempList.add(convertResult);
                             }
                         } else {
-                            conflictDiseases = diseaseConfigMap.keySet().stream()
-                                    .filter(i -> i.contains(result.getRuleBaseLibName())).collect(Collectors.toList());
-                        }
-                        for (String conflictDisease : conflictDiseases) {
-                            ResultRule convertResult = new ResultRule();
-                            BeanUtil.copyProperties(result, convertResult);
-                            convertResult.setReferenceValue(convertResult.getRuleBaseLibType() + "_" + convertResult.getRuleBaseLibTypeName() + "_" + convertResult.getRuleBaseLibName());
-                            convertResult.setRuleBaseLibName(conflictDisease);
-                            convertResult.setRuleBaseLibType(LexiconEnum.Disease.getKey());
-                            convertResult.setRuleBaseLibTypeName(LexiconEnum.Disease.getName());
-                            tempList.add(convertResult);
+                            tempList.add(result);
                         }
                     } else {
                         tempList.add(result);
                     }
-                } else {
-                    tempList.add(result);
                 }
                 tempMap.put(num++, tempList);
             }
@@ -482,20 +505,24 @@ public class MedRuleConvertFacade {
             Integer num = 1;
             for (ResultRule result : entry.getValue()) {
                 List<ResultRule> tempList = Lists.newLinkedList();
-                if (result.getRuleType().equals(RuleTypeEnum.Repeatedly.getKey())) {
-                    if (StringUtil.isNotBlank(result.getRuleBaseInputValue())) {
-                        List<String> pacsResultArr = Arrays.asList(result.getRuleBaseInputValue().split("\\|"));
-                        for (String pacsResult : pacsResultArr) {
-                            ResultRule rePacsResult = new ResultRule();
-                            BeanUtil.copyProperties(result, rePacsResult);
-                            rePacsResult.setRuleBaseInputValue(pacsResult);
-                            tempList.add(rePacsResult);
+                if (result.getSuccess() != null && result.getSuccess().equals(0)) {
+                    tempList.add(result);
+                } else {
+                    if (result.getRuleType().equals(RuleTypeEnum.Repeatedly.getKey())) {
+                        if (StringUtil.isNotBlank(result.getRuleBaseInputValue())) {
+                            List<String> pacsResultArr = Arrays.asList(result.getRuleBaseInputValue().split("\\|"));
+                            for (String pacsResult : pacsResultArr) {
+                                ResultRule rePacsResult = new ResultRule();
+                                BeanUtil.copyProperties(result, rePacsResult);
+                                rePacsResult.setRuleBaseInputValue(pacsResult);
+                                tempList.add(rePacsResult);
+                            }
+                        } else {
+                            tempList.add(result);
                         }
                     } else {
                         tempList.add(result);
                     }
-                } else {
-                    tempList.add(result);
                 }
                 tempMap.put(num++, tempList);
             }
@@ -513,84 +540,87 @@ public class MedRuleConvertFacade {
                 Map<Integer, List<ResultRule>> tempMap = new HashMap<>();
                 Integer num = 1;
                 for (int i = 0; i < entry.getValue().size(); i++) {
-                    //for (ResultRule result : entry.getValue()) {
                     ResultRule result = entry.getValue().get(i);
                     List<ResultRule> tempList = Lists.newLinkedList();
-                    if (i == 0) {
-                        if (result.getRuleLibType().equals(LexiconEnum.Medicine.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult_medicine(result, drugConfigMap, 1, result.getRuleType());
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                });
-                            }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.Operation.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult(result, operationConfigMap, 1);
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                });
-                            }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.LisName.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult_lis(result, lisConfigMap, 1);
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                    item.setRuleBaseHisDetailName(item.getRuleHisDetailName());
-                                });
-                            }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.LisSubName.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult_lis(result, lisConfigMap, 1);
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                    item.setRuleBaseHisDetailName(item.getRuleHisDetailName());
-                                });
-                            }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.PacsName.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 1);
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                });
-                            }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.PacsSubName.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 1);
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                });
-                            }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.Transfusion.getKey())) {
-                            List<ResultRule> mappingList = getMappingResult(result, transfusionConfigMap, 1);
-                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                                mappingList.forEach(item -> {
-                                    item.setRuleBaseHisName(item.getRuleHisName());
-                                });
+                    if (result.getSuccess() != null && result.getSuccess().equals(0)) {
+                        tempList.add(result);
+                    } else {
+                        if (i == 0) {
+                            if (result.getRuleLibType().equals(LexiconEnum.Medicine.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult_medicine(result, drugConfigMap, 1, result.getRuleType());
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.Operation.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult(result, operationConfigMap, 1);
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.LisName.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult_lis(result, lisConfigMap, 1);
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                        item.setRuleBaseHisDetailName(item.getRuleHisDetailName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.LisSubName.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult_lis(result, lisConfigMap, 1);
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                        item.setRuleBaseHisDetailName(item.getRuleHisDetailName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.PacsName.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 1);
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.PacsSubName.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 1);
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.Transfusion.getKey())) {
+                                List<ResultRule> mappingList = getMappingResult(result, transfusionConfigMap, 1);
+                                if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                        && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
+                                    mappingList.forEach(item -> {
+                                        item.setRuleBaseHisName(item.getRuleHisName());
+                                    });
+                                }
+                                tempList.addAll(mappingList);
+                            } else if (result.getRuleLibType().equals(LexiconEnum.PacsResult.getKey())) {
+                                tempList.add(result);
+                            } else {
+                                tempList.add(result);
                             }
-                            tempList.addAll(mappingList);
-                        } else if (result.getRuleLibType().equals(LexiconEnum.PacsResult.getKey())) {
-                            tempList.add(result);
                         } else {
+                            result.setRuleHisName(entry.getValue().get(0).getRuleHisName());
+                            result.setRuleHisDetailName(entry.getValue().get(0).getRuleHisDetailName());
                             tempList.add(result);
                         }
-                    } else {
-                        result.setRuleHisName(entry.getValue().get(0).getRuleHisName());
-                        result.setRuleHisDetailName(entry.getValue().get(0).getRuleHisDetailName());
-                        tempList.add(result);
                     }
                     tempMap.put(num++, tempList);
                 }
@@ -606,35 +636,39 @@ public class MedRuleConvertFacade {
                 Integer num = 1;
                 for (ResultRule result : entry.getValue()) {
                     List<ResultRule> tempList = Lists.newLinkedList();
-                    if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
-                        if (result.getRuleLibType().equals(result.getRuleBaseLibType())
-                                && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
-                            tempList.add(result);
-                        } else {
-                            if (result.getRuleBaseLibType().equals(LexiconEnum.Disease.getKey())) {
-                                List<ResultRule> mappingList = getMappingResult(result, diseaseConfigMap, 2);
-                                tempList.addAll(mappingList);
-                            } else if (result.getRuleBaseLibType().equals(LexiconEnum.Medicine.getKey())) {
-                                List<ResultRule> mappingList = getMappingResult_medicine(result, drugConfigMap, 2, result.getRuleType());
-                                tempList.addAll(mappingList);
-                            } else if (result.getRuleBaseLibType().equals(LexiconEnum.LisSubName.getKey())) {
-                                List<ResultRule> mappingList = getMappingResult_lis(result, lisConfigMap, 2);
-                                tempList.addAll(mappingList);
-                            } else if (result.getRuleBaseLibType().equals(LexiconEnum.PacsName.getKey())) {
-                                List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 2);
-                                tempList.addAll(mappingList);
-                            } else if (result.getRuleBaseLibType().equals(LexiconEnum.PacsSubName.getKey())) {
-                                List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 2);
-                                tempList.addAll(mappingList);
-                            } else if (result.getRuleBaseLibType().equals(LexiconEnum.Operation.getKey())) {
-                                List<ResultRule> mappingList = getMappingResult(result, operationConfigMap, 2);
-                                tempList.addAll(mappingList);
-                            } else {
+                    if (result.getSuccess() != null && result.getSuccess().equals(0)) {
+                        tempList.add(result);
+                    } else {
+                        if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
+                            if (result.getRuleLibType().equals(result.getRuleBaseLibType())
+                                    && result.getRuleLibName().equals(result.getRuleBaseLibName())) {
                                 tempList.add(result);
+                            } else {
+                                if (result.getRuleBaseLibType().equals(LexiconEnum.Disease.getKey())) {
+                                    List<ResultRule> mappingList = getMappingResult(result, diseaseConfigMap, 2);
+                                    tempList.addAll(mappingList);
+                                } else if (result.getRuleBaseLibType().equals(LexiconEnum.Medicine.getKey())) {
+                                    List<ResultRule> mappingList = getMappingResult_medicine(result, drugConfigMap, 2, result.getRuleType());
+                                    tempList.addAll(mappingList);
+                                } else if (result.getRuleBaseLibType().equals(LexiconEnum.LisSubName.getKey())) {
+                                    List<ResultRule> mappingList = getMappingResult_lis(result, lisConfigMap, 2);
+                                    tempList.addAll(mappingList);
+                                } else if (result.getRuleBaseLibType().equals(LexiconEnum.PacsName.getKey())) {
+                                    List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 2);
+                                    tempList.addAll(mappingList);
+                                } else if (result.getRuleBaseLibType().equals(LexiconEnum.PacsSubName.getKey())) {
+                                    List<ResultRule> mappingList = getMappingResult(result, pacsConfigMap, 2);
+                                    tempList.addAll(mappingList);
+                                } else if (result.getRuleBaseLibType().equals(LexiconEnum.Operation.getKey())) {
+                                    List<ResultRule> mappingList = getMappingResult(result, operationConfigMap, 2);
+                                    tempList.addAll(mappingList);
+                                } else {
+                                    tempList.add(result);
+                                }
                             }
+                        } else {
+                            tempList.add(result);
                         }
-                    } else {
-                        tempList.add(result);
                     }
                     tempMap.put(num++, tempList);
                 }

+ 4 - 2
cdssman-service/src/main/resources/mapper/KlRuleMapper.xml

@@ -20,6 +20,7 @@
 
     <select id="getRules" resultType="com.diagbot.dto.RuleDTO">
         SELECT
+        t1.rule_type AS ruleType,
         t1.lib_type AS ruleLibType,
         t1.lib_type_name AS ruleLibTypeName,
         t1.lib_name AS ruleLibName,
@@ -29,7 +30,7 @@
         t1.has_sub_cond AS hasSubCond,
         t1.msg AS ruleMsg,
         t2.group_type AS groupType,
-        t2.rule_base_id AS ruleBaseId,
+        t3.id AS ruleBaseId,
         t3.description AS ruleBaseDescription,
         t3.eq_operator AS ruleBaseEqOperator,
         t3.eq_unit AS ruleBaseEqUnit,
@@ -56,7 +57,8 @@
         b.description,
         b.has_sub_cond,
         b.msg,
-        b.`status`
+        b.`status`,
+        b.rule_type
         FROM
         kl_concept a,
         kl_rule b,