Bläddra i källkod

更新实验室检查结果推送诊断

kongwz 4 år sedan
förälder
incheckning
fbbb2404c9

+ 22 - 11
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -18,6 +18,7 @@ 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.LisPushVo;
 import com.diagbot.vo.neoPushEntity.PacsPushVo;
 import com.diagbot.vo.neoPushEntity.PresentPushVo;
 import com.google.common.collect.Lists;
@@ -245,6 +246,19 @@ public class NeoFacade {
         List<String> allDis_bySymptom = getDisBySymptom(symptoms,age,sex);
         allDis.addAll(allDis_bySymptom);
         //化验推出的疾病
+        LisPushVo lisPushVo = pushVO.getLisPushVo();
+        if(lisPushVo != null){
+            List<Lis> lises = lisPushVo.getLises();
+            if(ListUtil.isNotEmpty(lises)){
+                List<YiBaoDiseaseName> collect = lises.parallelStream()
+                        .map(x -> nodeRepository.getDisByLis(x.getUniqueName(), x.getDetailName())).collect(Collectors.toList());
+                List<String> lis_dis = lises.parallelStream()
+                        .map(x -> nodeRepository.getDisByLis(x.getUniqueName(), x.getDetailName()))
+                        .filter(z->z!=null && NeoUtil.matchBasic(z,sex,age)).map(z->z.getName())
+                        .collect(Collectors.toList());
+                allDis.addAll(lis_dis);
+            }
+        }
         //辅检推出的疾病
         PacsPushVo pacsPushVo = pushVO.getPacsPushVo();
         if(pacsPushVo !=null){
@@ -260,7 +274,7 @@ public class NeoFacade {
         Map<Long,List<String>> numberDiseasesMap = disCountSort(allDis);
         //根据发病率排序
         Map<String, Double> disdistributionCache = self.getDisdistributionCache();
-        numberDiseasesMap.forEach((x,y)->{
+        /*numberDiseasesMap.forEach((x,y)->{
             y.forEach(z ->{
                 if(disdistributionCache.containsKey(z)){
                     disdistributionCache.put(z,disdistributionCache.get(z));
@@ -268,13 +282,18 @@ public class NeoFacade {
                     disdistributionCache.put(z,0.0);
                 }
             });
-        });
+        });*/
         Map<Long,Map<String,Double>> disPack = new LinkedHashMap<>();
         numberDiseasesMap.forEach((x,y)->{
+            Map<String, Double> collect = y.stream()
+                    .collect(Collectors.toMap(v -> v, v -> disdistributionCache.get(v) != null?disdistributionCache.get(v):0.0, (e1, e2) -> e2));
+            disPack.put(x,collect);
+        });
+        /*numberDiseasesMap.forEach((x,y)->{
             Map<String,Double> dis_dbt = new HashMap<>();
             y.forEach(dis -> dis_dbt.put(dis,disdistributionCache.get(dis)));
             disPack.put(x,dis_dbt);
-        });
+        });*/
         disPack.forEach((x,y)->{
             Map<String, Double> collect = y.entrySet().stream()
                     .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
@@ -642,11 +661,8 @@ public class NeoFacade {
      */
     public NeoPushDTO getDiagInfo(NeoPushVO neoPushVO) {
         NeoPushDTO pushDTO = new NeoPushDTO();
-
         YiBaoDiseaseNode icdDiseaseNode = new YiBaoDiseaseNode();
         String term;
-
-//        for (Diag diag : neoPushVO.getDiagVo().getDiags()) {
         term = neoPushVO.getDiagVo().getDiags().get(0).getName();
             List<YiBaoDiseaseName> yiBaoName = yiBaoDiseaseRepository.findByNameIs(term);
             YiBaoDiseaseName icdDisease = null;
@@ -655,12 +671,7 @@ public class NeoFacade {
             }
             if (icdDisease != null) {
                 pushDTO = icdDiseaseNode.YiBaoDiseasetoDiseaseDTO(icdDisease, neoPushVO);
-
-                /*if (null != pushDTO) {
-                    neoPushDTOs.add(pushDTO);
-                }*/
             }
-//        }
 
         return pushDTO;
     }

+ 4 - 0
src/main/java/com/diagbot/repository/BaseNodeRepository.java

@@ -41,6 +41,10 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     @Query("match(s) where any(label in labels(s) where label in ['症状','体征']) return distinct s.name")
     List<String> getSymptomClass();
 
+    //化验查疾病
+    @Query("match(d:医保疾病名称)-[r1]->(l:化验套餐名称{name:{lisBig}})-[r:化验套餐名称相关化验细项及结果]->(lr:化验细项及结果{name:{subres}}),(d)-[r2]->(lr) return d")
+    YiBaoDiseaseName getDisByLis(@Param("lisBig") String lisBig,@Param("subres") String subres);
+
     @Query("match(d:医保疾病名称)-[r:医保疾病名称相关性别]->(h) return DISTINCT d.name+'&'+h.name")
     List<String> getDisSexClass();
 

+ 2 - 0
src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java

@@ -28,6 +28,8 @@ public class YiBaoDiseaseNode {
 			pushBaseDTO = new PushBaseDTO();
 			pushBaseDTO.setName(disease.getName());
 			pushDTO.setDisease(pushBaseDTO);
+			Set<Symptom> symptoms = disease.getSymptoms();
+//			disease.getSymptoms().stream().collect(Collectors.toMap(Symptom::getName,Symptom::getNodeId,(e1, e2) -> e2)))
 
 			pushDTO.setSymptoms(disease.getSymptoms().stream().map(x ->NeoUtil.updatePushInfo(x.getName())).collect(Collectors.toList()));
 

+ 11 - 9
src/main/java/com/diagbot/util/NeoUtil.java

@@ -127,16 +127,18 @@ public class NeoUtil {
 
     public static boolean matchBasic(YiBaoDiseaseName disease, int gender_code, double age){
         boolean match = true;
-        String gender_neo4j = disease.getGender();
-        String age_neo4j = disease.getAge();
-        if((gender_neo4j != null && gender_neo4j.equals("男") && gender_code != 1) ||
-                (gender_neo4j != null && gender_neo4j.equals("女") && gender_code != 2)){
-            match = false;
-        }else if(age_neo4j != null ){
-            String[] betweenAge = age_neo4j.split("-");
-            if(betweenAge.length == 2 && (age < Double.parseDouble(betweenAge[0])
-                    || age > Double.parseDouble(betweenAge[1]))){
+        if(disease != null){
+            String gender_neo4j = disease.getGender();
+            String age_neo4j = disease.getAge();
+            if((gender_neo4j != null && gender_neo4j.equals("男") && gender_code != 1) ||
+                    (gender_neo4j != null && gender_neo4j.equals("女") && gender_code != 2)){
                 match = false;
+            }else if(age_neo4j != null ){
+                String[] betweenAge = age_neo4j.split("-");
+                if(betweenAge.length == 2 && (age < Double.parseDouble(betweenAge[0])
+                        || age > Double.parseDouble(betweenAge[1]))){
+                    match = false;
+                }
             }
         }
         return match;