Browse Source

Merge remote-tracking branch 'origin/dev/neo2mysql20210120' into test

zhaops 4 years ago
parent
commit
afdfd6fa47

+ 1 - 1
cdssman-service/doc/002.20210325自动化测试脚本/cdss_init.sql

@@ -149,7 +149,7 @@ CREATE TABLE `test_result_rule`  (
   `rule_base_max_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '基础规则参考值(最大值)',
   `rule_base_min_value` decimal(10, 4) NULL DEFAULT NULL COMMENT '基础规则参考值(最小值)',
   `rule_base_unit` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '基础规则单位',
-  `rule_base_input_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '基础规则输入值',
+  `rule_base_input_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '基础规则输入值',
   `reference_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '基础规则参考值',
   `output` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实际输出结果(提醒文本)',
   `expected_output` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '期望输出结果(提醒文本)',

+ 14 - 12
cdssman-service/src/main/java/com/diagbot/aggregate/RuleTestAggregate.java

@@ -208,19 +208,21 @@ public class RuleTestAggregate {
         runningInfoVO.setStatus(1);
         runningInfoFacade.updateStatus(runningInfoVO);
 
-        //生成测试规则
-        List<ResultRule> resultList = medRuleConvertFacade.billConvert(hospitalId, ruleTestVO.getCaseId());
-        if (ListUtil.isEmpty(resultList)) {
-            return true;
+        try {
+            //生成测试规则
+            List<ResultRule> resultList = medRuleConvertFacade.billConvert(hospitalId, ruleTestVO.getCaseId());
+            if (ListUtil.isEmpty(resultList)) {
+                return true;
+            }
+            //远程调用推理
+            List<ResultRule> saveList = callIndication(resultList, hospitalId);
+            //保存测试结果
+            saveResultRule(saveList, ruleTestVO);
+        } finally {
+            //结束运行
+            runningInfoVO.setStatus(0);
+            runningInfoFacade.updateStatus(runningInfoVO);
         }
-        //远程调用推理
-        List<ResultRule> saveList = callIndication(resultList, hospitalId);
-        //保存测试结果
-        saveResultRule(saveList, ruleTestVO);
-
-        //结束运行
-        runningInfoVO.setStatus(0);
-        runningInfoFacade.updateStatus(runningInfoVO);
         return true;
     }
 

+ 40 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -11,8 +11,12 @@ import com.diagbot.dto.KlConceptInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlConceptCommon;
+import com.diagbot.entity.KlConceptStatic;
 import com.diagbot.entity.KlLexicon;
 import com.diagbot.entity.KlLibraryInfo;
+import com.diagbot.entity.KlRelation;
+import com.diagbot.entity.KlRule;
+import com.diagbot.entity.KlRuleBase;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.exception.CommonErrorCode;
@@ -63,6 +67,15 @@ public class KlConceptFacade extends KlConceptServiceImpl {
     KlDiseaseFacade klDiseaseFacade;
     @Autowired
     KlLexiconFacade klLexiconFacade;
+    @Autowired
+    KlConceptStaticFacade klConceptStaticFacade;
+    @Autowired
+    KlRelationFacade klRelationFacade;
+    @Autowired
+    KlRuleFacade klRuleFacade;
+    @Autowired
+    KlRuleBaseFacade klRuleBaseFacade;
+
 
     /**
      * @param klConceptInfoVO
@@ -365,6 +378,33 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         if (sum == 0) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该数据已不存!");
         }
+        //kl_concept_static 静态信息
+        int conceptStaticSum = klConceptStaticFacade.count(new QueryWrapper<KlConceptStatic>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", klConceptSatarOrdisaVO.getConceptId()));
+        if (conceptStaticSum > 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与静态信息存在关系!");
+        }
+
+        //kl_relation
+        int relationsum = klRelationFacade.count(new QueryWrapper<KlRelation>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("start_id", klConceptSatarOrdisaVO.getConceptId()).or()
+                .eq("end_id", klConceptSatarOrdisaVO.getConceptId()));
+        if (relationsum > 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与树形结构或疾病相关存在关系!");
+        }
+        //kl_rule
+        int rulesum = klRuleFacade.count(new QueryWrapper<KlRule>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", klConceptSatarOrdisaVO.getConceptId()));
+        if (rulesum > 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与规则维护存在关系!");
+        }
+        //kl_rule_base
+        int ruleBasesum = klRuleBaseFacade.count(new QueryWrapper<KlRuleBase>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", klConceptSatarOrdisaVO.getConceptId()));
+        if (ruleBasesum > 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与规则维护明细存在关系!");
+        }
+
         UpdateWrapper<KlConcept> klLibraryUpdate = new UpdateWrapper<>();
         klLibraryUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("id", klConceptSatarOrdisaVO.getConceptId()).set("status", status).set("gmt_modified", now);

+ 13 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlRuleBaseFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlRuleBaseServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-26 11:40
+ */
+@Component
+public class KlRuleBaseFacade extends KlRuleBaseServiceImpl {
+}

+ 33 - 29
cdssman-service/src/main/java/com/diagbot/facade/MedRuleConvertFacade.java

@@ -14,6 +14,7 @@ import com.diagbot.enums.RuleBaseTypeEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.enums.TypeEnum;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.MsgUtil;
 import com.diagbot.util.StringUtil;
@@ -161,6 +162,7 @@ public class MedRuleConvertFacade {
             Map<Integer, List<ResultRule>> tempMap = new HashMap<>();
             Integer num = 1;
             for (RuleDTO record : entry.getValue()) {
+                System.out.println(FastJsonUtils.getBeanToJson(record));
                 List<ResultRule> tempList = Lists.newLinkedList();
 
                 ResultRule result = new ResultRule();
@@ -185,26 +187,27 @@ public class MedRuleConvertFacade {
                     result.setRuleBaseHisDetailName("");
                     result.setGroupType(record.getGroupType());
 
-                    //年龄转换数值
-                    switch (result.getRuleBaseLibName()) {
-                        case "新生儿":
-                            result.setRuleBaseInputValue(random_int(1, 12, true, true).toString());
-                            result.setRuleBaseUnit("月");
-                            break;
-                        case "幼儿":
-                            result.setRuleBaseInputValue(random_int(1, 6, true, false).toString());
-                            break;
-                        case "儿童":
-                            result.setRuleBaseInputValue(random_int(1, 6, true, false).toString());
-                            break;
-                        case "成人":
-                            result.setRuleBaseInputValue(random_int(18, 200, true, false).toString());
-                            break;
-                        case "月经期":
-                            result.setRuleBaseInputValue(random_int(0, 99, true, true).toString());
-                            break;
-                        default:
-                            break;
+                    if (StringUtil.isNotBlank(result.getRuleBaseLibName())) {
+                        switch (result.getRuleBaseLibName()) {
+                            case "新生儿":
+                                result.setRuleBaseInputValue(random_int(1, 12, true, true).toString());
+                                result.setRuleBaseUnit("月");
+                                break;
+                            case "幼儿":
+                                result.setRuleBaseInputValue(random_int(1, 6, true, false).toString());
+                                break;
+                            case "儿童":
+                                result.setRuleBaseInputValue(random_int(1, 6, true, false).toString());
+                                break;
+                            case "成人":
+                                result.setRuleBaseInputValue(random_int(18, 200, true, false).toString());
+                                break;
+                            case "月经期":
+                                result.setRuleBaseInputValue(random_int(0, 99, true, true).toString());
+                                break;
+                            default:
+                                break;
+                        }
                     }
                 }
 
@@ -235,8 +238,8 @@ public class MedRuleConvertFacade {
                         if (record.getRuleBaseMaxValue() >= record.getRuleBaseMinValue()) {
                             ResultRule valResult = new ResultRule();
                             BeanUtil.copyProperties(result, valResult);
-                            valResult.setRuleBaseMinValue(new BigDecimal(record.getRuleBaseMinValue()));
-                            valResult.setRuleBaseMaxValue(new BigDecimal(record.getRuleBaseMaxValue()));
+                            valResult.setRuleBaseMinValue(new BigDecimal(record.getRuleBaseMinValue()).setScale(3, BigDecimal.ROUND_HALF_UP));
+                            valResult.setRuleBaseMaxValue(new BigDecimal(record.getRuleBaseMaxValue()).setScale(3, BigDecimal.ROUND_HALF_UP));
                             if (valResult.getRuleBaseLibName().equals("年龄")
                                     && valResult.getRuleBaseMinValue().doubleValue() > 1D) {
                                 valResult.setRuleBaseInputValue(random_int(record.getRuleBaseMinValue().intValue(),
@@ -262,7 +265,7 @@ public class MedRuleConvertFacade {
                             //大于最小值inputValue>minValue
                             ResultRule gtResult = new ResultRule();
                             BeanUtil.copyProperties(result, gtResult);
-                            gtResult.setRuleBaseMinValue(new BigDecimal(record.getRuleBaseMinValue()));
+                            gtResult.setRuleBaseMinValue(new BigDecimal(record.getRuleBaseMinValue()).setScale(3, BigDecimal.ROUND_HALF_UP));
                             if (gtResult.getRuleBaseLibName().equals("年龄")
                                     && gtResult.getRuleBaseMinValue().doubleValue() > 1D) {
                                 gtResult.setRuleBaseInputValue(random_int(record.getRuleBaseMinValue().intValue(),
@@ -285,7 +288,7 @@ public class MedRuleConvertFacade {
                             ResultRule ltResult = new ResultRule();
                             BeanUtil.copyProperties(result, ltResult);
                             //inputValue>minValue
-                            ltResult.setRuleBaseMaxValue(new BigDecimal(record.getRuleBaseMaxValue()));
+                            ltResult.setRuleBaseMaxValue(new BigDecimal(record.getRuleBaseMaxValue()).setScale(3, BigDecimal.ROUND_HALF_UP));
                             if (ltResult.getRuleBaseLibName().equals("年龄")
                                     && ltResult.getRuleBaseMaxValue().doubleValue() > 1D) {
                                 ltResult.setRuleBaseInputValue(random_int(null,
@@ -308,7 +311,7 @@ public class MedRuleConvertFacade {
                             && StringUtil.isBlank(record.getRuleBaseMaxOperator())) {
                         ResultRule gtResult = new ResultRule();
                         BeanUtil.copyProperties(result, gtResult);
-                        gtResult.setRuleBaseMinValue(new BigDecimal(record.getRuleBaseMinValue()));
+                        gtResult.setRuleBaseMinValue(new BigDecimal(record.getRuleBaseMinValue()).setScale(3, BigDecimal.ROUND_HALF_UP));
                         if (gtResult.getRuleBaseLibName().equals("年龄")
                                 && gtResult.getRuleBaseMinValue().doubleValue() > 1D) {
                             gtResult.setRuleBaseInputValue(random_int(record.getRuleBaseMinValue().intValue(),
@@ -331,7 +334,7 @@ public class MedRuleConvertFacade {
                         ResultRule ltResult = new ResultRule();
                         BeanUtil.copyProperties(result, ltResult);
                         //inputValue>minValue
-                        ltResult.setRuleBaseMaxValue(new BigDecimal(record.getRuleBaseMaxValue()));
+                        ltResult.setRuleBaseMaxValue(new BigDecimal(record.getRuleBaseMaxValue()).setScale(3, BigDecimal.ROUND_HALF_UP));
                         if (ltResult.getRuleBaseLibName().equals("年龄")
                                 && ltResult.getRuleBaseMaxValue().doubleValue() > 1D) {
                             ltResult.setRuleBaseInputValue(random_int(null,
@@ -388,9 +391,10 @@ public class MedRuleConvertFacade {
             for (ResultRule result : entry.getValue()) {
                 List<ResultRule> tempList = Lists.newLinkedList();
                 if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
-                    if (result.getRuleBaseLibType().equals(LexiconEnum.MedChemClass.getKey())
+                    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.MedYaoLiClass.getKey()))) {
                         List<String> medicines = medClassMedMap.get(result.getRuleBaseLibName());
                         if (ListUtil.isNotEmpty(medicines)) {
                             for (String med : medicines) {
@@ -671,7 +675,7 @@ public class MedRuleConvertFacade {
         return retList;
     }
 
-    public List<ResultRule> addRuleOrderNo(Map<Integer, List<ResultRule>> map, Integer index, List<ResultRule> tempList,  List<ResultRule> retList) {
+    public List<ResultRule> addRuleOrderNo(Map<Integer, List<ResultRule>> map, Integer index, List<ResultRule> tempList, List<ResultRule> retList) {
         if (index < map.size()) {
             List<ResultRule> list = map.get(index++);
             for (ResultRule subResult : list) {