|
@@ -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;
|
|
|
}
|
|
|
}
|