浏览代码

查体推送

kongwz 5 年之前
父节点
当前提交
9f6124a06c

+ 5 - 2
graph-web/src/main/java/org/diagbot/graphWeb/controller/GraphController.java

@@ -10,6 +10,7 @@ import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.HighRiskCalculate;
 import org.diagbot.common.work.ResponseData;
 import org.diagbot.common.work.SearchData;
+import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.pub.api.Response;
 import org.diagbot.pub.utils.PropertiesUtil;
 import org.springframework.stereotype.Controller;
@@ -48,8 +49,10 @@ public class GraphController {
     @ResponseBody
     public Response<ResponseData> lisPacsData(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
         Response<ResponseData> response = new Response();
-        GraphCalculate graphCalculate = new GraphCalculate();
-        ResponseData responseData = graphCalculate.getLisPacs(request, searchData);
+        LisPacsCalculate lisPacsCalculate = new LisPacsCalculate();
+        ResponseData responseData = lisPacsCalculate.getLisPacs(request, searchData);
+//        GraphCalculate graphCalculate = new GraphCalculate();
+//        ResponseData responseData = graphCalculate.getLisPacs(request, searchData);
         response.setData(responseData);
         return response;
     }

+ 13 - 1
graph-web/src/main/java/org/diagbot/graphWeb/work/LisPacsCalculate.java

@@ -8,6 +8,8 @@ import org.diagbot.pub.utils.PropertiesUtil;
 import org.diagbot.pub.utils.http.HttpApi;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -24,7 +26,17 @@ public class LisPacsCalculate {
         Map data = (Map<String, Map>)lisPacsResponse.getData();
         responseData.setLabs((List)data.get("labs"));
         responseData.setPacs((List)data.get("pacs"));
-
+        List<FeatureRate> vitalFeature = new ArrayList<>();
+        List<LinkedHashMap> vitals =(List) data.get("vitals");
+        if(vitals != null){
+            for (LinkedHashMap v:vitals) {
+                String featureName = v.get("featureName").toString();
+                FeatureRate featureRate = new FeatureRate();
+                featureRate.setFeatureName(featureName);
+                vitalFeature.add(featureRate);
+            }
+        }
+        responseData.setVitals(vitalFeature);
         return responseData;
     }
 }

+ 4 - 1
graphdb/src/main/java/org/diagbot/repository/BaseNodeRepository.java

@@ -21,7 +21,10 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     //get high risk
     @Query("match(d:Disease) where d.name in {0} return d.name as name, d.high_risk as risk")
     List<Map<String, Object>> getHighRisk(List diagList);
-
+    //get VITAL
+    @Query("unwind {0} as row \n" +
+            " match (d:Disease)-[r1:表现]->(m:Vital) where d.name=row return m.name as name")
+    List<Map<String,Object>> getVitalList(List diagList);
     //get LIS PACS
     @Query("unwind {0} as row \n" +
             " match (d:Disease)-[r1:推荐]->(m) where d.name=row return  labels(m)[0] as label,m.name as name")

+ 60 - 5
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -371,7 +371,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
     }
 
     /**
-     * 获取化验和辅检
+     * 获取化验和辅检,体征结果
      * @param searchData
      * @return
      */
@@ -414,20 +414,24 @@ public class KnowledgeServiceImpl implements KnowledgeService {
             }
         }
         logger.info("界面诊断为: " + webDiagList);
-        Map<String, LinkedHashSet<String>> weblisPacs = null;
-        Map<String, LinkedHashSet<String>> neo4jlisPacs = null;
-        Map<String, LinkedHashSet<String>> biglisPacs = null;
+        Map<String, LinkedHashSet<String>> weblisPacs = null,webVital = null;
+        Map<String, LinkedHashSet<String>> neo4jlisPacs = null,neo4jVital = null;
+        Map<String, LinkedHashSet<String>> biglisPacs = null,bigVital = null;
         if (webDiagList != null && webDiagList.size() > 0) {
             weblisPacs = processLisPacs(webDiagList);
+            webVital = processVital(webDiagList);
         }
         if (neo4jDiagList != null && neo4jDiagList.size() > 0) {
             neo4jlisPacs = processLisPacs(neo4jDiagList);
+            neo4jVital = processVital(neo4jDiagList);
         }
         if (bigdataDiagList != null && bigdataDiagList.size() > 0) {
             biglisPacs = processLisPacs(bigdataDiagList);
+            bigVital = processVital(bigdataDiagList);
         }
         Set<String> lis = new LinkedHashSet<>();
         Set<String> pacs = new LinkedHashSet<>();
+        Set<String> vitalReultSet = new LinkedHashSet<>();
         Set<String> webLis = null;
         Set<String> webPacs = null;
         Set<String> neoLis = null;
@@ -446,6 +450,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
             if(webPacs != null){
                 pacs.addAll(webPacs);
             }
+            vitalReultSet.addAll(webVital.get("VITAL_RESULT"));
         }
         if(neo4jlisPacs != null){
             neoLis = neo4jlisPacs.get("LIS");
@@ -456,6 +461,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
             if(neoPacs != null){
                 pacs.addAll(neoPacs);
             }
+            vitalReultSet.addAll(neo4jVital.get("VITAL_RESULT"));
         }
         if(biglisPacs != null){
             bigLis = biglisPacs.get("LIS");
@@ -466,11 +472,14 @@ public class KnowledgeServiceImpl implements KnowledgeService {
             if(bigPacs != null){
                 pacs.addAll(bigPacs);
             }
+            vitalReultSet.addAll(bigVital.get("VITAL_RESULT"));
         }
         logger.info("推出的合并lis为: " + lis);
         logger.info("推出的合并pacs为: " + pacs);
+        logger.info("推出的合并体征结果为: " + vitalReultSet);
         ArrayList<FeatureRate> lisFeature = new ArrayList<>();
         ArrayList<FeatureRate> pacsFeature = new ArrayList<>();
+        ArrayList<FeatureRate> vitalFeature = new ArrayList<>();
         if (lis != null && lis.size() > 0 && featureList.contains("4")) {
             List<String> newLis = new ArrayList<>();
             if(lis.size()>searchData.getLength()){
@@ -489,14 +498,42 @@ public class KnowledgeServiceImpl implements KnowledgeService {
             }
         }
         if (pacs != null && pacs.size() > 0 && featureList.contains("5")) {
-            for (String p : pacs) {
+            List<String> newPacs = new ArrayList<>();
+            if(pacs.size()>searchData.getLength()){
+                for (String l:pacs) {
+                    if(newPacs.size()<searchData.getLength()){
+                        newPacs.add(l);
+                    }
+                }
+            }else {
+                newPacs.addAll(pacs);
+            }
+            for (String p : newPacs) {
                 FeatureRate featureRate = new FeatureRate();
                 featureRate.setFeatureName(p);
                 pacsFeature.add(featureRate);
             }
         }
+        if(vitalReultSet.size() > 0){
+            List<String> newVitalRes = new ArrayList<>();
+            if(vitalReultSet.size()>searchData.getLength()){
+                for (String l:vitalReultSet) {
+                    if(newVitalRes.size()<searchData.getLength()){
+                        newVitalRes.add(l);
+                    }
+                }
+            }else {
+                newVitalRes.addAll(vitalReultSet);
+            }
+            for (String p : newVitalRes) {
+                FeatureRate featureRate = new FeatureRate();
+                featureRate.setFeatureName(p);
+                vitalFeature.add(featureRate);
+            }
+        }
         lisPacsFeature.put("lisList", lisFeature);
         lisPacsFeature.put("pacsList", pacsFeature);
+        lisPacsFeature.put("vitalResultList",vitalFeature);
 
         return lisPacsFeature;
     }
@@ -520,6 +557,24 @@ public class KnowledgeServiceImpl implements KnowledgeService {
         return fildInNumber;
     }
 
+    /**
+     * 查询体征
+     * @param webDiagList
+     * @return
+     */
+    public Map<String, LinkedHashSet<String>> processVital(List<String> webDiagList) {
+        Map<String, LinkedHashSet<String>> vitalMap = new HashMap<>();
+        LinkedHashSet<String> vitalResultArray = new LinkedHashSet<>();//体征结果
+        List<Map<String, Object>> vitalList = baseNodeRepository.getVitalList(webDiagList);
+        if (vitalList != null && vitalList.size() > 0) {
+            for (Map<String, Object> f : vitalList) {
+                String name = f.get("name").toString();
+                vitalResultArray.add(name);
+            }
+        }
+        vitalMap.put("VITAL_RESULT", vitalResultArray);
+        return vitalMap;
+    }
     /**
      * 根据内容推出不良反应集合
      *

+ 2 - 0
graphdb/src/main/java/org/diagbot/web/KnowledgeController.java

@@ -155,8 +155,10 @@ public class KnowledgeController {
         Map<String, List<FeatureRate>> lisPacs = knowledgeService.getLisPacs(searchData);
         List<FeatureRate> lisList = lisPacs.get("lisList");
         List<FeatureRate> pacsList = lisPacs.get("pacsList");
+        List<FeatureRate> vitalResultList = lisPacs.get("vitalResultList");
         responseData.setLabs(lisList);
         responseData.setPacs(pacsList);
+        responseData.setVitals(vitalResultList);
         kk.setData(responseData);
         return kk;
     }

+ 33 - 2
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -1,5 +1,6 @@
 package org.diagbot.push.controller;
 
+import org.apache.commons.lang3.StringUtils;
 import org.diagbot.bigdata.work.AlgorithmCore;
 import org.diagbot.common.javabean.Drugs;
 import org.diagbot.common.javabean.Filnlly;
@@ -8,6 +9,7 @@ import org.diagbot.common.javabean.Medicition;
 import org.diagbot.common.work.FeatureRate;
 import org.diagbot.common.work.ResponseData;
 import org.diagbot.common.work.SearchData;
+import org.diagbot.graph.util.CacheUtil;
 import org.diagbot.graphWeb.work.DiseaseCalculate;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
@@ -120,8 +122,10 @@ public class AlgorithmController extends BaseController {
         Response<ResponseData> response = new Response();
         AlgorithmCore core = new AlgorithmCore();
         ResponseData bigDataResponseData = core.algorithm(request, searchData);
+        Map<String, String> vitalCache = CacheUtil.getVitalCache();
         LisPacsCalculate lisPacsCalculate = new LisPacsCalculate();
-
+        String[] featureArray = StringUtils.split(searchData.getFeatureType(), ",");
+        List<String> featureList = Arrays.asList(featureArray);
         GraphCalculate graphCalculate = new GraphCalculate();
         ResponseData graphResponseData = graphCalculate.calculate(request, searchData);
         if (graphResponseData.getDis().size() > 0) {
@@ -175,13 +179,40 @@ public class AlgorithmController extends BaseController {
         //知识图谱直接替换大数据中的检验检查数据
 //        if(searchData.getDiag() !=null || searchData.getPushDiags() != null){
         graphResponseData = lisPacsCalculate.getLisPacs(request, searchData);
+        List<FeatureRate> vitals = graphResponseData.getVitals();
+        if(featureList.contains("42")){
+            bigDataResponseData.setVitals(this.getVital(vitalCache,vitals));
+
+        }
+        if(featureList.contains("3")){
+            bigDataResponseData.setVitals(vitals);
+        }
         bigDataResponseData.setLabs(graphResponseData.getLabs());
         bigDataResponseData.setPacs(graphResponseData.getPacs());
 //        }
         response.setData(bigDataResponseData);
         return response;
     }
-
+    public List<FeatureRate> getVital(Map<String, String> vitalCache,List<FeatureRate> vitals){
+        Set<String> vitalSet = new LinkedHashSet<>();
+        List<FeatureRate> vitalList = new ArrayList<>();
+        if(vitals != null){
+            for (FeatureRate f:vitals) {
+                String s = vitalCache.get(f.getFeatureName());
+                if(StringUtils.isNotEmpty(s)){
+                    vitalSet.add(s);
+                }
+            }
+        }
+        if(vitalSet != null){
+            for (String vi:vitalSet) {
+                FeatureRate featureRate= new FeatureRate();
+                featureRate.setFeatureName(vi);
+                vitalList.add(featureRate);
+            }
+        }
+        return vitalList;
+    }
     public Response<ResponseData> algorithm(HttpServletRequest request, SearchData searchData) throws Exception {
         Response<ResponseData> response = new Response();