Zhaops 6 年之前
父节点
当前提交
d56996518b

+ 15 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptPushDTO.java

@@ -0,0 +1,15 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/7 20:06
+ */
+@Getter
+@Setter
+public class ConceptPushDTO extends ConceptBaseDTO {
+    private Integer libType;
+}

+ 6 - 7
aipt-service/src/main/java/com/diagbot/dto/PushDTO.java

@@ -1,6 +1,5 @@
 package com.diagbot.dto;
 
-import com.diagbot.entity.ScaleContent;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -15,13 +14,13 @@ import java.util.Map;
 @Getter
 @Setter
 public class PushDTO {
-    private List<ConceptBaseDTO> symptom;
-    private List<ConceptBaseDTO> other;
-    private List<ConceptBaseDTO> vital;
+    private List<ConceptPushDTO> symptom;
+    private List<ConceptPushDTO> other;
+    private List<ConceptPushDTO> vital;
     private List<Long> markedVitalIds;
-    private List<ConceptBaseDTO> lab;
-    private List<ConceptBaseDTO> pacs;
-    private Map<String, List<ConceptBaseDTO>> dis;
+    private List<ConceptPushDTO> lab;
+    private List<ConceptPushDTO> pacs;
+    private Map<String, List<ConceptPushDTO>> dis;
     private Map<String, Object> treat;
     //private List<MedicalIndicationDTO> medicalIndications;
     //private List<EvaluationModuleMappingDTO> evaluationModule;

+ 15 - 0
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -44,6 +44,21 @@ public class ConceptFacade extends ConceptServiceImpl {
         return concept;
     }
 
+    /**
+     * 根据名称和词性获取概念列表
+     * @param nameList
+     * @param libType
+     * @return
+     */
+    public List<Concept> getListByNamesAndType(List<String> nameList,Integer libType) {
+        QueryWrapper<Concept> conceptQueryWrapper = new QueryWrapper<>();
+        conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("lib_name", nameList)
+                .eq("lib_type", libType);
+        List<Concept> list = this.list(conceptQueryWrapper);
+        return list;
+    }
+
     /**
      * 获取常用标签
      *

+ 60 - 20
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -1,36 +1,24 @@
 package com.diagbot.facade;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.TranServiceClient;
 import com.diagbot.client.bean.FeatureRate;
-import com.diagbot.client.bean.GdbResponse;
-import com.diagbot.client.bean.MedicalIndication;
-import com.diagbot.client.bean.MedicalIndicationDetail;
 import com.diagbot.client.bean.ResponseData;
-import com.diagbot.client.bean.SearchData;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.ScaleContent;
-import com.diagbot.enums.DisTypeEnum;
+import com.diagbot.dto.ConceptPushDTO;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.entity.Concept;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.FeatureTypeEnum;
-import com.diagbot.exception.CommonErrorCode;
-import com.diagbot.exception.CommonException;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.FastJsonUtils;
+import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.RespDTOUtil;
-import com.diagbot.util.StringUtil;
+import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.vo.SearchVo;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 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.Set;
 import java.util.stream.Collectors;
 
@@ -43,6 +31,10 @@ import java.util.stream.Collectors;
 public class PushFacade {
     @Autowired
     private ClinicalFacade clinicalFacade;
+    @Autowired
+    private ConceptFacade conceptFacade;
+    @Autowired
+    private TranServiceClient tranServiceClient;
 
     /**
      * 推理接口
@@ -51,6 +43,7 @@ public class PushFacade {
      * @return ResponseData
      */
     public void pushInner(SearchVo searchVo) {
+        PushDTO pushDTO = new PushDTO();
         ResponseData data = clinicalFacade.processClinicalData(searchVo);
         //大数据返回内容
         List<FeatureRate> dis = data.getDis();
@@ -59,12 +52,59 @@ public class PushFacade {
         String[] featureTypes = featureType.split(",|,");
         Set<String> featureTypeSet = new HashSet(Arrays.asList(featureTypes));
 
-        //症状 标签列表
+        //症状 概念列表
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Symptom.getKey()))) {
             List<FeatureRate> symptom = data.getSymptom();
             if (ListUtil.isNotEmpty(symptom)) {
                 List<String> nameList = symptom.stream().map(featureRate -> featureRate.getFeatureName()).collect(Collectors.toList());
+                List<Concept> concepts = conceptFacade.getListByNamesAndType(nameList, ParamConvertUtil.conceptConvert2Lib(ConceptTypeEnum.Symptom.getKey()));
+                if (ListUtil.isNotEmpty(concepts)) {
+                    pushDTO.setSymptom(getConceptDTOList(concepts, LexiconTypeEnum.SYMPTOM.getKey()));
+                }
+            }
+        }
+        //查体 概念列表
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Vital.getKey()))) {
+            List<FeatureRate> vital = data.getVitals();
+            if (ListUtil.isNotEmpty(vital)) {
+                List<String> nameList = vital.stream().map(featureRate -> featureRate.getFeatureName()).collect(Collectors.toList());
+                List<Concept> concepts = conceptFacade.getListByNamesAndType(nameList, ParamConvertUtil.conceptConvert2Lib(ConceptTypeEnum.Vital.getKey()));
+                if (ListUtil.isNotEmpty(concepts)) {
+                    pushDTO.setVital(getConceptDTOList(concepts, LexiconTypeEnum.VITAL_INDEX.getKey()));
+                }
+            }
+        }
+        //辅检 概念列表
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Pacs.getKey()))) {
+            List<FeatureRate> pacs = data.getPacs();
+            if (ListUtil.isNotEmpty(pacs)) {
+                List<String> nameList = pacs.stream().map(featureRate -> featureRate.getFeatureName()).collect(Collectors.toList());
+                List<Concept> concepts = conceptFacade.getListByNamesAndType(nameList, ParamConvertUtil.conceptConvert2Lib(ConceptTypeEnum.Pacs.getKey()));
+                if (ListUtil.isNotEmpty(concepts)) {
+                    pushDTO.setPacs(getConceptDTOList(concepts, LexiconTypeEnum.PACS_ITEMS.getKey()));
+                }
+            }
+        }
+    }
+
+    /**
+     * 概念转成返回格式
+     *
+     * @param concepts
+     * @param libType
+     * @return
+     */
+    public List<ConceptPushDTO> getConceptDTOList(List<Concept> concepts, Integer libType) {
+        List<ConceptPushDTO> conceptDTOS = Lists.newLinkedList();
+        if (ListUtil.isNotEmpty(concepts)) {
+            for (Concept concept : concepts) {
+                ConceptPushDTO conceptDTO = new ConceptPushDTO();
+                conceptDTO.setConceptId(concept.getId());
+                conceptDTO.setName(concept.getLibName());
+                conceptDTO.setLibType(ParamConvertUtil.libConvert2Concept(libType));
+                conceptDTOS.add(conceptDTO);
             }
         }
+        return conceptDTOS;
     }
 }

+ 1 - 1
aipt-service/src/main/java/com/diagbot/util/ParamConvertUtil.java

@@ -68,7 +68,7 @@ public class ParamConvertUtil {
      * @param libType
      * @return
      */
-    public Integer libConvert2Concept(Integer libType) {
+    public static Integer libConvert2Concept(Integer libType) {
         Integer type = null;
         switch (LexiconTypeEnum.getEnum(libType)) {
             case SYMPTOM: