Browse Source

自动化测试

zhaops 4 years ago
parent
commit
1d94e219e4

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/client/CdssClient.java

@@ -70,7 +70,7 @@ public interface CdssClient {
      */
     @PostMapping("/tran/mappingConfig/importExcel")
     @Transactional
-    void importExcel(@RequestParam("file") MultipartFile file,
+    void importExcel(@RequestPart("file") MultipartFile file,
                      @RequestParam("hospitalId") Long hospitalId,
                      @RequestParam("type") Integer type,
                      @RequestParam("uesrId") String userId);

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/facade/MappingConfigFacade.java

@@ -25,6 +25,8 @@ import com.diagbot.entity.wrapper.MappingConfigWrapper;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.MatchSourceEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.MappingConfigServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ExcelUtils;
@@ -197,6 +199,8 @@ public class MappingConfigFacade extends MappingConfigServiceImpl {
         RespDTO<List<MappingConfigWrapper>> respDTO = cdssClient.exportExcel_remote(mappingConfigPageVO);
         if (RespDTOUtil.respIsOK(respDTO)) {
             exportExcel(response, respDTO.data, mappingConfigPageVO.getType(), "映射");
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
         }
     }
 
@@ -213,6 +217,8 @@ public class MappingConfigFacade extends MappingConfigServiceImpl {
         RespDTO<List<MappingConfigWrapper>> respDTO = cdssClient.precDataMatch_remote(file, type);
         if (RespDTOUtil.respIsOK(respDTO)) {
             exportExcel(response, respDTO.data, type, "关联数据(预匹配)");
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
         }
     }
 
@@ -570,4 +576,24 @@ public class MappingConfigFacade extends MappingConfigServiceImpl {
         }
         return list;
     }
+
+    /**
+     * 查找指定医院映射关系
+     *
+     * @param hospitalId
+     * @return
+     */
+    public List<MappingConfigWrapper> getListByHospitalIdAndType(Long hospitalId, Integer type) {
+        QueryWrapper<MappingConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("type", type);
+        List<MappingConfig> list = this.list(queryWrapper);
+        if (ListUtil.isEmpty(list)) {
+            return null;
+        }
+        List<MappingConfigWrapper> retList = BeanUtil.listCopyTo(list, MappingConfigWrapper.class);
+        addNames(retList);
+        return retList;
+    }
 }

+ 25 - 26
cdssman-service/src/main/java/com/diagbot/facade/MedRuleConvertFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlRuleBase;
 import com.diagbot.entity.ResultRule;
 import com.diagbot.enums.ConEnum;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.RuleBaseTypeEnum;
@@ -56,17 +57,7 @@ public class MedRuleConvertFacade {
     private KlRuleBaseFacade klRuleBaseFacade;
 
     @Autowired
-    private LisConfigFacade lisConfigFacade;
-    @Autowired
-    private PacsConfigFacade pacsConfigFacade;
-    @Autowired
-    private DrugConfigFacade drugConfigFacade;
-    @Autowired
-    private DiseaseConfigFacade diseaseConfigFacade;
-    @Autowired
-    private OperationConfigFacade operationConfigFacade;
-    @Autowired
-    private TransfusionConfigFacade transfusionConfigFacade;
+    private MappingConfigFacade mappingConfigFacade;
 
     /**
      * 开单规则处理
@@ -133,12 +124,18 @@ public class MedRuleConvertFacade {
             return retList;
         }
 
-        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.getUniqueFormConfigMap(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);
-        Map<String, Map<String, List<Long>>> transfusionConfigMap = transfusionConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, Map<String, List<String>>>> lisConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.LisPack.getKey(), hospitalId);
+        Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.Pacs.getKey(), hospitalId);
+        Map<String, Map<String, Map<String, List<String>>>> drugConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.Drug.getKey(), hospitalId);
+        Map<String, Map<String, Map<String, List<String>>>> diseaseConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.Disease.getKey(), hospitalId);
+        Map<String, Map<String, Map<String, List<String>>>> operationConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.Operation.getKey(), hospitalId);
+        Map<String, Map<String, Map<String, List<String>>>> transfusionConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.Transfusion.getKey(), hospitalId);
 
         //高危手术结果去重
         if (caseId.equals(6L)) {
@@ -925,7 +922,9 @@ public class MedRuleConvertFacade {
      * @param type
      * @return
      */
-    public List<ResultRule> getMappingResult(ResultRule result, Map<String, Map<String, List<Long>>> configMap, Integer type) {
+    public List<ResultRule> getMappingResult(ResultRule result,
+                                             Map<String, Map<String, Map<String, List<String>>>> configMap,
+                                             Integer type) {
         List<ResultRule> retList = Lists.newLinkedList();
         if (configMap == null || configMap.size() == 0) {
             result.setSuccess(0);
@@ -945,7 +944,7 @@ public class MedRuleConvertFacade {
         }
 
         List<String> hisNames = configMap.containsKey(keyName)
-                ? new ArrayList<>(configMap.get(keyName).keySet())
+                ? configMap.get(keyName).get("").keySet().stream().collect(Collectors.toList())
                 : new ArrayList<>();
         if (ListUtil.isNotEmpty(hisNames)) {
             for (String hisName : hisNames) {
@@ -977,7 +976,7 @@ public class MedRuleConvertFacade {
      * @return
      */
     public List<ResultRule> getMappingResult_medicine(ResultRule result,
-                                                      Map<String, Map<String, Map<String, List<Long>>>> configMap,
+                                                      Map<String, Map<String, Map<String, List<String>>>> configMap,
                                                       Integer type, Integer ruleType) {
         List<ResultRule> retList = Lists.newLinkedList();
         if (configMap == null || configMap.size() == 0) {
@@ -998,7 +997,7 @@ public class MedRuleConvertFacade {
         }
 
         if (ruleType.equals(RuleTypeEnum.HighRisk.getKey())) {
-            Map<String, Map<String, List<Long>>> formMap = configMap.containsKey(keyName)
+            Map<String, Map<String, List<String>>> formMap = configMap.containsKey(keyName)
                     ? configMap.get(keyName)
                     : new HashMap<>();
             if (formMap.size() > 0) {
@@ -1072,7 +1071,7 @@ public class MedRuleConvertFacade {
      * @param type
      * @return
      */
-    public List<ResultRule> getMappingResult_lis(ResultRule result, Map<String, Map<String, Map<String, List<Long>>>> configMap, Integer type) {
+    public List<ResultRule> getMappingResult_lis(ResultRule result, Map<String, Map<String, Map<String, List<String>>>> configMap, Integer type) {
         List<ResultRule> retList = Lists.newLinkedList();
         if (configMap == null || configMap.size() == 0) {
             result.setSuccess(0);
@@ -1091,7 +1090,7 @@ public class MedRuleConvertFacade {
             keyName = result.getRuleBaseLibName();
         }
 
-        Map<String, Map<String, List<Long>>> subConfigMap = configMap.get(keyName);
+        Map<String, List<String>> subConfigMap = configMap.get(keyName).get("");
         if (subConfigMap == null || subConfigMap.size() == 0) {
             result.setSuccess(0);
             if (type.equals(1)) {
@@ -1103,8 +1102,8 @@ public class MedRuleConvertFacade {
             return retList;
         }
 
-        for (Map.Entry<String, Map<String, List<Long>>> subEntry : subConfigMap.entrySet()) {
-            subEntry.getValue().keySet().forEach(detailName -> {
+        for (Map.Entry<String, List<String>> subEntry : subConfigMap.entrySet()) {
+            subEntry.getValue().forEach(detailName -> {
                 ResultRule bmResult = new ResultRule();
                 BeanUtil.copyProperties(result, bmResult);
                 if (type.equals(1)) {
@@ -1863,7 +1862,7 @@ public class MedRuleConvertFacade {
      * @param max
      * @return
      */
-    public BigDecimal random(BigDecimal min, BigDecimal max, Boolean minBoundary, Boolean maxBoundary,Integer accuracy) {
+    public BigDecimal random(BigDecimal min, BigDecimal max, Boolean minBoundary, Boolean maxBoundary, Integer accuracy) {
         if (min == null) {
             min = BigDecimal.ZERO;
         }

+ 17 - 20
cdssman-service/src/main/java/com/diagbot/facade/ResultStaticKnowledgeFacade.java

@@ -73,16 +73,6 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
     @Autowired
     private MappingConfigFacade mappingConfigFacade;
     @Autowired
-    private LisConfigFacade lisConfigFacade;
-    @Autowired
-    private PacsConfigFacade pacsConfigFacade;
-    @Autowired
-    private DrugConfigFacade drugConfigFacade;
-    @Autowired
-    private DiseaseConfigFacade diseaseConfigFacade;
-    @Autowired
-    private OperationConfigFacade operationConfigFacade;
-    @Autowired
     private RunningInfoFacade runningInfoFacade;
 
     @Autowired
@@ -152,7 +142,8 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
         }
 
         // 已存在数据
-        Map<String, Map<String, Map<String, List<Long>>>> hisConfigMap = lisConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
+                = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.LisPack.getKey(), Long.valueOf(hospitalId));
 
         //术语映射
         for (LisConfig config : lisConfigList) {
@@ -170,7 +161,7 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
             result.setHisDetailName(config.getHisDetailName());
             if (hisConfigMap.containsKey(result.getHisName())
                     && hisConfigMap.get(result.getHisName()).containsKey(result.getHisDetailName())) {
-                Map<String, List<Long>> subMap = hisConfigMap.get(result.getHisName()).get(result.getHisDetailName());
+                Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get(result.getHisDetailName());
                 if (subMap != null && subMap.size() > 0) {
                     for (String subKey : subMap.keySet()) {
                         ResultStaticKnowledge subResult = new ResultStaticKnowledge();
@@ -352,7 +343,8 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
 
 
         // 已存在数据
-        Map<String, Map<String, List<Long>>> hisConfigMap = pacsConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
+                = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Pacs.getKey(), Long.valueOf(hospitalId));
         //术语映射
         for (PacsConfig config : pacsConfigList) {
             ResultStaticKnowledge result = new ResultStaticKnowledge();
@@ -368,7 +360,7 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
             result.setHisName(config.getHisName());
 
             if (hisConfigMap.containsKey(result.getHisName())) {
-                Map<String, List<Long>> subMap = hisConfigMap.get(result.getHisName());
+                Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get("");
                 if (subMap != null && subMap.size() > 0) {
                     for (String subKey : subMap.keySet()) {
                         ResultStaticKnowledge subResult = new ResultStaticKnowledge();
@@ -542,7 +534,8 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
 
 
         // 已存在数据
-        Map<String, Map<String, Long>> hisConfigMap = drugConfigFacade.getConfigMapWithoutForm(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
+                = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Drug.getKey(), Long.valueOf(hospitalId));
 
         //术语映射
         for (DrugConfig config : drugConfigList) {
@@ -559,7 +552,7 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
             result.setHisName(config.getHisName());
 
             if (hisConfigMap.containsKey(result.getHisName())) {
-                Map<String, Long> subMap = hisConfigMap.get(result.getHisName());
+                Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get("");
                 if (subMap != null && subMap.size() > 0) {
                     for (String subKey : subMap.keySet()) {
                         ResultStaticKnowledge subResult = new ResultStaticKnowledge();
@@ -698,7 +691,9 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
 
 
         // 已存在数据
-        Map<String, Map<String, List<Long>>> hisConfigMap = diseaseConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
+                = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Disease.getKey(), Long.valueOf(hospitalId));
+        //Map<String, Map<String, List<Long>>> hisConfigMap = diseaseConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
 
         //术语映射
         for (DiseaseConfig config : diseaseConfigList) {
@@ -715,7 +710,7 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
             result.setHisName(config.getHisName());
 
             if (hisConfigMap.containsKey(result.getHisName())) {
-                Map<String, List<Long>> subMap = hisConfigMap.get(result.getHisName());
+                Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get("");
                 if (subMap != null && subMap.size() > 0) {
                     for (String subKey : subMap.keySet()) {
                         ResultStaticKnowledge subResult = new ResultStaticKnowledge();
@@ -854,7 +849,9 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
 
 
         // 已存在数据
-        Map<String, Map<String, List<Long>>> hisConfigMap = operationConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<String>>>> hisConfigMap
+                = mappingConfigFacade.groupByHisNameWithName(null, ConceptTypeEnum.Operation.getKey(), Long.valueOf(hospitalId));
+        //Map<String, Map<String, List<Long>>> hisConfigMap = operationConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
 
         //术语映射
         for (OperationConfig config : operationConfigList) {
@@ -871,7 +868,7 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
             result.setHisName(config.getHisName());
 
             if (hisConfigMap.containsKey(result.getHisName())) {
-                Map<String, List<Long>> subMap = hisConfigMap.get(result.getHisName());
+                Map<String, List<String>> subMap = hisConfigMap.get(result.getHisName()).get("");
                 if (subMap != null && subMap.size() > 0) {
                     for (String subKey : subMap.keySet()) {
                         ResultStaticKnowledge subResult = new ResultStaticKnowledge();

+ 87 - 31
cdssman-service/src/main/java/com/diagbot/facade/RuleTestFacade.java

@@ -1,6 +1,9 @@
 package com.diagbot.facade;
 
 import com.diagbot.aggregate.RuleTestAggregate;
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.IndexBatchDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RuleDTO;
 import com.diagbot.entity.DiseaseConfig;
 import com.diagbot.entity.DrugConfig;
@@ -8,12 +11,18 @@ import com.diagbot.entity.LisConfig;
 import com.diagbot.entity.OperationConfig;
 import com.diagbot.entity.PacsConfig;
 import com.diagbot.entity.TransfusionConfig;
+import com.diagbot.entity.wrapper.MappingConfigWrapper;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.RuleTestVO;
 import com.diagbot.vo.RuleVO;
+import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -31,23 +40,15 @@ import java.util.stream.Collectors;
  */
 @Component
 public class RuleTestFacade {
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
     @Autowired
     private RuleTestAggregate ruleTestAggregate;
     @Autowired
     private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
 
     @Autowired
-    private LisConfigFacade lisConfigFacade;
-    @Autowired
-    private PacsConfigFacade pacsConfigFacade;
-    @Autowired
-    private DrugConfigFacade drugConfigFacade;
-    @Autowired
-    private DiseaseConfigFacade diseaseConfigFacade;
-    @Autowired
-    private OperationConfigFacade operationConfigFacade;
-    @Autowired
-    private TransfusionConfigFacade transfusionConfigFacade;
+    private MappingConfigFacade mappingConfigFacade;
 
     @Autowired
     private KlRuleFacade klRuleFacade;
@@ -242,33 +243,88 @@ public class RuleTestFacade {
 
         List<RuleDTO> list = klRuleFacade.getRules(new RuleVO());
 
-        List<LisConfig> lisConfigList = lisConfigFacade.getListByHospitalId(hospitalId);
-        List<PacsConfig> pacsConfigList = pacsConfigFacade.getListByHospitalId(hospitalId);
-        List<DrugConfig> drugConfigList = drugConfigFacade.getListByHospitalId(hospitalId);
-        List<DiseaseConfig> diseaseConfigList = diseaseConfigFacade.getListByHospitalId(hospitalId);
-        List<OperationConfig> operationConfigList = operationConfigFacade.getListByHospitalId(hospitalId);
-        List<TransfusionConfig> transfusionConfigList = transfusionConfigFacade.getListByHospitalId(hospitalId);
+        List<MappingConfigWrapper> lisConfigList = mappingConfigFacade.getListByHospitalIdAndType(hospitalId, ConceptTypeEnum.LisPack.getKey());
+        List<MappingConfigWrapper> pacsConfigList = mappingConfigFacade.getListByHospitalIdAndType(hospitalId, ConceptTypeEnum.Pacs.getKey());
+        List<MappingConfigWrapper> drugConfigList = mappingConfigFacade.getListByHospitalIdAndType(hospitalId, ConceptTypeEnum.Drug.getKey());
+        List<MappingConfigWrapper> diseaseConfigList = mappingConfigFacade.getListByHospitalIdAndType(hospitalId, ConceptTypeEnum.Disease.getKey());
+        List<MappingConfigWrapper> operationConfigList = mappingConfigFacade.getListByHospitalIdAndType(hospitalId, ConceptTypeEnum.Operation.getKey());
+        List<MappingConfigWrapper> transfusionConfigList = mappingConfigFacade.getListByHospitalIdAndType(hospitalId, ConceptTypeEnum.Transfusion.getKey());
+
 
         //诊断映射关系
-        Map<String, Map<String, List<Long>>> diseaseConfigMap = diseaseConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, Map<String, List<String>>>> diseaseConfigMap
+                = mappingConfigFacade.groupByUniqueNameWithName(null, ConceptTypeEnum.Disease.getKey(), hospitalId);
+        //Map<String, Map<String, List<Long>>> diseaseConfigMap = diseaseConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+
+        Map<String, List<Long>> usedMap = unUsedMappingFacade.usedConceptIds(list);
+
+        List<Long> lisIds = usedMap.get("lis");
+        List<Long> pacsIds = usedMap.get("pacs");
+        List<Long> diseaseIds = usedMap.get("disease");
+        List<Long> drugIds = usedMap.get("drug");
+        List<Long> operationIds = usedMap.get("operation");
+        List<Long> transfusionIds = usedMap.get("transfusion");
 
-        Map<String, List<String>> usedMap = unUsedMappingFacade.usedNames(list);
+        List<String> lisNames = Lists.newLinkedList();
+        List<String> pacsNames = Lists.newLinkedList();
+        List<String> diseaseNames = Lists.newLinkedList();
+        List<String> drugNames = Lists.newLinkedList();
+        List<String> operationNames = Lists.newLinkedList();
+        List<String> transfusionNames = Lists.newLinkedList();
+
+        ConceptVO conceptVO = new ConceptVO();
+        conceptVO.setSource(-1);
+        conceptVO.setIds(lisIds);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            lisNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
+        conceptVO.setIds(pacsIds);
+        respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            pacsNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
+        conceptVO.setIds(diseaseIds);
+        respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            diseaseNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
+        conceptVO.setIds(drugIds);
+        respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            drugNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
+        conceptVO.setIds(pacsIds);
+        respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            pacsNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
+        conceptVO.setIds(operationIds);
+        respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            operationNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
+        conceptVO.setIds(transfusionIds);
+        respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        if (ListUtil.isNotEmpty(respDTO.data)) {
+            transfusionNames = respDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+        }
 
-        List<String> lisNames = usedMap.get("lis");
-        List<String> pacsNames = usedMap.get("pacs");
-        List<String> diseaseNames = usedMap.get("disease");
-        List<String> drugNames = usedMap.get("drug");
-        List<String> operationNames = usedMap.get("operation");
-        List<String> transfusionNames = usedMap.get("transfusion");
 
         diseaseNames.addAll(diseaseConfigMap.keySet().stream().filter(i -> i.contains("流产")).collect(Collectors.toList()));
 
-        List<LisConfig> unUsedLisConfigs = unUsedMappingFacade.unUsedMapping(lisConfigList, lisNames);
-        List<PacsConfig> unUsedPacsConfigs = unUsedMappingFacade.unUsedMapping(pacsConfigList, pacsNames);
-        List<DiseaseConfig> unUsedDiseaseConfigs = unUsedMappingFacade.unUsedMapping(diseaseConfigList, diseaseNames);
-        List<DrugConfig> unUsedDrugConfigs = unUsedMappingFacade.unUsedMapping(drugConfigList, drugNames);
-        List<OperationConfig> unUsedOperationConfig = unUsedMappingFacade.unUsedMapping(operationConfigList, operationNames);
-        List<TransfusionConfig> unUsedTransfusionConfigs = unUsedMappingFacade.unUsedMapping(transfusionConfigList, transfusionNames);
+        List<LisConfig> unUsedLisConfigs
+                = BeanUtil.listCopyTo(unUsedMappingFacade.unUsedMapping(lisConfigList, lisNames), LisConfig.class);
+        List<PacsConfig> unUsedPacsConfigs
+                = BeanUtil.listCopyTo(unUsedMappingFacade.unUsedMapping(pacsConfigList, pacsNames), PacsConfig.class);
+        List<DiseaseConfig> unUsedDiseaseConfigs
+                = BeanUtil.listCopyTo(unUsedMappingFacade.unUsedMapping(diseaseConfigList, diseaseNames), DiseaseConfig.class);
+        List<DrugConfig> unUsedDrugConfigs
+                = BeanUtil.listCopyTo(unUsedMappingFacade.unUsedMapping(drugConfigList, drugNames), DrugConfig.class);
+        List<OperationConfig> unUsedOperationConfig
+                = BeanUtil.listCopyTo(unUsedMappingFacade.unUsedMapping(operationConfigList, operationNames), OperationConfig.class);
+        List<TransfusionConfig> unUsedTransfusionConfigs
+                = BeanUtil.listCopyTo(unUsedMappingFacade.unUsedMapping(transfusionConfigList, transfusionNames), TransfusionConfig.class);
 
         String fileName = "规则未使用的映射关系.xls";
         Map<String, Map<Class<?>, List<?>>> map = new HashMap<>();

+ 115 - 6
cdssman-service/src/main/java/com/diagbot/facade/UnUsedMappingFacade.java

@@ -1,17 +1,12 @@
 
 package com.diagbot.facade;
 
-import com.alibaba.fastjson.JSONObject;
 import com.diagbot.dto.MedClassMedDTO;
 import com.diagbot.dto.RuleDTO;
-import com.diagbot.entity.ResultRule;
-import com.diagbot.enums.GraphLabelEnum;
 import com.diagbot.enums.LexiconEnum;
-import com.diagbot.enums.StatusEnum;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -19,7 +14,6 @@ import org.springframework.stereotype.Component;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 
@@ -59,6 +53,7 @@ public class UnUsedMappingFacade {
 
     /**
      * 规则包含术语
+     *
      * @param list
      * @return
      */
@@ -169,4 +164,118 @@ public class UnUsedMappingFacade {
         retMap.put("transfusion", transfusionNames);
         return retMap;
     }
+
+    /**
+     * 规则包含术语
+     *
+     * @param list
+     * @return
+     */
+    public Map<String, List<Long>> usedConceptIds(List<RuleDTO> list) {
+        Map<String, List<Long>> retMap = new HashMap<>();
+
+        if (ListUtil.isEmpty(list)) {
+            return retMap;
+        }
+        List<Long> lisIds = list.stream()
+                .filter(i -> i.getRuleLibType().equals(LexiconEnum.LisName.getKey()) || i.getRuleLibType().equals(LexiconEnum.LisSubName.getKey()))
+                .map(RuleDTO::getRuleConceptId)
+                .collect(Collectors.toList());
+        lisIds.addAll(list.stream()
+                .filter(i -> i.getHasSubCond() != null && i.getHasSubCond().equals(1) && (i.getRuleBaseLibType().equals(LexiconEnum.LisName.getKey()) || i.getRuleBaseLibType().equals(LexiconEnum.LisSubName.getKey())))
+                .map(RuleDTO::getRuleBaseConceptId)
+                .collect(Collectors.toList()));
+        lisIds = lisIds.stream().distinct().collect(Collectors.toList());
+
+        List<Long> pacsIds = list.stream()
+                .filter(i -> i.getRuleLibType().equals(LexiconEnum.PacsName.getKey()) || i.getRuleLibType().equals(LexiconEnum.PacsSubName.getKey()))
+                .map(RuleDTO::getRuleConceptId)
+                .collect(Collectors.toList());
+        pacsIds.addAll(list.stream()
+                .filter(i -> i.getHasSubCond() != null && i.getHasSubCond().equals(1) && (i.getRuleBaseLibType().equals(LexiconEnum.PacsName.getKey()) || i.getRuleBaseLibType().equals(LexiconEnum.PacsSubName.getKey())))
+                .map(RuleDTO::getRuleBaseConceptId)
+                .collect(Collectors.toList()));
+        pacsIds = pacsIds.stream().distinct().collect(Collectors.toList());
+
+        List<Long> diseaseIds = list.stream()
+                .filter(i -> i.getRuleLibType().equals(LexiconEnum.Disease.getKey()))
+                .map(RuleDTO::getRuleConceptId)
+                .collect(Collectors.toList());
+        diseaseIds.addAll(list.stream()
+                .filter(i -> i.getHasSubCond() != null && i.getHasSubCond().equals(1) && (i.getRuleBaseLibType().equals(LexiconEnum.Disease.getKey())))
+                .map(RuleDTO::getRuleBaseConceptId)
+                .collect(Collectors.toList()));
+        diseaseIds = diseaseIds.stream().distinct().collect(Collectors.toList());
+
+        //药品分类转换
+        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())));
+        List<RuleDTO> medList = Lists.newLinkedList();
+        for (RuleDTO result : list) {
+            if (result.getHasSubCond() != null && result.getHasSubCond().equals(1)) {
+                if (result.getRuleBaseLibType().equals(LexiconEnum.MedChemClass.getKey())
+                        || result.getRuleBaseLibType().equals(LexiconEnum.MedZhiLiaoClass.getKey())
+                        || result.getRuleBaseLibType().equals(LexiconEnum.MedYaoLiClass.getKey())) {
+                    List<String> medicines = medClassMedMap.get(result.getRuleBaseLibName());
+                    if (ListUtil.isNotEmpty(medicines)) {
+                        for (String med : medicines) {
+                            RuleDTO medResult = new RuleDTO();
+                            BeanUtil.copyProperties(result, medResult);
+                            medResult.setRuleBaseLibName(med);
+                            medResult.setRuleBaseLibType(LexiconEnum.Medicine.getKey());
+                            medResult.setRuleBaseLibTypeName(LexiconEnum.Medicine.getName());
+                            medList.add(medResult);
+                        }
+                    } else {
+                        medList.add(result);
+                    }
+                } else {
+                    medList.add(result);
+                }
+            } else {
+                medList.add(result);
+            }
+        }
+
+        List<Long> drugIds = medList.stream()
+                .filter(i -> i.getRuleLibType().equals(LexiconEnum.Medicine.getKey()))
+                .map(RuleDTO::getRuleConceptId)
+                .collect(Collectors.toList());
+        drugIds.addAll(medList.stream()
+                .filter(i -> i.getHasSubCond() != null && i.getHasSubCond().equals(1) && (i.getRuleBaseLibType().equals(LexiconEnum.Medicine.getKey())))
+                .map(RuleDTO::getRuleBaseConceptId)
+                .collect(Collectors.toList()));
+        drugIds = drugIds.stream().distinct().collect(Collectors.toList());
+
+        List<Long> operationIds = list.stream()
+                .filter(i -> i.getRuleLibType().equals(LexiconEnum.Operation.getKey()))
+                .map(RuleDTO::getRuleConceptId)
+                .collect(Collectors.toList());
+        operationIds.addAll(list.stream()
+                .filter(i -> i.getHasSubCond() != null && i.getHasSubCond().equals(1) && (i.getRuleBaseLibType().equals(LexiconEnum.Operation.getKey())))
+                .map(RuleDTO::getRuleBaseConceptId)
+                .collect(Collectors.toList()));
+        operationIds = operationIds.stream().distinct().collect(Collectors.toList());
+
+        List<Long> transfusionIds = list.stream()
+                .filter(i -> i.getRuleLibType().equals(LexiconEnum.Transfusion.getKey()))
+                .map(RuleDTO::getRuleConceptId)
+                .collect(Collectors.toList());
+        transfusionIds.addAll(list.stream()
+                .filter(i -> i.getHasSubCond() != null && i.getHasSubCond().equals(1) && (i.getRuleBaseLibType().equals(LexiconEnum.Transfusion.getKey())))
+                .map(RuleDTO::getRuleBaseConceptId)
+                .collect(Collectors.toList()));
+        transfusionIds = transfusionIds.stream().distinct().collect(Collectors.toList());
+
+        retMap.put("lis", lisIds);
+        retMap.put("pacs", pacsIds);
+        retMap.put("disease", diseaseIds);
+        retMap.put("drug", drugIds);
+        retMap.put("operation", operationIds);
+        retMap.put("transfusion", transfusionIds);
+        return retMap;
+    }
 }