Pārlūkot izejas kodu

反推改到Mysql

gaodm 4 gadi atpakaļ
vecāks
revīzija
ea025ab110

+ 17 - 0
src/main/java/com/diagbot/dto/DiseaseItemDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/2/22 16:49
+ */
+@Getter
+@Setter
+public class DiseaseItemDTO {
+    private String diseaseName;
+    private Long relationId;
+    private String itemName;
+}

+ 55 - 0
src/main/java/com/diagbot/enums/PushRelationTypeEnum.java

@@ -0,0 +1,55 @@
+package com.diagbot.enums;
+
+import lombok.Setter;
+
+/**
+ * @Description: 推理分类
+ * @author: gaodm
+ * @time: 2021/2/23 10:00
+ */
+public enum PushRelationTypeEnum {
+
+    SYMPTOMMAIN(501L, "疾病相关主症状"),
+    SYMPTOMSEC(502L, "疾病相关次症状"),
+    VITAL(503L, "疾病相关体格检查结果"),
+    LIS(504L, "疾病相关实验室检查套餐"),
+    PACS(505L, "疾病相关辅助检查项目"),
+    DRUG(506L, "疾病相关药物治疗"),
+    OPERATION(507L, "疾病相关手术治疗"),
+    DIFFDIAGNOSE(508L, "疾病相关鉴别诊断");
+
+    @Setter
+    private long key;
+
+    @Setter
+    private String name;
+
+    PushRelationTypeEnum(long key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static PushRelationTypeEnum getEnum(long key) {
+        for (PushRelationTypeEnum item : PushRelationTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(long key) {
+        PushRelationTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    public long getKey() {
+        return key;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+
+}

+ 23 - 0
src/main/java/com/diagbot/facade/KlRelationFacade.java

@@ -1,8 +1,16 @@
 package com.diagbot.facade;
 
+import com.diagbot.dto.DiseaseItemDTO;
 import com.diagbot.service.impl.KlRelationServiceImpl;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.DiseaseItemVO;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description:
  * @author: gaodm
@@ -10,4 +18,19 @@ import org.springframework.stereotype.Component;
  */
 @Component
 public class KlRelationFacade extends KlRelationServiceImpl {
+    public Map<Long, List<String>> getItemByDiseaseMap(DiseaseItemVO diseaseItemVO) {
+        Map<Long, List<String>> map = new HashMap<>();
+        List<DiseaseItemDTO> dtoList = this.getItemByDisease(diseaseItemVO);
+        if (ListUtil.isNotEmpty(dtoList)) {
+            for (DiseaseItemDTO diseaseItemDTO : dtoList) {
+                List<String> items = new ArrayList<>();
+                if (null != map.get(diseaseItemDTO.getRelationId())) {
+                    items.addAll(map.get(diseaseItemDTO.getRelationId()));
+                }
+                items.add(diseaseItemDTO.getItemName());
+                map.put(diseaseItemDTO.getRelationId(), items);
+            }
+        }
+        return map;
+    }
 }

+ 41 - 1
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -17,6 +17,7 @@ import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.OtherTipNeoDTO;
 import com.diagbot.dto.OtherTipPacsNeoDTO;
 import com.diagbot.dto.OtherTipTransfusionNeoDTO;
+import com.diagbot.dto.PushBaseDTO;
 import com.diagbot.dto.RuleDTO;
 import com.diagbot.dto.StandConvertCrfBatchDTO;
 import com.diagbot.dto.StandConvertCrfDTO;
@@ -32,6 +33,7 @@ import com.diagbot.entity.relationship.LisRemindGroup;
 import com.diagbot.entity.relationship.LisRemindMedicine;
 import com.diagbot.entity.relationship.LisRemindYiBaoDiseaseName;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.PushRelationTypeEnum;
 import com.diagbot.enums.RedisEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.enums.StaticTypeEnum;
@@ -48,6 +50,7 @@ import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.CriticalNeoVO;
+import com.diagbot.vo.DiseaseItemVO;
 import com.diagbot.vo.Drug;
 import com.diagbot.vo.NeoPushVO;
 import com.diagbot.vo.StandConvert;
@@ -933,6 +936,43 @@ public class NeoFacade {
         return number_diseases;
     }
 
+    /**
+     * 反推信息
+     *
+     * @param dis
+     * @return
+     */
+    public NeoPushDTO reverseInfoMySql(String dis) {
+        NeoPushDTO neoPushDTO = new NeoPushDTO();
+        //查询疾病相关的项目
+        DiseaseItemVO diseaseItemVO = new DiseaseItemVO();
+        diseaseItemVO.setDiseaseName(dis);
+        Map<Long, List<String>> items = klRelationFacade.getItemByDiseaseMap(diseaseItemVO);
+        if (MapUtils.isNotEmpty(items)){
+            if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.SYMPTOMMAIN.getKey()))){
+                neoPushDTO.setSymptoms(items.get(PushRelationTypeEnum.SYMPTOMMAIN.getKey())
+                        .stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
+            }
+            if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.VITAL.getKey()))){
+                neoPushDTO.setVitals(items.get(PushRelationTypeEnum.VITAL.getKey())
+                        .stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
+            }
+            if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.LIS.getKey()))){
+                neoPushDTO.setLis(items.get(PushRelationTypeEnum.LIS.getKey())
+                        .stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
+            }
+            if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.PACS.getKey()))){
+                neoPushDTO.setPacs(items.get(PushRelationTypeEnum.PACS.getKey())
+                        .stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
+            }
+            if (ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.DIFFDIAGNOSE.getKey()))){
+                neoPushDTO.setDifferentialDis(items.get(PushRelationTypeEnum.DIFFDIAGNOSE.getKey())
+                        .stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
+            }
+        }
+        return neoPushDTO;
+    }
+
     /**
      * 反推信息
      *
@@ -1306,7 +1346,7 @@ public class NeoFacade {
         String term = neoPushVO.getDiagVo().getDiags().get(0).getName();
         //        String o = (String) redisUtil.get(RedisEnum.diseaseCorrespond.getName() + term);
         //        term = StringUtil.isNotBlank(o) ? o : term;
-        pushDTO = this.reverseInfo(term);
+        pushDTO = this.reverseInfoMySql(term);
 
         return pushDTO;
     }

+ 3 - 1
src/main/java/com/diagbot/facade/PushFacade.java

@@ -47,7 +47,9 @@ public class PushFacade {
             pushDTO = this.pushFacIcss(pushVo);
         } else if (pushMode.equals(DiseasePushTypeEnum.specialty.getKey())) {
             //专科推送,走6.0
-            pushDTO = this.pushFac(pushVo);
+//            pushDTO = this.pushFac(pushVo);
+            // 2021/2/22 通老楼确认专科也走5.0
+            pushDTO = this.pushFacIcss(pushVo);
         }
 
         return pushDTO;

+ 4 - 0
src/main/java/com/diagbot/mapper/KlRelationMapper.java

@@ -1,8 +1,10 @@
 package com.diagbot.mapper;
 
+import com.diagbot.dto.DiseaseItemDTO;
 import com.diagbot.dto.DrugTypeDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.DiseaseItemVO;
 
 import java.util.List;
 
@@ -16,4 +18,6 @@ import java.util.List;
  */
 public interface KlRelationMapper extends BaseMapper<KlRelation> {
     List<DrugTypeDTO> getDrugType();
+
+    List<DiseaseItemDTO> getItemByDisease(DiseaseItemVO diseaseItemVO);
 }

+ 62 - 20
src/main/java/com/diagbot/process/PushProcess.java

@@ -4,17 +4,28 @@ import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.client.IcssPushServiceClient;
-import com.diagbot.dto.*;
+import com.diagbot.dto.NeoPushDTO;
+import com.diagbot.dto.PushBaseDTO;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.TreatDTO;
+import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.dto.icss.FeatureRate;
 import com.diagbot.dto.icss.Response;
 import com.diagbot.dto.icss.ResponseData;
 import com.diagbot.entity.PreResult;
-import com.diagbot.enums.*;
+import com.diagbot.enums.DiseaseTypeEnum;
+import com.diagbot.enums.MedicalAdviceEnum;
+import com.diagbot.enums.PushRelationTypeEnum;
+import com.diagbot.enums.RedisEnum;
+import com.diagbot.enums.StandConvertEnum;
+import com.diagbot.enums.StaticTypeEnum;
 import com.diagbot.facade.CommonFacade;
+import com.diagbot.facade.KlRelationFacade;
 import com.diagbot.facade.NeoFacade;
 import com.diagbot.facade.TranLisConfigIcssFacade;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RedisUtil;
+import com.diagbot.vo.DiseaseItemVO;
 import com.diagbot.vo.IcssVo;
 import com.diagbot.vo.NeoPushVO;
 import com.diagbot.vo.PushVO;
@@ -29,7 +40,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Field;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -50,7 +67,8 @@ public class PushProcess {
     IcssPushServiceClient icssPushServiceClient;
     @Autowired
     RedisUtil redisUtil;
-
+    @Autowired
+    private KlRelationFacade klRelationFacade;
 
     public PushDTO processIcss(PushVO pushVo) {
 
@@ -115,24 +133,44 @@ public class PushProcess {
         if (diaeaseName != null) {
             String uniqueName = diaeaseName.getUniqueName();
             uniqueName = StringUtils.isNotBlank(uniqueName) ? uniqueName : diaeaseName.getName();
-            reverseInfoByDisName = neoFacade.reverseInfoByDisName(uniqueName);
-        }
-        if (reverseInfoByDisName != null) {
-            if (ruleTypeList.contains("8") && reverseInfoByDisName.containsKey(StaticTypeEnum.DRUG.getName())) {
-                pushDTO.setMedicines(reverseInfoByDisName.get(StaticTypeEnum.DRUG.getName()).stream().map(x -> {
-                    PushBaseDTO pushBaseDTO = new PushBaseDTO();
-                    pushBaseDTO.setName(x);
-                    return pushBaseDTO;
-                }).collect(Collectors.toList()));
-            }
-            if (ruleTypeList.contains("9") && reverseInfoByDisName.containsKey(StaticTypeEnum.OPT.getName())) {
-                pushDTO.setOperations(reverseInfoByDisName.get(StaticTypeEnum.OPT.getName()).stream().map(x -> {
-                    PushBaseDTO pushBaseDTO = new PushBaseDTO();
-                    pushBaseDTO.setName(x);
-                    return pushBaseDTO;
-                }).collect(Collectors.toList()));
+            //reverseInfoByDisName = neoFacade.reverseInfoByDisName(uniqueName);
+            //查询疾病相关的项目
+            DiseaseItemVO diseaseItemVO = new DiseaseItemVO();
+            diseaseItemVO.setDiseaseName(uniqueName);
+            Map<Long, List<String>> items = klRelationFacade.getItemByDiseaseMap(diseaseItemVO);
+            if (MapUtils.isNotEmpty(items)){
+                if (ruleTypeList.contains("8") && ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.DRUG.getKey()))){
+                    pushDTO.setMedicines(items.get(PushRelationTypeEnum.DRUG.getKey()).stream().map(x -> {
+                        PushBaseDTO pushBaseDTO = new PushBaseDTO();
+                        pushBaseDTO.setName(x);
+                        return pushBaseDTO;
+                    }).collect(Collectors.toList()));
+                }
+                if (ruleTypeList.contains("9") && ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.OPERATION.getKey()))){
+                    pushDTO.setOperations(items.get(PushRelationTypeEnum.OPERATION.getKey()).stream().map(x -> {
+                        PushBaseDTO pushBaseDTO = new PushBaseDTO();
+                        pushBaseDTO.setName(x);
+                        return pushBaseDTO;
+                    }).collect(Collectors.toList()));
+                }
             }
         }
+//        if (reverseInfoByDisName != null) {
+//            if (ruleTypeList.contains("8") && reverseInfoByDisName.containsKey(StaticTypeEnum.DRUG.getName())) {
+//                pushDTO.setMedicines(reverseInfoByDisName.get(StaticTypeEnum.DRUG.getName()).stream().map(x -> {
+//                    PushBaseDTO pushBaseDTO = new PushBaseDTO();
+//                    pushBaseDTO.setName(x);
+//                    return pushBaseDTO;
+//                }).collect(Collectors.toList()));
+//            }
+//            if (ruleTypeList.contains("9") && reverseInfoByDisName.containsKey(StaticTypeEnum.OPT.getName())) {
+//                pushDTO.setOperations(reverseInfoByDisName.get(StaticTypeEnum.OPT.getName()).stream().map(x -> {
+//                    PushBaseDTO pushBaseDTO = new PushBaseDTO();
+//                    pushBaseDTO.setName(x);
+//                    return pushBaseDTO;
+//                }).collect(Collectors.toList()));
+//            }
+//        }
         if (ListUtil.isNotEmpty(icssVo.getDiagOrder())) {
             List<PreResult> diagOrder = icssVo.getDiagOrder();
             //把第一个推送出来的诊断set到diagOrder中,再反推
@@ -335,6 +373,10 @@ public class PushProcess {
         return typeWordsMap;
     }
 
+    private void reversePushPackage(){
+
+    }
+
     private void reversePushPackage(int length, PushDTO pushDTO, List<String> ruleTypeList, Map<String, List<String>> typeWords, NeoPushVO pushVO, Map<String, List<PushBaseDTO>> dis) {
         NeoPushDTO reversePush = neoFacade.getReversePush(pushVO);
         // 症状

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

@@ -1,9 +1,11 @@
 package com.diagbot.service;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.diagbot.dto.DiseaseItemDTO;
 import com.diagbot.dto.DrugTypeDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.DiseaseItemVO;
 
 import java.util.List;
 
@@ -18,4 +20,6 @@ import java.util.List;
 @DS("med")
 public interface KlRelationService extends IService<KlRelation> {
     List<DrugTypeDTO> getDrugType();
+
+    List<DiseaseItemDTO> getItemByDisease(DiseaseItemVO diseaseItemVO);
 }

+ 6 - 0
src/main/java/com/diagbot/service/impl/KlRelationServiceImpl.java

@@ -1,10 +1,12 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.DiseaseItemDTO;
 import com.diagbot.dto.DrugTypeDTO;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.mapper.KlRelationMapper;
 import com.diagbot.service.KlRelationService;
+import com.diagbot.vo.DiseaseItemVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -22,4 +24,8 @@ public class KlRelationServiceImpl extends ServiceImpl<KlRelationMapper, KlRelat
     public List<DrugTypeDTO> getDrugType() {
         return baseMapper.getDrugType();
     }
+
+    public List<DiseaseItemDTO> getItemByDisease(DiseaseItemVO diseaseItemVO){
+        return baseMapper.getItemByDisease(diseaseItemVO);
+    }
 }

+ 15 - 0
src/main/java/com/diagbot/vo/DiseaseItemVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/2/22 16:49
+ */
+@Getter
+@Setter
+public class DiseaseItemVO {
+    private String diseaseName;
+}

+ 23 - 0
src/main/resources/mapper/KlRelationMapper.xml

@@ -47,4 +47,27 @@
             t3.id
     </select>
 
+    <select id="getItemByDisease" resultType="com.diagbot.dto.DiseaseItemDTO" parameterType="com.diagbot.vo.DiseaseItemVO">
+        SELECT
+            t1.lib_name AS diseaseName,
+            t2.relation_id AS relationId,
+            t3.lib_name AS itemName
+        FROM
+            kl_concept t1,
+            kl_relation t2,
+            kl_concept t3
+        WHERE
+            t1.is_deleted = "N"
+        AND t2.is_deleted = "N"
+        AND t3.is_deleted = "N"
+        AND t1.lib_type = 100
+        AND t1.id = t2.start_id
+        AND t3.id = t2.end_id
+        AND t2.relation_id IN (501,502,503,504,505,506,507,508)
+        AND t1.lib_name = #{diseaseName}
+        ORDER BY
+            t1.id,
+            t2.relation_id
+    </select>
+
 </mapper>