ソースを参照

自动化测试

zhaops 4 年 前
コミット
36c022a628

+ 19 - 0
cdssman-service/src/main/java/com/diagbot/dto/MedClassMedDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/3/3 15:39
+ */
+@Getter
+@Setter
+public class MedClassMedDTO {
+    private String medClassLibName;
+    private Integer medClassLibType;
+    private Long relationId;
+    private String medLibName;
+    private Integer medLibType;
+}

+ 5 - 3
cdssman-service/src/main/java/com/diagbot/dto/RuleDTO.java

@@ -12,6 +12,7 @@ import lombok.Setter;
 @Setter
 public class RuleDTO {
     private Integer ruleLibType;
+    private String ruleLibTypeName;
     private String ruleLibName;
     private Long ruleId;
     private Long ruleConceptId;
@@ -24,14 +25,15 @@ public class RuleDTO {
     private String ruleBaseEqOperator;
     private String ruleBaseEqUnit;
     private Double ruleBaseEqValue;
-    private String ruleMaxOperator;
+    private String ruleBaseMaxOperator;
     private String ruleBaseMaxUnit;
     private Double ruleBaseMaxValue;
-    private String ruleMinOperator;
+    private String ruleBaseMinOperator;
     private String ruleBaseMinUnit;
     private Double ruleBaseMinValue;
     private Integer ruleBaseType;
     private Long ruleBaseConceptId;
     private String ruleBaseLibName;
     private Integer ruleBaseLibType;
-}
+    private String ruleBaseLibTypeName;
+}

+ 27 - 1
cdssman-service/src/main/java/com/diagbot/entity/ResultBill.java

@@ -62,6 +62,10 @@ public class ResultBill implements Serializable {
      */
     private Integer billType;
 
+    /**
+     * 开单项类型(编码)
+     */
+    private Integer billItemTypeCode;
     /**
      * 开单项类型
      */
@@ -82,6 +86,10 @@ public class ResultBill implements Serializable {
      */
     private String billItemHisDetailName;
 
+    /**
+     * 禁忌项类型(编码)
+     */
+    private Integer conflictItemTypeCode;
     /**
      * 禁忌项类型
      */
@@ -221,6 +229,14 @@ public class ResultBill implements Serializable {
         this.billType = billType;
     }
 
+    public Integer getBillItemTypeCode() {
+        return billItemTypeCode;
+    }
+
+    public void setBillItemTypeCode(Integer billItemTypeCode) {
+        this.billItemTypeCode = billItemTypeCode;
+    }
+
     public String getBillItemType() {
         return billItemType;
     }
@@ -253,6 +269,14 @@ public class ResultBill implements Serializable {
         this.billItemHisDetailName = billItemHisDetailName;
     }
 
+    public Integer getConflictItemTypeCode() {
+        return conflictItemTypeCode;
+    }
+
+    public void setConflictItemTypeCode(Integer conflictItemTypeCode) {
+        this.conflictItemTypeCode = conflictItemTypeCode;
+    }
+
     public String getConflictItemType() {
         return conflictItemType;
     }
@@ -384,10 +408,12 @@ public class ResultBill implements Serializable {
                 ", modifier=" + modifier +
                 ", resultId=" + resultId +
                 ", billType=" + billType +
+                ", billItemTypeCode=" + billItemTypeCode +
                 ", billItemType=" + billItemType +
                 ", billItemName=" + billItemName +
                 ", billItemHisName=" + billItemHisName +
                 ", billItemHisDetailName=" + billItemHisDetailName +
+                ", conflictItemTypeCode=" + conflictItemTypeCode +
                 ", conflictItemType=" + conflictItemType +
                 ", conflictItemName=" + conflictItemName +
                 ", conflictItemHisName=" + conflictItemHisName +
@@ -405,4 +431,4 @@ public class ResultBill implements Serializable {
                 ", inputParams" + inputParams +
                 "}";
     }
-}
+}

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

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlRelationServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/3/3 15:44
+ */
+@Component
+public class KlRelationFacade extends KlRelationServiceImpl {
+}

+ 0 - 7
cdssman-service/src/main/java/com/diagbot/facade/KlRuleFacade.java

@@ -1,15 +1,8 @@
 package com.diagbot.facade;
 
-import com.diagbot.dto.RuleDTO;
-import com.diagbot.enums.LexiconEnum;
 import com.diagbot.service.impl.KlRuleServiceImpl;
-import com.diagbot.vo.RuleVO;
-import org.apache.ibatis.javassist.compiler.Lex;
 import org.springframework.stereotype.Component;
 
-import java.util.Arrays;
-import java.util.List;
-
 /**
  * @Description:
  * @Author:zhaops

+ 402 - 1
cdssman-service/src/main/java/com/diagbot/facade/MedRuleConvertFacade.java

@@ -1,13 +1,26 @@
 package com.diagbot.facade;
 
+import com.diagbot.dto.MedClassMedDTO;
 import com.diagbot.dto.RuleDTO;
+import com.diagbot.entity.ResultBill;
 import com.diagbot.enums.LexiconEnum;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.RuleVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -18,8 +31,28 @@ import java.util.List;
 public class MedRuleConvertFacade {
     @Autowired
     private KlRuleFacade klRuleFacade;
+    @Autowired
+    private KlRelationFacade klRelationFacade;
 
-    public void billCommon() {
+    @Autowired
+    private LisConfigFacade lisConfigFacade;
+    @Autowired
+    private PacsConfigFacade pacsConfigFacade;
+    @Autowired
+    private DrugConfigFacade drugConfigFacade;
+    @Autowired
+    private DiseaseConfigFacade diseaseConfigFacade;
+    @Autowired
+    private OperationConfigFacade operationConfigFacade;
+    @Autowired
+    private TransfusionConfigFacade transfusionConfigFacade;
+
+    public List<ResultBill> billCommon(Long hospitalId) {
+        List<ResultBill> retList = Lists.newLinkedList();
+        List<ResultBill> inputList = Lists.newLinkedList();
+        List<ResultBill> medicineList = Lists.newLinkedList();
+        List<ResultBill> billMappingList = Lists.newLinkedList();
+        List<ResultBill> conflictMappingList = Lists.newLinkedList();
 
         RuleVO ruleVO = new RuleVO();
         ruleVO.setRuleType(1);
@@ -30,6 +63,163 @@ public class MedRuleConvertFacade {
                 LexiconEnum.PacsSubName.getKey() }));
 
         List<RuleDTO> list = klRuleFacade.getRules(ruleVO);
+
+        if (ListUtil.isEmpty(list)) {
+
+        }
+
+        Map<String, Map<String, Map<String, List<Long>>>> lisConfigMap = lisConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> pacsConfigMap = pacsConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, Map<String, List<Long>>>> drugConfigMap = drugConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> diseaseConfigMap = diseaseConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> operationConfigMap = operationConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+
+        for (RuleDTO record : list) {
+            ResultBill resultBill = new ResultBill();
+            resultBill.setBillType(1);
+
+            resultBill.setBillItemName(record.getRuleLibName());
+            resultBill.setBillItemTypeCode(record.getRuleLibType());
+            resultBill.setBillItemType(record.getRuleLibTypeName());
+            resultBill.setBillItemHisName("");
+            resultBill.setBillItemHisDetailName("");
+
+            resultBill.setConflictItemName(record.getRuleBaseLibName());
+            resultBill.setConflictItemTypeCode(record.getRuleBaseLibType());
+            resultBill.setConflictItemType(record.getRuleBaseLibTypeName());
+            resultBill.setConflictItemHisName("");
+            resultBill.setConflictItemHisDetailName("");
+
+            resultBill.setMessage("");
+            resultBill.setConflictItemRange(0);
+
+            //比较关系
+            if (StringUtil.isNotBlank(record.getRuleBaseMinOperator())
+                    && StringUtil.isNotBlank(record.getRuleBaseMaxOperator())) {
+                //上下限比较
+                if (record.getRuleBaseMaxValue() >= record.getRuleBaseMinValue()) {
+                    ResultBill valResult = new ResultBill();
+                    BeanUtil.copyProperties(resultBill, valResult);
+                    valResult.setInputValue(random(new BigDecimal(record.getRuleBaseMinValue()),
+                            new BigDecimal(record.getRuleBaseMaxValue()),
+                            (record.getRuleBaseMaxOperator().equals("<=") ? true : false),
+                            (record.getRuleBaseMinOperator().equals(">=") ? true : false)).toString());
+                    valResult.setUnit(StringUtil.isNotBlank(record.getRuleBaseMinUnit()) ? record.getRuleBaseMinUnit()
+                            : (StringUtil.isNotBlank(record.getRuleBaseMaxUnit()) ? record.getRuleBaseMaxUnit() : ""));
+                    inputList.add(valResult);
+
+                } else {
+
+                    ResultBill minResult = new ResultBill();
+                    BeanUtil.copyProperties(resultBill, minResult);
+                    minResult.setConflictItemRange(1);
+                    minResult.setInputValue(random(null,
+                            new BigDecimal(record.getRuleBaseMinValue()),
+                            false,
+                            (record.getRuleBaseMinOperator().equals(">=") ? true : false)).toString());
+                    minResult.setUnit(StringUtil.isNotBlank(record.getRuleBaseMinUnit()) ? record.getRuleBaseMinUnit() : "");
+                    inputList.add(minResult);
+
+                    ResultBill maxResult = new ResultBill();
+                    BeanUtil.copyProperties(resultBill, maxResult);
+                    maxResult.setConflictItemRange(1);
+                    maxResult.setInputValue(random(new BigDecimal(record.getRuleBaseMaxValue()),
+                            null,
+                            (record.getRuleBaseMaxOperator().equals("<=") ? true : false),
+                            null).toString());
+                    maxResult.setUnit(StringUtil.isNotBlank(record.getRuleBaseMaxUnit()) ? record.getRuleBaseMaxUnit() : "");
+                    inputList.add(maxResult);
+                }
+
+            } else if (StringUtil.isNotBlank(record.getRuleBaseMinOperator())
+                    && StringUtil.isBlank(record.getRuleBaseMaxOperator())) {
+                ResultBill minResult = new ResultBill();
+                BeanUtil.copyProperties(resultBill, minResult);
+                minResult.setInputValue(random(null,
+                        new BigDecimal(record.getRuleBaseMinValue()),
+                        false,
+                        (record.getRuleBaseMinOperator().equals(">=") ? true : false)).toString());
+                minResult.setUnit(StringUtil.isNotBlank(record.getRuleBaseMinUnit()) ? record.getRuleBaseMinUnit() : "");
+                inputList.add(minResult);
+            } else if (StringUtil.isBlank(record.getRuleBaseMinOperator())
+                    && StringUtil.isNotBlank(record.getRuleBaseMaxOperator())) {
+                ResultBill maxResult = new ResultBill();
+                BeanUtil.copyProperties(resultBill, maxResult);
+                maxResult.setInputValue(random(new BigDecimal(record.getRuleBaseMaxValue()),
+                        null,
+                        (record.getRuleBaseMaxOperator().equals("<=") ? true : false),
+                        null).toString());
+                maxResult.setUnit(StringUtil.isNotBlank(record.getRuleBaseMaxUnit()) ? record.getRuleBaseMaxUnit() : "");
+                inputList.add(maxResult);
+            } else if (StringUtil.isNotBlank(record.getRuleBaseEqOperator())) {
+                resultBill.setInputValue(new BigDecimal(record.getRuleBaseEqValue()).toString());
+                resultBill.setUnit(StringUtil.isNotBlank(record.getRuleBaseEqUnit()) ? record.getRuleBaseEqUnit() : "");
+                inputList.add(resultBill);
+            } else {
+                inputList.add(resultBill);
+            }
+        }
+
+        //药品分类扩展
+        List<MedClassMedDTO> medClassMedList = klRelationFacade.getMedClassMedList();
+        Map<String, List<String>> medClassMedMap =
+                medClassMedList.stream().collect(Collectors.groupingBy(MedClassMedDTO::getMedClassLibName,
+                        HashMap::new,
+                        Collectors.mapping(MedClassMedDTO::getMedLibName, Collectors.toList())));
+        for (ResultBill result : inputList) {
+            if (result.getConflictItemTypeCode().equals(LexiconEnum.MedChemClass.getKey())
+                    || result.getConflictItemTypeCode().equals(LexiconEnum.MedZhiLiaoClass.getKey())
+                    || result.getConflictItemTypeCode().equals(LexiconEnum.MedYaoLiClass.getKey())) {
+                List<String> medicines = medClassMedMap.get(result.getConflictItemName());
+                if (ListUtil.isNotEmpty(medicines)) {
+                    for (String med : medicines) {
+                        ResultBill medResult = new ResultBill();
+                        BeanUtil.copyProperties(result, medResult);
+                        medResult.setReferenceValue("药品类别_" + result.getConflictItemTypeCode() + "_" + result.getConflictItemType() + "_" + result.getConflictItemName());
+                        medResult.setConflictItemName(med);
+                        medResult.setConflictItemTypeCode(LexiconEnum.Medicine.getKey());
+                        medResult.setConflictItemType(LexiconEnum.Medicine.getName());
+                        medicineList.add(medResult);
+                    }
+                } else {
+                    result.setSuccess(0);
+                    result.setMessage(result.getMessage() + result.getConflictItemName() + "(" + result.getConflictItemType() + ")缺少相关药品通用名称;");
+                    medicineList.add(result);
+                }
+            } else {
+                medicineList.add(result);
+            }
+        }
+
+        //术语映射-开单项映射
+        for (ResultBill result : medicineList) {
+            if (result.getBillItemTypeCode().equals(LexiconEnum.Medicine.getKey())) {
+                billMappingList.addAll(getMappingResult_medicine(result, drugConfigMap, 1));
+            } else if (result.getBillItemTypeCode().equals(LexiconEnum.Operation.getKey())) {
+                billMappingList.addAll(getMappingResult(result, operationConfigMap, 1));
+            } else if (result.getBillItemTypeCode().equals(LexiconEnum.LisName.getKey())) {
+                billMappingList.addAll(getMappingResult_lis(result, lisConfigMap, 1));
+            } else if (result.getBillItemTypeCode().equals(LexiconEnum.PacsName.getKey())) {
+                billMappingList.addAll(getMappingResult(result, pacsConfigMap, 1));
+            } else if (result.getBillItemTypeCode().equals(LexiconEnum.PacsSubName.getKey())) {
+                billMappingList.addAll(getMappingResult(result, pacsConfigMap, 1));
+            }
+        }
+
+        //术语映射-禁忌项映射
+        for (ResultBill result : billMappingList) {
+            if (result.getConflictItemTypeCode().equals(LexiconEnum.Disease.getKey())) {
+                conflictMappingList.addAll(getMappingResult(result, diseaseConfigMap, 2));
+            } else if (result.getConflictItemTypeCode().equals(LexiconEnum.Medicine.getKey())) {
+                conflictMappingList.addAll(getMappingResult_medicine(result, drugConfigMap, 2));
+            } else if (result.getConflictItemTypeCode().equals(LexiconEnum.LisName.getKey())) {
+                conflictMappingList.addAll(getMappingResult_lis(result, lisConfigMap, 2));
+            } else if (result.getConflictItemTypeCode().equals(LexiconEnum.PacsName.getKey())) {
+                conflictMappingList.addAll(getMappingResult(result, pacsConfigMap, 2));
+            }
+        }
+
+        return retList;
     }
 
     public void billTransfusion() {
@@ -39,4 +229,215 @@ public class MedRuleConvertFacade {
 
         List<RuleDTO> list = klRuleFacade.getRules(ruleVO);
     }
+
+    /**
+     *
+     * @param result
+     * @param configMap
+     * @param type
+     * @return
+     */
+    public List<ResultBill> getMappingResult(ResultBill result,Map<String,Map<String,List<Long>>> configMap,Integer type) {
+        List<ResultBill> retList = Lists.newLinkedList();
+        if (configMap == null || configMap.size() == 0) {
+            result.setSuccess(0);
+            if (type.equals(1)) {
+                result.setMessage(result.getMessage() + "请维护术语(" + result.getBillItemType() + ")映射;");
+            } else if (type.equals(2)) {
+                result.setMessage(result.getMessage() + "请维护术语(" + result.getConflictItemType() + ")映射;");
+            }
+            retList.add(result);
+            return retList;
+        }
+        String keyName = "";
+        if (type.equals(1)) {
+            keyName = result.getBillItemName();
+        } else if (type.equals(2)) {
+            keyName = result.getConflictItemName();
+        }
+
+        List<String> hisNames = configMap.containsKey(keyName)
+                ? new ArrayList<>(configMap.get(keyName).keySet())
+                : new ArrayList<>();
+        if (ListUtil.isNotEmpty(hisNames)) {
+            for (String hisName : hisNames) {
+                ResultBill bmResult = new ResultBill();
+                BeanUtil.copyProperties(result, bmResult);
+                if (type.equals(1)) {
+                    bmResult.setBillItemHisName(hisName);
+                } else if (type.equals(2)) {
+                    bmResult.setConflictItemHisName(hisName);
+                }
+                retList.add(bmResult);
+            }
+        } else {
+            result.setSuccess(0);
+            if (type.equals(1)) {
+                result.setMessage(result.getMessage() + result.getBillItemName() + "(" + result.getBillItemType() + ")缺少医院端映射;");
+            } else if (type.equals(2)) {
+                result.setMessage(result.getMessage() + result.getConflictItemName() + "(" + result.getConflictItemType() + ")缺少医院端映射;");
+            }
+            retList.add(result);
+        }
+        return retList;
+    }
+
+    /**
+     *
+     * @param result
+     * @param configMap
+     * @param type
+     * @return
+     */
+    public List<ResultBill> getMappingResult_medicine(ResultBill result,Map<String,Map<String,Map<String,List<Long>>>> configMap,Integer type) {
+        List<ResultBill> retList = Lists.newLinkedList();
+        if (configMap == null || configMap.size() == 0) {
+            result.setSuccess(0);
+            if (type.equals(1)) {
+                result.setMessage(result.getMessage() + "请维护术语(" + result.getBillItemType() + ")映射;");
+            } else if (type.equals(2)) {
+                result.setMessage(result.getMessage() + "请维护术语(" + result.getConflictItemType() + ")映射;");
+            }
+            retList.add(result);
+            return retList;
+        }
+        String keyName = "";
+        if (type.equals(1)) {
+            keyName = result.getBillItemName();
+        } else if (type.equals(2)) {
+            keyName = result.getConflictItemName();
+        }
+
+        List<String> hisNames = configMap.containsKey(keyName)
+                ? configMap.get(keyName).values().stream().map(i -> i.keySet()).flatMap(Collection::stream).distinct().collect(Collectors.toList())
+                : new ArrayList<>();
+        if (ListUtil.isNotEmpty(hisNames)) {
+            for (String hisName : hisNames) {
+                ResultBill bmResult = new ResultBill();
+                BeanUtil.copyProperties(result, bmResult);
+                if (type.equals(1)) {
+                    bmResult.setBillItemHisName(hisName);
+                } else if (type.equals(2)) {
+                    bmResult.setConflictItemHisName(hisName);
+                }
+                retList.add(bmResult);
+            }
+        } else {
+            result.setSuccess(0);
+            if (type.equals(1)) {
+                result.setMessage(result.getMessage() + result.getBillItemName() + "(" + result.getBillItemType() + ")缺少医院端映射;");
+            } else if (type.equals(2)) {
+                result.setMessage(result.getMessage() + result.getConflictItemName() + "(" + result.getConflictItemType() + ")缺少医院端映射;");
+            }
+            retList.add(result);
+        }
+        return retList;
+    }
+
+    /**
+     *
+     * @param result
+     * @param configMap
+     * @param type
+     * @return
+     */
+    public List<ResultBill> getMappingResult_lis(ResultBill result,Map<String,Map<String,Map<String,List<Long>>>> configMap,Integer type) {
+        List<ResultBill> retList = Lists.newLinkedList();
+        if (configMap == null || configMap.size() == 0) {
+            result.setSuccess(0);
+            if (type.equals(1)) {
+                result.setMessage(result.getMessage() + "请维护术语(" + result.getBillItemType() + ")映射;");
+            } else if (type.equals(2)) {
+                result.setMessage(result.getMessage() + "请维护术语(" + result.getConflictItemType() + ")映射;");
+            }
+            retList.add(result);
+            return retList;
+        }
+        String keyName = "";
+        if (type.equals(1)) {
+            keyName = result.getBillItemName();
+        } else if (type.equals(2)) {
+            keyName = result.getConflictItemName();
+        }
+
+        Map<String, Map<String, List<Long>>> subConfigMap = configMap.get(keyName);
+        if (subConfigMap == null || subConfigMap.size() == 0) {
+            result.setSuccess(0);
+            if (type.equals(1)) {
+                result.setMessage(result.getMessage() + result.getBillItemName() + "(" + result.getBillItemType() + ")缺少医院端映射;");
+            } else if (type.equals(2)) {
+                result.setMessage(result.getMessage() + result.getConflictItemName() + "(" + result.getConflictItemType() + ")缺少医院端映射;");
+            }
+            retList.add(result);
+            return retList;
+        }
+
+        for (Map.Entry<String, Map<String, List<Long>>> subEntry : subConfigMap.entrySet()) {
+            subEntry.getValue().keySet().forEach(detailName -> {
+                ResultBill bmResult = new ResultBill();
+                BeanUtil.copyProperties(result, bmResult);
+                if (type.equals(1)) {
+                    bmResult.setBillItemHisName(subEntry.getKey());
+                    bmResult.setConflictItemHisDetailName(detailName);
+                } else if (type.equals(2)) {
+                    bmResult.setConflictItemHisName(subEntry.getKey());
+                    bmResult.setConflictItemHisDetailName(detailName);
+                }
+                retList.add(bmResult);
+            });
+        }
+
+        return retList;
+    }
+
+
+    /**
+     * 生成随机数
+     *
+     * @param min
+     * @param max
+     * @return
+     */
+    public BigDecimal random(BigDecimal min, BigDecimal max, Boolean minBoundary, Boolean maxBoundary) {
+        if (min == null) {
+            min = BigDecimal.ZERO;
+        }
+        if (max == null) {
+            max = min.add(BigDecimal.TEN);
+        }
+        BigDecimal randomVal = new BigDecimal(Math.random() * (max.doubleValue() - min.doubleValue()) + min.doubleValue());
+        BigDecimal random_dec = randomVal.setScale(2, BigDecimal.ROUND_HALF_UP);
+        //是否包含边界值
+        if (!minBoundary || maxBoundary) {
+            random_dec.add(new BigDecimal(0.01d));
+        }
+        return random_dec;
+    }
+
+    /**
+     * 生成随机-整数
+     *
+     * @param min
+     * @param max
+     * @param minBoundary
+     * @param maxBoundary
+     * @return
+     */
+    public Integer random_int(Integer min, Integer max, Boolean minBoundary, Boolean maxBoundary) {
+        if (min == null) {
+            min = 0;
+        }
+        if (max == null) {
+            max = min + 10;
+        }
+
+        Random random = new Random();
+        Integer random_int = random.nextInt(max - min) + min;
+
+        //是否包含边界值
+        if (!minBoundary || maxBoundary) {
+            random_int++;
+        }
+        return random_int;
+    }
 }

+ 5 - 2
cdssman-service/src/main/java/com/diagbot/mapper/KlRelationMapper.java

@@ -1,7 +1,10 @@
 package com.diagbot.mapper;
 
-import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.MedClassMedDTO;
+import com.diagbot.entity.KlRelation;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2021-03-01
  */
 public interface KlRelationMapper extends BaseMapper<KlRelation> {
-
+    List<MedClassMedDTO> getMedClassMedList();
 }

+ 4 - 1
cdssman-service/src/main/java/com/diagbot/service/KlRelationService.java

@@ -1,8 +1,11 @@
 package com.diagbot.service;
 
+import com.diagbot.dto.MedClassMedDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 术语关系表 服务类
@@ -12,5 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2021-03-01
  */
 public interface KlRelationService extends IService<KlRelation> {
-
+    List<MedClassMedDTO> getMedClassMedList();
 }

+ 7 - 2
cdssman-service/src/main/java/com/diagbot/service/impl/KlRelationServiceImpl.java

@@ -1,12 +1,15 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.MedClassMedDTO;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.mapper.KlRelationMapper;
 import com.diagbot.service.KlRelationService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 术语关系表 服务实现类
@@ -18,5 +21,7 @@ import org.springframework.stereotype.Service;
 @Service
 @DS("med")
 public class KlRelationServiceImpl extends ServiceImpl<KlRelationMapper, KlRelation> implements KlRelationService {
-
+    public List<MedClassMedDTO> getMedClassMedList() {
+        return baseMapper.getMedClassMedList();
+    }
 }

+ 24 - 0
cdssman-service/src/main/resources/mapper/KlRelationMapper.xml

@@ -16,4 +16,28 @@
         <result column="status" property="status" />
     </resultMap>
 
+    <select id="getMedClassMedList" resultType="com.diagbot.dto.MedClassMedDTO">
+        SELECT
+        a.lib_name AS medClassLibName,
+        a.lib_type AS medClassLibType,
+        b.relation_id AS relationId,
+        c.lib_name AS medLibName,
+        c.lib_type AS medLibType
+        FROM
+        kl_concept a,
+        kl_relation b,
+        kl_concept c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.id = b.start_id
+        AND c.id = b.end_id
+        AND a.lib_type IN ( 301, 302, 303, 304 )
+        AND c.lib_type = 101
+        AND b.relation_id = 600
+        AND a.`status` = 1
+        AND b.`status` = 1
+        AND c.`status` = 1
+    </select>
 </mapper>

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

@@ -21,6 +21,7 @@
     <select id="getRules" resultType="com.diagbot.dto.RuleDTO">
         SELECT
         t1.lib_type AS ruleLibType,
+        t1.lib_type_name AS ruleLibTypeName,
         t1.lib_name AS ruleLibName,
         t1.rule_id AS ruleId,
         t1.concept_id AS ruleConceptId,
@@ -33,20 +34,22 @@
         t3.eq_operator AS ruleBaseEqOperator,
         t3.eq_unit AS ruleBaseEqUnit,
         t3.eq_value AS ruleBaseEqValue,
-        t3.max_operator AS ruleMaxOperator,
+        t3.max_operator AS ruleBaseMaxOperator,
         t3.max_unit AS ruleBaseMaxUnit,
         t3.max_value AS ruleBaseMaxValue,
-        t3.min_operator AS ruleMinOperator,
+        t3.min_operator AS ruleBaseMinOperator,
         t3.min_unit AS ruleBaseMinUnit,
         t3.min_value AS ruleBaseMinValue,
         t3.type AS ruleBaseType,
         t3.concept_id AS ruleBaseConceptId,
         t4.lib_name AS ruleBaseLibName,
-        t4.lib_type AS ruleBaseLibType
+        t4.lib_type AS ruleBaseLibType,
+        t5.`name` AS ruleBaseLibTypeName
         FROM
         (
         SELECT
         a.lib_type,
+        c.`name` AS lib_type_name,
         a.lib_name,
         b.id AS rule_id,
         b.concept_id,
@@ -56,11 +59,14 @@
         b.`status`
         FROM
         kl_concept a,
-        kl_rule b
+        kl_rule b,
+        kl_lexicon c
         WHERE
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
         AND a.id = b.concept_id
+        AND a.lib_type = c.code
         <if test="libTypes != null and libTypes.size > 0">
             <foreach item="libType" collection="libTypes" open="and(" separator="or" close=")" >
                 a.lib_type = #{typeId}
@@ -80,5 +86,7 @@
         LEFT JOIN kl_concept t4 ON t3.concept_id = t4.id
         AND t4.is_deleted = 'N'
         AND t4.`status` = 1
+        LEFT JOIN kl_lexicon t5 ON t4.lib_type = t5.code
+        AND t5.is_deleted = 'N'
     </select>
 </mapper>