瀏覽代碼

症状正推

kongwz 4 年之前
父節點
當前提交
a44651011e

+ 1 - 2
src/main/java/com/diagbot/entity/node/Symptom.java

@@ -1,6 +1,5 @@
 package com.diagbot.entity.node;
 
-import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.entity.node.base.BaseNode;
 import lombok.Getter;
 import lombok.Setter;
@@ -29,7 +28,7 @@ public class Symptom extends BaseNode  {
 	@Property(name = "范围")
 	private Integer range;
 
-	@Relationship(type = "症状相关医保疾病名称", direction = Relationship.OUTGOING)
+	@Relationship(type = "医保疾病名称相关症状", direction = Relationship.INCOMING)
 	private Set<YiBaoDiseaseName> disease = new HashSet<>();
 
 

+ 1 - 1
src/main/java/com/diagbot/entity/node/YiBaoDiseaseName.java

@@ -30,7 +30,7 @@ public class YiBaoDiseaseName extends BaseNode  {
 	@Relationship(type = "医保疾病名称相关临床路径名称", direction = Relationship.OUTGOING)
 	private Set<PathwayName> pathwaynames = new HashSet<>();
 
-	@Relationship(type = "症状相关医保疾病名称", direction = Relationship.INCOMING)
+	@Relationship(type = "症状相关医保疾病名称", direction = Relationship.OUTGOING)
 	private Set<Symptom> symptoms = new HashSet<>();
 
 	@Relationship(type = "体征相关医保疾病名称", direction = Relationship.INCOMING)

+ 60 - 14
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -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);
+
+        }
+
+
+
+    }
+
     /**
      * 处理开单合理性图谱数据
      *

+ 4 - 0
src/main/java/com/diagbot/process/PushProcess.java

@@ -42,6 +42,10 @@ public class PushProcess {
         if(pushVO.getDiagVo() != null && pushVO.getDiagVo().getDiags().size() > 0){
             reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO,dis,wordCrfDTO.getDiag());
         }else {
+            List<String> symptoms = new ArrayList<>();
+            symptoms.add("嗜睡");
+            symptoms.add("恶心");
+            neoFacade.getDisBySymptom(symptoms);
             //正推
             List<NeoPushDTO> push = neoFacade.getPush(pushVO);
             if(ListUtil.isNotEmpty(push) && push.size() >0){

+ 15 - 0
src/main/java/com/diagbot/repository/SymptomNameRepository.java

@@ -0,0 +1,15 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.Symptom;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+import java.util.List;
+
+
+public interface SymptomNameRepository extends Neo4jRepository<Symptom, Long> {
+
+    List<Symptom> findByNameIs(String name);
+
+    List<Symptom> findByNameContaining(String name);
+}
+