|
@@ -1,15 +1,17 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
+import com.diagbot.biz.push.entity.FeatureRate;
|
|
|
+import com.diagbot.biz.push.entity.ResponseData;
|
|
|
import com.diagbot.biz.push.entity.SearchVO;
|
|
|
import com.diagbot.client.AiptServiceClient;
|
|
|
import com.diagbot.client.TranServiceClient;
|
|
|
-import com.diagbot.client.bean.FeatureRate;
|
|
|
-import com.diagbot.client.bean.ResponseData;
|
|
|
import com.diagbot.dto.AIDTO;
|
|
|
+import com.diagbot.dto.FeatureRateDTO;
|
|
|
import com.diagbot.dto.HospitalDeptDTO;
|
|
|
import com.diagbot.dto.RespDTO;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.FastJsonUtils;
|
|
|
import com.diagbot.util.ListUtil;
|
|
@@ -50,8 +52,8 @@ public class AIFacade {
|
|
|
*/
|
|
|
public AIDTO push(AIVO aivo, String type) {
|
|
|
SearchVO searchVO = new SearchVO();
|
|
|
-
|
|
|
searchVO.setAge(aivo.getAge());
|
|
|
+ searchVO.setHosCode(aivo.getHospitalCode());
|
|
|
searchVO.setSymptom(aivo.getSymptom());
|
|
|
switch (aivo.getSex()) {
|
|
|
case 1:
|
|
@@ -76,29 +78,38 @@ public class AIFacade {
|
|
|
AIDTO aidto = new AIDTO();
|
|
|
switch (type) {
|
|
|
case "1":
|
|
|
- aidto.setItems(res.data.getSymptom());
|
|
|
+ List<FeatureRate> symptom = res.data.getSymptom();
|
|
|
+ if (ListUtil.isNotEmpty(symptom)) {
|
|
|
+ List<FeatureRateDTO> symptomDTO = BeanUtil.listCopyTo(symptom, FeatureRateDTO.class);
|
|
|
+ aidto.setItems(symptomDTO);
|
|
|
+ }
|
|
|
break;
|
|
|
case "7":
|
|
|
- List<FeatureRate> items = new ArrayList<>();
|
|
|
+ List<FeatureRateDTO> items = new ArrayList<>();
|
|
|
if (ListUtil.isNotEmpty(res.data.getDis())) {
|
|
|
- Map<String, List<FeatureRate>> disFeatureMap = new LinkedHashMap<>();
|
|
|
+ Map<String, List<FeatureRateDTO>> disFeatureMap = new LinkedHashMap<>();
|
|
|
+ List<FeatureRate> dis = res.data.getDis();
|
|
|
+ if (ListUtil.isEmpty(dis)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ List<FeatureRateDTO> disDTO = BeanUtil.listCopyTo(dis, FeatureRateDTO.class);
|
|
|
//诊断分类
|
|
|
- for (FeatureRate featureRate : res.data.getDis()) {
|
|
|
- if (StringUtil.isBlank(featureRate.getDesc())) {
|
|
|
- featureRate.setDesc("{\"可能诊断\":\"\"}");
|
|
|
+ for (FeatureRateDTO featureRateDTO : disDTO) {
|
|
|
+ if (StringUtil.isBlank(featureRateDTO.getDesc())) {
|
|
|
+ featureRateDTO.setDesc("{\"可能诊断\":\"\"}");
|
|
|
}
|
|
|
- Map<String, Object> descMap = FastJsonUtils.getJsonToMap(featureRate.getDesc());
|
|
|
+ Map<String, Object> descMap = FastJsonUtils.getJsonToMap(featureRateDTO.getDesc());
|
|
|
for (String disClass : descMap.keySet()) {
|
|
|
- List<FeatureRate> featureRateList = Lists.newLinkedList();
|
|
|
+ List<FeatureRateDTO> featureRateDTOList = Lists.newLinkedList();
|
|
|
if (disFeatureMap.get(disClass) != null) {
|
|
|
- featureRateList = disFeatureMap.get(disClass);
|
|
|
+ featureRateDTOList = disFeatureMap.get(disClass);
|
|
|
}
|
|
|
- featureRateList.add(featureRate);
|
|
|
- disFeatureMap.put(disClass, featureRateList);
|
|
|
+ featureRateDTOList.add(featureRateDTO);
|
|
|
+ disFeatureMap.put(disClass, featureRateDTOList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- FeatureRate item;
|
|
|
+ FeatureRateDTO item;
|
|
|
if (disFeatureMap.get("确诊") != null) {
|
|
|
items = getItems(disFeatureMap, "确诊", 1);
|
|
|
}
|
|
@@ -108,7 +119,7 @@ public class AIFacade {
|
|
|
if (disFeatureMap.get("可能诊断") != null && ListUtil.isEmpty(items)) {
|
|
|
Double rate;
|
|
|
Map<String, Double> map = new HashMap<>();
|
|
|
- List<FeatureRate> featureRateList = disFeatureMap.get("可能诊断");
|
|
|
+ List<FeatureRateDTO> featureRateList = disFeatureMap.get("可能诊断");
|
|
|
featureRateList = featureRateList
|
|
|
.stream()
|
|
|
.filter(i -> i.getExtraProperty() != null)
|
|
@@ -137,7 +148,7 @@ public class AIFacade {
|
|
|
});
|
|
|
for (Map.Entry<String, Double> entry : list) {
|
|
|
if (items.size() < 2) {
|
|
|
- item = new FeatureRate();
|
|
|
+ item = new FeatureRateDTO();
|
|
|
item.setExtraProperty(entry.getKey());
|
|
|
items.add(item);
|
|
|
} else {
|
|
@@ -145,7 +156,7 @@ public class AIFacade {
|
|
|
}
|
|
|
}
|
|
|
if (ListUtil.isEmpty(items)) {
|
|
|
- item = new FeatureRate();
|
|
|
+ item = new FeatureRateDTO();
|
|
|
item.setExtraProperty(res.data.getDis().get(0).getExtraProperty());
|
|
|
items.add(item);
|
|
|
}
|
|
@@ -164,7 +175,7 @@ public class AIFacade {
|
|
|
= tranServiceClient.hospitalDeptByConceptNames(hospitalDeptVO);
|
|
|
if (RespDTOUtil.respIsOK(retDeptMap)) {
|
|
|
Map<String, List<HospitalDeptDTO>> deptMap = retDeptMap.data;
|
|
|
- for (FeatureRate item : items) {
|
|
|
+ for (FeatureRateDTO item : items) {
|
|
|
item.setHospitalDepts(deptMap.get(item.getExtraProperty()));
|
|
|
}
|
|
|
}
|
|
@@ -176,30 +187,30 @@ public class AIFacade {
|
|
|
return aidto;
|
|
|
}
|
|
|
|
|
|
- private List<FeatureRate> getItems(Map<String, List<FeatureRate>> disFeatureMap,
|
|
|
- String type, int size) {
|
|
|
- List<FeatureRate> items = new ArrayList<>();
|
|
|
+ private List<FeatureRateDTO> getItems(Map<String, List<FeatureRateDTO>> disFeatureMap,
|
|
|
+ String type, int size) {
|
|
|
+ List<FeatureRateDTO> items = new ArrayList<>();
|
|
|
|
|
|
- List<FeatureRate> featureRateList = disFeatureMap.get(type);
|
|
|
+ List<FeatureRateDTO> featureRateList = disFeatureMap.get(type);
|
|
|
featureRateList = featureRateList
|
|
|
.stream()
|
|
|
.filter(i -> i.getExtraProperty() != null)
|
|
|
.collect(Collectors.toList());
|
|
|
if (ListUtil.isNotEmpty(featureRateList)) {
|
|
|
- Map<String, List<FeatureRate>> disMap
|
|
|
+ Map<String, List<FeatureRateDTO>> disMap
|
|
|
= EntityUtil.makeEntityListMap(featureRateList, "extraProperty");
|
|
|
- List<Map.Entry<String, List<FeatureRate>>> list = new ArrayList<Map.Entry<String, List<FeatureRate>>>(disMap.entrySet());
|
|
|
- Collections.sort(list, new Comparator<Map.Entry<String, List<FeatureRate>>>() {
|
|
|
+ List<Map.Entry<String, List<FeatureRateDTO>>> list = new ArrayList<Map.Entry<String, List<FeatureRateDTO>>>(disMap.entrySet());
|
|
|
+ Collections.sort(list, new Comparator<Map.Entry<String, List<FeatureRateDTO>>>() {
|
|
|
//降序排序
|
|
|
- public int compare(Map.Entry<String, List<FeatureRate>> o1,
|
|
|
- Map.Entry<String, List<FeatureRate>> o2) {
|
|
|
+ public int compare(Map.Entry<String, List<FeatureRateDTO>> o1,
|
|
|
+ Map.Entry<String, List<FeatureRateDTO>> o2) {
|
|
|
return Integer.compare(o2.getValue().size(), o1.getValue().size());
|
|
|
}
|
|
|
});
|
|
|
- FeatureRate item;
|
|
|
- for (Map.Entry<String, List<FeatureRate>> entry : list) {
|
|
|
+ FeatureRateDTO item;
|
|
|
+ for (Map.Entry<String, List<FeatureRateDTO>> entry : list) {
|
|
|
if (items.size() < size) {
|
|
|
- item = new FeatureRate();
|
|
|
+ item = new FeatureRateDTO();
|
|
|
item.setExtraProperty(entry.getKey());
|
|
|
items.add(item);
|
|
|
} else {
|
|
@@ -207,7 +218,6 @@ public class AIFacade {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return items;
|
|
|
}
|
|
|
}
|