Przeglądaj źródła

1、医院术语检索

zhaops 4 lat temu
rodzic
commit
128f91267f

+ 68 - 0
src/main/java/com/diagbot/facade/MappingConfigFacade.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.dto.IndexBatchDTO;
+import com.diagbot.dto.KllisDetailDTO;
+import com.diagbot.dto.LisDetailDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.AnesthesiaConfig;
 import com.diagbot.entity.DeptConfig;
@@ -39,8 +41,10 @@ import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.KllisDetailVO;
 import com.diagbot.vo.MappingConfigPageVO;
 import com.diagbot.vo.MappingConfigVO;
+import com.diagbot.vo.RetrievalVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -1359,4 +1363,68 @@ public class MappingConfigFacade extends MappingConfigServiceImpl {
         }
         return list;
     }
+
+
+    /**
+     * 医院术语检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    public List<String> getHisNames(RetrievalVO retrievalVO) {
+        List<MappingConfig> records = this.hisNameIndex(retrievalVO);
+        List<String> hisNames
+                = records.stream().map(MappingConfig::getHisName).distinct().collect(Collectors.toList());
+        return hisNames;
+    }
+
+    /**
+     * 医院术语-细项检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    public List<LisDetailDTO> getHisDetailNames(RetrievalVO retrievalVO) {
+        retrievalVO.setType(ConceptTypeEnum.LisPack.getKey());
+        List<LisDetailDTO> lisDetailNames = new ArrayList<>();
+        List<MappingConfig> records = this.hisDetailNameIndex(retrievalVO);
+        if (ListUtil.isNotEmpty(records)) {
+            List<Long> conceptIds = records.stream()
+                    .filter(i -> i.getConceptId() != null)
+                    .map(MappingConfig::getConceptId).distinct().collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setSource(-1);
+            conceptVO.setIds(conceptIds);
+            conceptVO.setType(ConceptTypeEnum.Lis.getKey());
+            RespDTO<List<IndexBatchDTO>> indexRespDTO = cdssCoreClient.getConceptNames(conceptVO);
+            if (RespDTOUtil.respIsOK(indexRespDTO)) {
+                List<String> names = indexRespDTO.data.stream().map(IndexBatchDTO::getName).distinct().collect(Collectors.toList());
+                Map<Long, List<String>> indexMap = indexRespDTO.data.stream().collect(Collectors.groupingBy(IndexBatchDTO::getId,
+                        Collectors.mapping(IndexBatchDTO::getName, Collectors.toList())));
+                KllisDetailVO kllisDetailVO = new KllisDetailVO();
+                kllisDetailVO.setNames(names);
+                RespDTO<Map<String, KllisDetailDTO>> respDTO = cdssCoreClient.getLisDetaisByNames(kllisDetailVO);
+                Map<String, KllisDetailDTO> map = new HashMap<>();
+                if (null != respDTO && null != respDTO.data) {
+                    map = respDTO.data;
+                }
+                for (MappingConfig record : records) {
+                    LisDetailDTO lisDetailDTO = new LisDetailDTO();
+                    lisDetailDTO.setName(record.getHisName());
+                    lisDetailDTO.setUniqueName(record.getHisDetailName());
+                    if (null != record.getConceptId()
+                            && indexMap.containsKey(record.getConceptId())
+                            && (null != map.get(indexMap.get(record.getConceptId()).get(0)))) {
+                        KllisDetailDTO kllisDetailDTO = map.get(indexMap.get(record.getConceptId()).get(0));
+                        lisDetailDTO.setMaxValue(kllisDetailDTO.getMaxValue());
+                        lisDetailDTO.setMinValue(kllisDetailDTO.getMinValue());
+                        lisDetailDTO.setUnits(kllisDetailDTO.getUnit());
+                        lisDetailDTO.setRange(kllisDetailDTO.getType());
+                    }
+                    lisDetailNames.add(lisDetailDTO);
+                }
+            }
+        }
+        return lisDetailNames;
+    }
 }

+ 14 - 66
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -1,19 +1,11 @@
 package com.diagbot.facade;
 
 import com.diagbot.client.CdssCoreClient;
-import com.diagbot.dto.DiseaseInfoDTO;
-import com.diagbot.dto.DrugInfoDTO;
-import com.diagbot.dto.NurseInfoDTO;
-import com.diagbot.dto.OperationInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalConceptDTO;
 import com.diagbot.dto.RetrievalDTO;
-import com.diagbot.dto.ScaleInfoDTO;
-import com.diagbot.dto.TcmdiseaseInfoDTO;
-import com.diagbot.dto.TcmsyndromeInfoDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.BeanUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.HospitalCheckVO;
@@ -57,6 +49,8 @@ public class RetrievalFacade {
     private TcmdiseaseConfigFacade tcmdiseaseConfigFacade;
     @Autowired
     private TcmsyndromeConfigFacade tcmsyndromeConfigFacade;
+    @Autowired
+    private MappingConfigFacade mappingConfigFacade;
 
     /**
      * 检索
@@ -84,77 +78,31 @@ public class RetrievalFacade {
                 throw new CommonException(CommonErrorCode.NOT_EXISTS, "该医院ID不存在或者未启用!");
             } else {
                 switch (retrievalVO.getType()) {
-                    case 1:
-                        List<RetrievalConceptDTO> lisNames = new ArrayList<>();
-                        List<String> lisPacks = lisConfigFacade.getLisPacks(retrievalVO);
-                        for (String str : lisPacks) {
-                            RetrievalConceptDTO data = new RetrievalConceptDTO();
-                            data.setName(str);
-                            lisNames.add(data);
-                        }
-                        retrievalDTO.setNameList(lisNames);
-                        break;
                     case 2:
-                        retrievalDTO.setLisDetailNames(lisConfigFacade.getLis(retrievalVO));
+                        retrievalDTO.setLisDetailNames(mappingConfigFacade.getHisDetailNames(retrievalVO));
                         break;
+                    case 1:
                     case 3:
-                        List<RetrievalConceptDTO> Pacss = new ArrayList<>();
-                        List<String> Pacsslist = pacsConfigFacade.getPACSs(retrievalVO);
-                        for (String str : Pacsslist) {
-                            RetrievalConceptDTO data = new RetrievalConceptDTO();
-                            data.setName(str);
-                            Pacss.add(data);
-                        }
-                        retrievalDTO.setNameList(Pacss);
-                        break;
                     case 4:
-                        List<DiseaseInfoDTO> diseases = diseaseConfigFacade.getDiseases(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(diseases, RetrievalConceptDTO.class));
-                        break;
                     case 5:
-                        List<DrugInfoDTO> medicines = drugConfigFacade.getMedicines(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(medicines, RetrievalConceptDTO.class));
-                        break;
                     case 6:
-                        List<OperationInfoDTO> operations = operationConfigFacade.getOperations(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(operations, RetrievalConceptDTO.class));
-                        break;
                     case 7:
-                        List<RetrievalConceptDTO> Depts = new ArrayList<>();
-                        List<String> Deptslist = deptConfigFacade.getDepts(retrievalVO);
-                        for (String str : Deptslist) {
-                            RetrievalConceptDTO data = new RetrievalConceptDTO();
-                            data.setName(str);
-                            Depts.add(data);
-                        }
-                        retrievalDTO.setNameList(Depts);
-                        break;
                     case 8:
-                        List<RetrievalConceptDTO> Transfusion = new ArrayList<>();
-                        List<String> Transfusions = transfusionConfigFacade.getTransfusion(retrievalVO);
-                        for (String str : Transfusions) {
-                            RetrievalConceptDTO data = new RetrievalConceptDTO();
-                            data.setName(str);
-                            Transfusion.add(data);
-                        }
-                        retrievalDTO.setNameList(Transfusion);
-                        break;
                     case 10:
-                        List<ScaleInfoDTO> scales = scaleConfigFacade.getScales(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(scales, RetrievalConceptDTO.class));
-                        break;
                     case 11:
-                        List<NurseInfoDTO> nurses = nurseConfigFacade.getNurses(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(nurses, RetrievalConceptDTO.class));
-                        break;
                     case 12:
-                        List<TcmdiseaseInfoDTO> tcmdiseases = tcmdiseaseConfigFacade.getTcmdiseases(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(tcmdiseases, RetrievalConceptDTO.class));
-                        break;
                     case 13:
-                        List<TcmsyndromeInfoDTO> tcmsyndromes = tcmsyndromeConfigFacade.getTcmsyndromes(retrievalVO);
-                        retrievalDTO.setNameList(BeanUtil.listCopyTo(tcmsyndromes, RetrievalConceptDTO.class));
+                    case 14:
+                        List<RetrievalConceptDTO> hisNameList = new ArrayList<>();
+                        List<String> hisNames = mappingConfigFacade.getHisNames(retrievalVO);
+                        for (String str : hisNames) {
+                            RetrievalConceptDTO data = new RetrievalConceptDTO();
+                            data.setName(str);
+                            hisNameList.add(data);
+                        }
+                        retrievalDTO.setNameList(hisNameList);
                         break;
+
                 }
             }
         }

+ 19 - 0
src/main/java/com/diagbot/mapper/MappingConfigMapper.java

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.entity.MappingConfig;
 import com.diagbot.entity.wrapper.MappingConfigWrapper;
 import com.diagbot.vo.MappingConfigPageVO;
+import com.diagbot.vo.RetrievalVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 医学术语映射表 Mapper 接口
@@ -23,4 +26,20 @@ public interface MappingConfigMapper extends BaseMapper<MappingConfig> {
      * @return
      */
     IPage<MappingConfigWrapper> getPage(@Param("mappingConfigPageVO") MappingConfigPageVO mappingConfigPageVO);
+
+    /**
+     * 医院术语检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<MappingConfig> hisNameIndex(RetrievalVO retrievalVO);
+
+    /**
+     * 医院术语-细项检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<MappingConfig> hisDetailNameIndex(RetrievalVO retrievalVO);
 }

+ 20 - 1
src/main/java/com/diagbot/service/MappingConfigService.java

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.MappingConfig;
 import com.diagbot.entity.wrapper.MappingConfigWrapper;
 import com.diagbot.vo.MappingConfigPageVO;
+import com.diagbot.vo.RetrievalVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 医学术语映射表 服务类
@@ -23,4 +26,20 @@ public interface MappingConfigService extends IService<MappingConfig> {
      * @return
      */
     IPage<MappingConfigWrapper> getPage(@Param("mappingConfigPageVO") MappingConfigPageVO mappingConfigPageVO);
-}
+
+    /**
+     * 医院术语检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<MappingConfig> hisNameIndex(RetrievalVO retrievalVO);
+
+    /**
+     * 医院术语-细项检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<MappingConfig> hisDetailNameIndex(RetrievalVO retrievalVO);
+}

+ 25 - 0
src/main/java/com/diagbot/service/impl/MappingConfigServiceImpl.java

@@ -7,9 +7,12 @@ import com.diagbot.entity.wrapper.MappingConfigWrapper;
 import com.diagbot.mapper.MappingConfigMapper;
 import com.diagbot.service.MappingConfigService;
 import com.diagbot.vo.MappingConfigPageVO;
+import com.diagbot.vo.RetrievalVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 医学术语映射表 服务实现类
@@ -30,4 +33,26 @@ public class MappingConfigServiceImpl extends ServiceImpl<MappingConfigMapper, M
     public IPage<MappingConfigWrapper> getPage(@Param("mappingConfigPageVO") MappingConfigPageVO mappingConfigPageVO) {
         return baseMapper.getPage(mappingConfigPageVO);
     }
+
+    /**
+     * 医院术语检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    @Override
+    public List<MappingConfig> hisNameIndex(RetrievalVO retrievalVO) {
+        return baseMapper.hisNameIndex(retrievalVO);
+    }
+
+    /**
+     * 医院术语-细项检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    @Override
+    public List<MappingConfig> hisDetailNameIndex(RetrievalVO retrievalVO) {
+        return baseMapper.hisDetailNameIndex(retrievalVO);
+    }
 }

+ 114 - 0
src/main/resources/mapper/MappingConfigMapper.xml

@@ -114,4 +114,118 @@
         t1.is_match asc,t1.gmt_modified desc
     </select>
 
+    <select id="hisNameIndex" resultType="com.diagbot.entity.MappingConfig"
+            parameterType="com.diagbot.vo.RetrievalVO">
+        SELECT DISTINCT u.his_name
+        FROM(
+        SELECT
+        DISTINCT his_name
+        FROM
+        `tran_mapping_config`
+        WHERE
+        is_deleted = "N"
+        AND (his_detail_name IS NULL OR his_detail_name = '')
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name = #{inputStr}
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name
+        FROM
+        `tran_mapping_config`
+        WHERE
+        is_deleted = "N"
+        AND (his_detail_name IS NULL OR his_detail_name = '')
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name like concat(#{inputStr},"%")
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name
+        FROM
+        `tran_mapping_config`
+        WHERE
+        is_deleted = "N"
+        AND (his_detail_name IS NULL OR his_detail_name = '')
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name like concat("%",#{inputStr},"%")
+        </if>
+        ) u LIMIT 100
+    </select>
+
+    <select id="hisDetailNameIndex" resultType="com.diagbot.entity.MappingConfig"
+            parameterType="com.diagbot.vo.RetrievalVO">
+        SELECT DISTINCT u.his_name,u.his_detail_name,max(u.concept_id) as concept_id
+        FROM(
+        SELECT
+        DISTINCT his_name,his_detail_name,concept_id
+        FROM
+        `tran_mapping_config`
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_detail_name = #{inputStr}
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name,his_detail_name,concept_id
+        FROM
+        `tran_mapping_config`
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_detail_name like concat(#{inputStr},"%")
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name,his_detail_name,concept_id
+        FROM
+        `tran_mapping_config`
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_detail_name like concat("%",#{inputStr},"%")
+        </if>
+        ) u
+        GROUP BY
+        u.his_name,
+        u.his_detail_name
+        LIMIT 100
+    </select>
 </mapper>