|
@@ -3,13 +3,9 @@ package com.diagbot.facade;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.diagbot.client.ChiefPresentSimilarityServiceClient;
|
|
|
import com.diagbot.client.StandConvertServiceClient;
|
|
|
-import com.diagbot.dto.BillNeoDTO;
|
|
|
-import com.diagbot.dto.CriticalNeoDTO;
|
|
|
-import com.diagbot.dto.HighRiskNeoDTO;
|
|
|
-import com.diagbot.dto.NeoPushDTO;
|
|
|
-import com.diagbot.dto.StandConvertCrfBatchDTO;
|
|
|
-import com.diagbot.dto.StandConvertCrfDTO;
|
|
|
-import com.diagbot.entity.node.*;
|
|
|
+import com.diagbot.dto.*;
|
|
|
+import com.diagbot.entity.node.Symptom;
|
|
|
+import com.diagbot.entity.node.YiBaoDiseaseName;
|
|
|
import com.diagbot.enums.StandConvertEnum;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
@@ -18,20 +14,19 @@ import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.RedisUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.*;
|
|
|
+import com.diagbot.vo.neoPushEntity.ChiefPushVo;
|
|
|
import com.diagbot.vo.neoPushEntity.Diag;
|
|
|
+import com.diagbot.vo.neoPushEntity.PresentPushVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.LinkedHashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* @Description: 图谱facade
|
|
@@ -73,6 +68,8 @@ public class NeoFacade {
|
|
|
RedisUtil redisUtil;
|
|
|
@Value("${StandConvert.rate}")
|
|
|
String standConvertRate;
|
|
|
+ @Autowired
|
|
|
+ SymptomNameRepository symptomNameRepository;
|
|
|
|
|
|
/**
|
|
|
* 返回药品缓存信息
|
|
@@ -141,11 +138,60 @@ public class NeoFacade {
|
|
|
List<NeoPushDTO> neoPushDTOS = new ArrayList<>();
|
|
|
|
|
|
// 如果没有诊断名称,则通过其它信息推送诊断
|
|
|
+ ChiefPushVo chiefPushVo = pushVO.getChiefPushVo();
|
|
|
+ PresentPushVo presentPushVo = pushVO.getPresentPushVo();
|
|
|
+ List<String> symptoms = new ArrayList<>();
|
|
|
+ List<String> symptom_chief = new ArrayList<>();
|
|
|
+ List<String> symptom_present = new ArrayList<>();
|
|
|
+ if(chiefPushVo != null){
|
|
|
+ symptom_chief = chiefPushVo.getSymptoms().stream().map(x -> x.getName()).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ if(presentPushVo != null){
|
|
|
+ symptom_present = presentPushVo.getSymptoms().stream().map(x -> x.getName()).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ symptoms = Stream.of(symptom_chief,symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
return neoPushDTOS;
|
|
|
}
|
|
|
|
|
|
+ public void getDisBySymptom(List<String> symptoms){
|
|
|
+ List<String> allDis = new ArrayList<>();
|
|
|
+ if(ListUtil.isNotEmpty(symptoms)){
|
|
|
+ symptoms.forEach(x ->{
|
|
|
+ List<Symptom> byNameIs = symptomNameRepository.findByNameIs(x);
|
|
|
+ if(ListUtil.isNotEmpty(byNameIs)){
|
|
|
+ List<String> diseases = byNameIs.stream().filter(z -> z.getDisease() != null && z.getDisease().size() > 0)
|
|
|
+ .map(z -> z.getDisease().stream().map(y -> y.getName()).collect(Collectors.toList())).flatMap(List::stream)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ allDis.addAll(diseases);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Long> dis_count = allDis.stream().collect(
|
|
|
+ Collectors.groupingBy(Function.identity(), Collectors.counting())
|
|
|
+ );
|
|
|
+ if(dis_count != null && dis_count.size() > 0){
|
|
|
+ dis_count = dis_count.entrySet().stream().sorted((o1,o2)->o2.getValue().compareTo(o1.getValue()))
|
|
|
+ .map(entry -> {
|
|
|
+ Map<String, Long> result = new LinkedHashMap();
|
|
|
+ result.put(entry.getKey(),entry.getValue());
|
|
|
+ return result;
|
|
|
+ }).reduce((map1,map2) ->{
|
|
|
+ map2.entrySet().forEach(entry ->map1.put(entry.getKey(),entry.getValue()));
|
|
|
+ return map1;
|
|
|
+ }).get();
|
|
|
+ System.out.println();
|
|
|
+
|
|
|
+// String dis_first = dis_count.entrySet().stream().map(x -> x.getKey()).collect(Collectors.toList()).get(0);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 处理开单合理性图谱数据
|
|
|
*
|