Kaynağa Gözat

ICSS推理采用异步并发处理

zhaops 5 yıl önce
ebeveyn
işleme
898f38703f

+ 8 - 5
aipt-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java

@@ -52,7 +52,6 @@ public class PushItemAggregate {
 
     @DataProvider("setAll")
     public PushDTO setAll(
-            @InvokeParameter("pushDTO") PushDTO pushDTO,
             @DataConsumer("getDept") ConceptPushDTO dept,
             @DataConsumer("setSymptom") List<ConceptPushDTO> symptom,
             @DataConsumer("setVital") List<ConceptPushDTO> vital,
@@ -60,9 +59,11 @@ public class PushItemAggregate {
             @DataConsumer("setPacs") List<ConceptPushDTO> pacs,
             @DataConsumer("setDis") Map<String, List<ConceptPushDTO>> dis,
             @DataConsumer("setMedicalIndications") List<MedicalIndication> medicalIndications) {
+        PushDTO pushDTO = new PushDTO();
         if (null != dept) {
             pushDTO.setDept(dept);
         }
+
         if (ListUtil.isNotEmpty(symptom)) {
             pushDTO.setSymptom(symptom);
         }
@@ -87,11 +88,12 @@ public class PushItemAggregate {
     /**
      * 根据诊断推送确定科室
      *
-     * @param dis
+     * @param data
      * @return
      */
     @DataProvider("getDept")
-    public ConceptPushDTO getDept(@InvokeParameter("dis") List<FeatureRate> dis) {
+    public ConceptPushDTO getDept(@InvokeParameter("data") ResponseData data) {
+        List<FeatureRate> dis = data.getDis();
         String deptName = "";
         if (ListUtil.isNotEmpty(dis)) {
             for (FeatureRate featureRate : dis) {
@@ -232,9 +234,10 @@ public class PushItemAggregate {
 
     @DataProvider("setDis")
     public Map<String, List<ConceptPushDTO>> setDis(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
-                                                    @InvokeParameter("dis") List<FeatureRate> dis,
+                                                    @InvokeParameter("data") ResponseData data,
                                                     @InvokeParameter("isConnect") Boolean isConnect,
                                                     @InvokeParameter("hosCode") String hosCode) {
+        List<FeatureRate> dis = data.getDis();
         Map<String, List<ConceptPushDTO>> disRes = new HashMap<>();
         //诊断 map
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Feature_Type_Disease.getKey()))) {
@@ -409,4 +412,4 @@ public class PushItemAggregate {
         }
         return concepts;
     }
-}
+}

+ 0 - 7
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -2,7 +2,6 @@ package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.TranServiceClient;
-import com.diagbot.client.bean.FeatureRate;
 import com.diagbot.client.bean.HosCodeVO;
 import com.diagbot.client.bean.ResponseData;
 import com.diagbot.dto.LisResult;
@@ -97,18 +96,12 @@ public class PushFacade {
         String[] featureTypes = featureType.split(",|,");
         Set<String> featureTypeSet = new HashSet(Arrays.asList(featureTypes));
 
-
-        //确定推送科室
-        List<FeatureRate> dis = data.getDis();
-
         try {
             Map<String, Object> invokeParams = new HashMap<>();
-            invokeParams.put("pushDTO", pushDTO);
             invokeParams.put("featureTypeSet", featureTypeSet);
             invokeParams.put("data", data);
             invokeParams.put("isConnect", isConnect);
             invokeParams.put("hosCode", searchVo.getHosCode());
-            invokeParams.put("dis", dis);
             pushDTO
                     = dataBeanAggregateQueryFacade.get("setAll", invokeParams, PushDTO.class);
         } catch (Exception e) {

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

@@ -2,6 +2,7 @@ package com.diagbot.util;
 
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
+import io.swagger.models.auth.In;
 
 /**
  * @Description:参数转换
@@ -18,7 +19,7 @@ public class ParamConvertUtil {
      */
     public static Integer conceptConvert2Lib(Integer type) {
         Integer libType = null;
-        switch (ConceptTypeEnum.getEnum(type)) {
+        switch (ConceptTypeEnum.getEnum(type.intValue())) {
             case Symptom:
                 libType = LexiconTypeEnum.SYMPTOM.getKey();
                 break;
@@ -79,7 +80,7 @@ public class ParamConvertUtil {
      */
     public static Integer libConvert2Concept(Integer libType) {
         Integer type = null;
-        switch (LexiconTypeEnum.getEnum(libType)) {
+        switch (LexiconTypeEnum.getEnum(libType.intValue())) {
             case SYMPTOM:
                 type = ConceptTypeEnum.Symptom.getKey();
                 break;

+ 3 - 1
config-server/src/main/resources/shared/icss-service-dev.yml

@@ -114,4 +114,6 @@ mybatis-plus:
       #sql-injector: com.baomidou.springboot.xxx
   configuration:
     map-underscore-to-camel-case: true
-    cache-enabled: false
+    cache-enabled: false
+
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate

+ 3 - 1
config-server/src/main/resources/shared/icss-service-local.yml

@@ -114,4 +114,6 @@ mybatis-plus:
       #sql-injector: com.baomidou.springboot.xxx
   configuration:
     map-underscore-to-camel-case: true
-    cache-enabled: false
+    cache-enabled: false
+
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate

+ 2 - 0
config-server/src/main/resources/shared/icss-service-pro.yml

@@ -115,3 +115,5 @@ mybatis-plus:
   configuration:
     map-underscore-to-camel-case: true
     cache-enabled: false
+
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate

+ 3 - 1
config-server/src/main/resources/shared/icss-service-test.yml

@@ -114,4 +114,6 @@ mybatis-plus:
       #sql-injector: com.baomidou.springboot.xxx
   configuration:
     map-underscore-to-camel-case: true
-    cache-enabled: false
+    cache-enabled: false
+
+io.github.lvyahui8.spring.base-packages: com.diagbot.aggregate

+ 6 - 0
icss-service/pom.xml

@@ -187,6 +187,12 @@
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>io.github.lvyahui8</groupId>
+            <artifactId>spring-boot-data-aggregator-starter</artifactId>
+            <version>1.1.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 301 - 0
icss-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java

@@ -0,0 +1,301 @@
+package com.diagbot.aggregate;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.client.bean.ConceptBaseVO;
+import com.diagbot.client.bean.ConceptExistVO;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.ConceptPushDTO;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.QuestionPushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.DeptVital;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.FeatureTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.QuestionTypeEnum;
+import com.diagbot.enums.TagTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.facade.DeptVitalFacade;
+import com.diagbot.facade.QuestionFacade;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.PushVO;
+import com.diagbot.vo.QuestionIds2VO;
+import com.diagbot.vo.QuestionVO;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/10/21 14:59
+ */
+@Component
+public class PushItemAggregate {
+    @Autowired
+    private QuestionFacade questionFacade;
+    @Autowired
+    private AiptServiceClient aiptServiceClient;
+    @Autowired
+    private DeptVitalFacade deptVitalFacade;
+
+    @DataProvider("setICSSAll")
+    public PushDTO setICSSAll(
+            @InvokeParameter("pushDTO") PushDTO pushDTO,
+            @DataConsumer("setICSSSymptom") List<ConceptPushDTO> symptom,
+            @DataConsumer("setICSSVitalIndex") List<ConceptPushDTO> vital,
+            @DataConsumer("setICSSVitalModule") List<QuestionPushDTO> vitalModule,
+            @DataConsumer("setICSSLab") List<QuestionPushDTO> lab) {
+
+        if (ListUtil.isNotEmpty(symptom)) {
+            pushDTO.setSymptom(symptom);
+        }
+        if (ListUtil.isNotEmpty(vital)) {
+            pushDTO.setVital(vital);
+            List<Long> vitalIds = vital
+                    .stream()
+                    .map(vitalItem -> vitalItem.getId())
+                    .filter(vitalId -> vitalId != null)
+                    .collect(Collectors.toList());
+            pushDTO.setVitalIds(vitalIds);
+        }
+        if (ListUtil.isNotEmpty(vitalModule)) {
+            pushDTO.setModuleVital(vitalModule);
+        }
+        if (ListUtil.isNotEmpty(lab)) {
+            pushDTO.setLab(lab);
+        }
+        return pushDTO;
+    }
+
+    @DataProvider("setICSSSymptom")
+    public List<ConceptPushDTO> setSymptom(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
+                                           @InvokeParameter("data") PushDTO data) {
+        List<ConceptPushDTO> symptomRes = ListUtil.newArrayList();
+        //症状 概念列表
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Symptom.getKey()))) {
+            symptomRes = data.getSymptom();
+            if (ListUtil.isNotEmpty(symptomRes)) {
+                symptomRes = addQuestionId(symptomRes, QuestionTypeEnum.Symptom.getKey());
+            }
+        }
+        return symptomRes;
+    }
+
+    @DataProvider("setICSSVitalIndex")
+    public List<ConceptPushDTO> setVitalIndex(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
+                                              @InvokeParameter("data") PushDTO data) {
+        List<ConceptPushDTO> vitalRes = ListUtil.newArrayList();
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.VitalIndex.getKey()))) {
+            vitalRes = data.getVital();
+            if (ListUtil.isNotEmpty(vitalRes)) {
+                vitalRes = addQuestionId(vitalRes, QuestionTypeEnum.Vital.getKey());
+            }
+        }
+        return vitalRes;
+    }
+
+    @DataProvider("setICSSVitalModule")
+    public List<QuestionPushDTO> setVitalModule(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
+                                                @InvokeParameter("data") PushDTO data,
+                                                @InvokeParameter("pushVO") PushVO pushVO) {
+        ConceptPushDTO dept = data.getDept();
+        List<QuestionPushDTO> moduleVitalDTO = getVitalModule(dept, pushVO);
+        return moduleVitalDTO;
+    }
+
+    @DataProvider("setICSSLab")
+    public List<QuestionPushDTO> setLab(@InvokeParameter("featureTypeSet") Set<String> featureTypeSet,
+                                        @InvokeParameter("data") PushDTO data,
+                                        @InvokeParameter("pushVO") PushVO pushVO) {
+        List<QuestionPushDTO> labs = Lists.newLinkedList();
+        List<QuestionPushDTO> lisDTO = Lists.newLinkedList();
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Lis.getKey()))) {
+            labs = data.getLab();
+            if (ListUtil.isNotEmpty(labs)) {
+                Map<String, Long> lisMap = new LinkedHashMap<>();
+                List<String> mealNameList = labs
+                        .stream()
+                        .map(lab -> lab.getName())
+                        .collect(Collectors.toList());
+                Map<String, QuestionDTO> questionDTOMap
+                        = addLisQuestion(mealNameList, pushVO.getAge(), pushVO.getSex());
+                for (String name : mealNameList) {
+                    QuestionPushDTO questionPushDTO = new QuestionPushDTO();
+                    QuestionDTO questionDTO = questionDTOMap.get(name);
+                    if (questionDTO != null) {
+                        BeanUtil.copyProperties(questionDTO, questionPushDTO);
+                    } else {
+                        questionPushDTO.setName(name);
+                        questionPushDTO.setType(ConceptTypeEnum.Lis.getKey());
+                    }
+                    questionPushDTO.setLibType(12);
+                    if (lisMap.containsKey(name) && lisMap.get(name) != null) {
+                        questionPushDTO.setConceptId(lisMap.get(name));
+                    }
+                    lisDTO.add(questionPushDTO);
+                }
+            }
+        }
+        return lisDTO;
+    }
+
+    /**
+     * 概念关联标签,添加标签id ——症状
+     *
+     * @param concepts
+     * @param type
+     * @return
+     */
+    public List<ConceptPushDTO> addQuestionId(List<ConceptPushDTO> concepts, Integer type) {
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+        List<String> nameList = concepts.stream()
+                .map(concept -> concept.getName())
+                .collect(Collectors.toList());
+        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type", type)
+                .ne("tag_type", TagTypeEnum.T8.getKey());
+        //化验填写单匹配name
+        if (ListUtil.isNotEmpty(nameList)) {
+            if (type.equals(ConceptTypeEnum.Lis.getKey())) {
+                questionInfoQueryWrapper.in("name", nameList);
+            } else {
+                questionInfoQueryWrapper.in("tag_name", nameList);
+            }
+        }
+        List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
+        if (ListUtil.isNotEmpty(questionInfoList)) {
+            Map<String, QuestionInfo> questionInfoMap
+                    = EntityUtil.makeEntityMap(questionInfoList, "tagName");
+            for (ConceptPushDTO concept : concepts) {
+                if (questionInfoMap.containsKey(concept.getName())) {
+                    concept.setId(questionInfoMap.get(concept.getName()).getId());
+                }
+            }
+        }
+        return concepts;
+    }
+
+    /**
+     * 获取查体模板
+     *
+     * @param dept
+     * @param pushVO
+     * @return
+     */
+    public List<QuestionPushDTO> getVitalModule(ConceptPushDTO dept, PushVO pushVO) {
+        List<QuestionPushDTO> vitalDTO = Lists.newLinkedList();
+        if (dept.getConceptId() == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "全科信息未维护");
+        }
+        QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
+        deptVitalQueryWrapper
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("dept_id", dept.getConceptId())
+                .orderByAsc("order_no");
+        List<DeptVital> deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
+        //科室模板为空时,取全科模板
+        if (deptVitalList.size() == 0 && dept.getName().equals("全科") == false) {
+            ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
+            conceptBaseVO.setName("全科");
+            conceptBaseVO.setLibType(ConceptTypeEnum.DEPARTMENT.getKey());
+            RespDTO<ConceptBaseDTO> res = aiptServiceClient.existConcept(conceptBaseVO);
+            RespDTOUtil.respNGDeal(res, "全科信息未维护");
+            BeanUtil.copyProperties(res.data, dept);
+            deptVitalQueryWrapper = new QueryWrapper<>();
+            deptVitalQueryWrapper
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("dept_id", dept.getConceptId())
+                    .orderByAsc("order_no");
+            deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
+        }
+        //标签列表
+        for (DeptVital deptVital : deptVitalList) {
+            QuestionVO questionVO = new QuestionVO();
+            QuestionPushDTO questionPushDTO = new QuestionPushDTO();
+            questionVO.setAge(pushVO.getAge());
+            questionVO.setSexType(pushVO.getSex());
+            questionVO.setId(deptVital.getVitalId());
+            QuestionDTO questionDTO = questionFacade.getById(questionVO);
+            if (questionDTO != null && questionDTO.getId() != null) {
+                BeanUtil.copyProperties(questionDTO, questionPushDTO);
+                questionPushDTO.setLibType(ConceptTypeEnum.Vital.getKey());
+                vitalDTO.add(questionPushDTO);
+            }
+        }
+        //增加概念id
+        if (ListUtil.isNotEmpty(vitalDTO)) {
+            ConceptExistVO conceptExistVO = new ConceptExistVO();
+            conceptExistVO.setType(ConceptTypeEnum.Vital.getKey());
+            List<String> vitalNames = vitalDTO
+                    .stream()
+                    .map(vital -> vital.getTagName())
+                    .collect(Collectors.toList());
+            conceptExistVO.setNameList(vitalNames);
+            RespDTO<Map<String, Long>> respDTO = aiptServiceClient.getConceptMapByNameAndType(conceptExistVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                Map<String, Long> vitalMap = respDTO.data;
+                for (QuestionPushDTO questionPushDTO : vitalDTO) {
+                    if (vitalMap.get(questionPushDTO.getTagName()) != null) {
+                        questionPushDTO.setConceptId(vitalMap.get(questionPushDTO.getTagName()));
+                    }
+                }
+            }
+        }
+        return vitalDTO;
+    }
+
+    /**
+     * 获取化验填写单
+     *
+     * @param nameList
+     * @param age
+     * @param sex
+     * @return
+     */
+    public Map<String, QuestionDTO> addLisQuestion(List<String> nameList, Integer age, Integer sex) {
+        Map<String, QuestionDTO> mapDTO = new LinkedHashMap<>();
+        if (ListUtil.isEmpty(nameList)) {
+            return mapDTO;
+        }
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+        questionInfoQueryWrapper
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("name", nameList)
+                .eq("tag_type", TagTypeEnum.T7.getKey());
+        List<QuestionInfo> lisList = questionFacade.list(questionInfoQueryWrapper);
+        if (ListUtil.isNotEmpty(lisList)) {
+            List<Long> lisIds = lisList
+                    .stream()
+                    .map(lis -> lis.getId())
+                    .collect(Collectors.toList());
+            QuestionIds2VO questionIds2VO = new QuestionIds2VO();
+            questionIds2VO.setAge(age);
+            questionIds2VO.setSexType(sex);
+            questionIds2VO.setIds(lisIds);
+            Map<Long, Object> questionDTOMap = questionFacade.getByIds(questionIds2VO);
+            for (Map.Entry<Long, Object> entry : questionDTOMap.entrySet()) {
+                QuestionDTO questionDTO = new QuestionDTO();
+                BeanUtil.copyProperties(entry.getValue(), questionDTO);
+                mapDTO.put(questionDTO.getName(), questionDTO);
+            }
+        }
+        return mapDTO;
+    }
+}

+ 18 - 269
icss-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -1,48 +1,29 @@
 package com.diagbot.facade;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.AiptServiceClient;
-import com.diagbot.client.bean.ConceptBaseVO;
-import com.diagbot.client.bean.ConceptExistVO;
 import com.diagbot.client.bean.ResponseData;
 import com.diagbot.client.bean.SearchData;
-import com.diagbot.dto.ConceptBaseDTO;
-import com.diagbot.dto.ConceptPushDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.PushKYJDTO;
-import com.diagbot.dto.QuestionDTO;
-import com.diagbot.dto.QuestionPushDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.DeptVital;
-import com.diagbot.entity.QuestionInfo;
-import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.FeatureTypeEnum;
-import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LisSourceEnum;
-import com.diagbot.enums.QuestionTypeEnum;
-import com.diagbot.enums.TagTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.LisResult;
 import com.diagbot.vo.PushKYJVO;
 import com.diagbot.vo.PushVO;
-import com.diagbot.vo.QuestionIds2VO;
-import com.diagbot.vo.QuestionVO;
-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;
 
 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;
 
 /**
  * @Description:
@@ -52,9 +33,7 @@ import java.util.stream.Collectors;
 @Component
 public class PushFacade {
     @Autowired
-    private QuestionFacade questionFacade;
-    @Autowired
-    private DeptVitalFacade deptVitalFacade;
+    private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
     @Autowired
     private TreatmentFacade treatmentFacade;
     @Autowired
@@ -117,112 +96,26 @@ public class PushFacade {
         //推理结果返回科室
         pushDTO.setDept(data.getDept());
 
-        //症状 概念+标签id
-        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Symptom.getKey()))) {
-            List<ConceptPushDTO> symptom = data.getSymptom();
-            if (ListUtil.isNotEmpty(symptom)) {
-                List<ConceptPushDTO> symptomDTO = addQuestionId(symptom, QuestionTypeEnum.Symptom.getKey());
-                pushDTO.setSymptom(symptomDTO);
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("pushVO", pushVO);
+            invokeParams.put("pushDTO", pushDTO);
+            invokeParams.put("featureTypeSet", featureTypeSet);
+            invokeParams.put("data", data);
+            pushDTO
+                    = dataBeanAggregateQueryFacade.get("setICSSAll", invokeParams, PushDTO.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        } finally {
+            if (pushDTO == null) {
+                pushDTO = new PushDTO();
+                pushDTO.setDept(data.getDept());
             }
         }
+
         //其他史 概念+标签id
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Other.getKey()))) {
         }
-        //查体标记项
-        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.VitalResult.getKey())) ||
-                featureTypeSet.contains(String.valueOf(FeatureTypeEnum.VitalIndex.getKey()))) {
-            List<ConceptPushDTO> vitals = data.getVital();
-            if (ListUtil.isNotEmpty(vitals)) {
-                List<ConceptPushDTO> vitalDTOList = addQuestionId(vitals, QuestionTypeEnum.Vital.getKey());
-                pushDTO.setVital(vitalDTOList);
-                if (ListUtil.isNotEmpty(vitalDTOList)) {
-                    List<Long> vitalIds = vitalDTOList
-                            .stream()
-                            .map(vital -> vital.getId())
-                            .filter(vitalId -> vitalId != null)
-                            .collect(Collectors.toList());
-                    pushDTO.setVitalIds(vitalIds);
-                }
-            }
-        }
-        //查体模板
-        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.VitalModule.getKey()))) {
-            ConceptPushDTO dept = data.getDept();
-            List<QuestionPushDTO> moduleVitalDTO = getVitalModule(dept, pushVO);
-            pushDTO.setModuleVital(moduleVitalDTO);
-        }
-        //化验  标签列表
-        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Lis.getKey()))) {
-            List<QuestionPushDTO> labs = data.getLab();
-            if (ListUtil.isNotEmpty(labs)) {
-                List<QuestionPushDTO> lisDTO = Lists.newLinkedList();
-                Map<String, Long> lisMap = new LinkedHashMap<>();
-                List<String> mealNameList = labs
-                        .stream()
-                        .map(lab -> lab.getName())
-                        .collect(Collectors.toList());
-                Map<String, QuestionDTO> questionDTOMap
-                        = addLisQuestion(mealNameList, pushVO.getAge(), pushVO.getSex());
-                for (String name : mealNameList) {
-                    QuestionPushDTO questionPushDTO = new QuestionPushDTO();
-                    QuestionDTO questionDTO = questionDTOMap.get(name);
-                    if (questionDTO != null) {
-                        BeanUtil.copyProperties(questionDTO, questionPushDTO);
-                    } else {
-                        questionPushDTO.setName(name);
-                        questionPushDTO.setType(ConceptTypeEnum.Lis.getKey());
-                    }
-                    questionPushDTO.setLibType(12);
-                    if (lisMap.containsKey(name) && lisMap.get(name) != null) {
-                        questionPushDTO.setConceptId(lisMap.get(name));
-                    }
-                    lisDTO.add(questionPushDTO);
-                }
-
-               /* List<String> uniqueNameList = labs.stream().map(lab -> lab.getName()).collect(Collectors.toList());
-                //公表项转套餐项
-                Map<String, List<String>> lisMapping = lisMappingFacade.getLisMappingByUniqueName(uniqueNameList);
-                List<String> nameList = Lists.newLinkedList();
-                Map<String, Long> lisMap = new LinkedHashMap<>();
-                List<QuestionPushDTO> lisDTO = Lists.newLinkedList();
-                for (QuestionPushDTO lab : labs) {
-                    if (ListUtil.isNotEmpty(lisMapping.get(lab.getName()))) {
-                        //匹配出多个套餐项默认取第一个
-                        String name = lisMapping.get(lab.getName()).get(0);
-                        if (nameList.contains(name)) {
-                            continue;
-                        }
-                        nameList.add(name);
-                    }
-                }
-                if (ListUtil.isNotEmpty(nameList)) {
-                    ConceptExistVO conceptExistVO = new ConceptExistVO();
-                    conceptExistVO.setNameList(nameList);
-                    conceptExistVO.setType(ConceptTypeEnum.Lis.getKey());
-                    RespDTO<Map<String, Long>> respDTO = aiptServiceClient.getConceptMapByNameAndType(conceptExistVO);
-                    if (RespDTOUtil.respIsOK(respDTO)) {
-                        lisMap = respDTO.data;
-                    }
-                }
-                Map<String, QuestionDTO> questionDTOMap = addLisQuestion(nameList, pushVO.getAge(), pushVO.getSex());
-                for (String name : nameList) {
-                    QuestionPushDTO questionPushDTO = new QuestionPushDTO();
-                    QuestionDTO questionDTO = questionDTOMap.get(name);
-                    if (questionDTO != null) {
-                        BeanUtil.copyProperties(questionDTO, questionPushDTO);
-                    } else {
-                        questionPushDTO.setName(name);
-                        questionPushDTO.setType(ConceptTypeEnum.Lis.getKey());
-                    }
-                    questionPushDTO.setLibType(12);
-                    if (lisMap.containsKey(name) && lisMap.get(name) != null) {
-                        questionPushDTO.setConceptId(lisMap.get(name));
-                    }
-                    lisDTO.add(questionPushDTO);
-                }*/
-                pushDTO.setLab(lisDTO);
-            }
-        }
         //辅检  标签列表
         if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Pacs.getKey()))) {
             pushDTO.setPacs(data.getPacs());
@@ -277,148 +170,4 @@ public class PushFacade {
         pushKYJDTO.setDis(responseData.getDis());
         return pushKYJDTO;
     }
-
-    /**
-     * 获取查体模板
-     *
-     * @param dept
-     * @param pushVO
-     * @return
-     */
-    public List<QuestionPushDTO> getVitalModule(ConceptPushDTO dept, PushVO pushVO) {
-        List<QuestionPushDTO> vitalDTO = Lists.newLinkedList();
-        if (dept.getConceptId() == null) {
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "全科信息未维护");
-        }
-        QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
-        deptVitalQueryWrapper
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("dept_id", dept.getConceptId())
-                .orderByAsc("order_no");
-        List<DeptVital> deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
-        //科室模板为空时,取全科模板
-        if (deptVitalList.size() == 0 && dept.getName().equals("全科") == false) {
-            ConceptBaseVO conceptBaseVO = new ConceptBaseVO();
-            conceptBaseVO.setName("全科");
-            conceptBaseVO.setLibType(ConceptTypeEnum.DEPARTMENT.getKey());
-            RespDTO<ConceptBaseDTO> res = aiptServiceClient.existConcept(conceptBaseVO);
-            RespDTOUtil.respNGDeal(res, "全科信息未维护");
-            BeanUtil.copyProperties(res.data, dept);
-            deptVitalQueryWrapper = new QueryWrapper<>();
-            deptVitalQueryWrapper
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("dept_id", dept.getConceptId())
-                    .orderByAsc("order_no");
-            deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
-        }
-        //标签列表
-        for (DeptVital deptVital : deptVitalList) {
-            QuestionVO questionVO = new QuestionVO();
-            QuestionPushDTO questionPushDTO = new QuestionPushDTO();
-            questionVO.setAge(pushVO.getAge());
-            questionVO.setSexType(pushVO.getSex());
-            questionVO.setId(deptVital.getVitalId());
-            QuestionDTO questionDTO = questionFacade.getById(questionVO);
-            if (questionDTO != null && questionDTO.getId() != null) {
-                BeanUtil.copyProperties(questionDTO, questionPushDTO);
-                questionPushDTO.setLibType(ConceptTypeEnum.Vital.getKey());
-                vitalDTO.add(questionPushDTO);
-            }
-        }
-        //增加概念id
-        if (ListUtil.isNotEmpty(vitalDTO)) {
-            ConceptExistVO conceptExistVO = new ConceptExistVO();
-            conceptExistVO.setType(ConceptTypeEnum.Vital.getKey());
-            List<String> vitalNames = vitalDTO
-                    .stream()
-                    .map(vital -> vital.getTagName())
-                    .collect(Collectors.toList());
-            conceptExistVO.setNameList(vitalNames);
-            RespDTO<Map<String, Long>> respDTO = aiptServiceClient.getConceptMapByNameAndType(conceptExistVO);
-            if (RespDTOUtil.respIsOK(respDTO)) {
-                Map<String, Long> vitalMap = respDTO.data;
-                for (QuestionPushDTO questionPushDTO : vitalDTO) {
-                    if (vitalMap.get(questionPushDTO.getTagName()) != null) {
-                        questionPushDTO.setConceptId(vitalMap.get(questionPushDTO.getTagName()));
-                    }
-                }
-            }
-        }
-        return vitalDTO;
-    }
-
-
-    /**
-     * 概念关联标签,添加标签id ——症状
-     *
-     * @param concepts
-     * @param type
-     * @return
-     */
-    public List<ConceptPushDTO> addQuestionId(List<ConceptPushDTO> concepts, Integer type) {
-        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
-        List<String> nameList = concepts.stream()
-                .map(concept -> concept.getName())
-                .collect(Collectors.toList());
-        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("type", type)
-                .ne("tag_type", TagTypeEnum.T8.getKey());
-        //化验填写单匹配name
-        if (ListUtil.isNotEmpty(nameList)) {
-            if (type.equals(ConceptTypeEnum.Lis.getKey())) {
-                questionInfoQueryWrapper.in("name", nameList);
-            } else {
-                questionInfoQueryWrapper.in("tag_name", nameList);
-            }
-        }
-        List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
-        if (ListUtil.isNotEmpty(questionInfoList)) {
-            Map<String, QuestionInfo> questionInfoMap
-                    = EntityUtil.makeEntityMap(questionInfoList, "tagName");
-            for (ConceptPushDTO concept : concepts) {
-                if (questionInfoMap.containsKey(concept.getName())) {
-                    concept.setId(questionInfoMap.get(concept.getName()).getId());
-                }
-            }
-        }
-        return concepts;
-    }
-
-    /**
-     * 获取化验填写单
-     *
-     * @param nameList
-     * @param age
-     * @param sex
-     * @return
-     */
-    public Map<String, QuestionDTO> addLisQuestion(List<String> nameList, Integer age, Integer sex) {
-        Map<String, QuestionDTO> mapDTO = new LinkedHashMap<>();
-        if (ListUtil.isEmpty(nameList)) {
-            return mapDTO;
-        }
-        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
-        questionInfoQueryWrapper
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("name", nameList)
-                .eq("tag_type", TagTypeEnum.T7.getKey());
-        List<QuestionInfo> lisList = questionFacade.list(questionInfoQueryWrapper);
-        if (ListUtil.isNotEmpty(lisList)) {
-            List<Long> lisIds = lisList
-                    .stream()
-                    .map(lis -> lis.getId())
-                    .collect(Collectors.toList());
-            QuestionIds2VO questionIds2VO = new QuestionIds2VO();
-            questionIds2VO.setAge(age);
-            questionIds2VO.setSexType(sex);
-            questionIds2VO.setIds(lisIds);
-            Map<Long, Object> questionDTOMap = questionFacade.getByIds(questionIds2VO);
-            for (Map.Entry<Long, Object> entry : questionDTOMap.entrySet()) {
-                QuestionDTO questionDTO = new QuestionDTO();
-                BeanUtil.copyProperties(entry.getValue(), questionDTO);
-                mapDTO.put(questionDTO.getName(), questionDTO);
-            }
-        }
-        return mapDTO;
-    }
 }

+ 2 - 2
knowledgeman-service/src/main/java/com/diagbot/util/ParamConvertUtil.java

@@ -18,7 +18,7 @@ public class ParamConvertUtil {
      */
     public static Integer conceptConvert2Lib(Integer type) {
         Integer libType = null;
-        switch (ConceptTypeEnum.getEnum(type)) {
+        switch (ConceptTypeEnum.getEnum(type.intValue())) {
             case Symptom:
                 libType = LexiconTypeEnum.SYMPTOM.getKey();
                 break;
@@ -79,7 +79,7 @@ public class ParamConvertUtil {
      */
     public static Integer libConvert2Concept(Integer libType) {
         Integer type = null;
-        switch (LexiconTypeEnum.getEnum(libType)) {
+        switch (LexiconTypeEnum.getEnum(libType.intValue())) {
             case SYMPTOM:
                 type = ConceptTypeEnum.Symptom.getKey();
                 break;