Переглянути джерело

推送化验检查代码迁移

kongwz 6 роки тому
батько
коміт
d0c4c17064

+ 0 - 5
graph-web/src/main/java/org/diagbot/graphWeb/work/HighRiskCalculate.java

@@ -17,20 +17,15 @@ public class HighRiskCalculate {
     public Response<GdbResponse> calculateHighRisk(HttpServletRequest request, SearchData searchData) throws Exception {
         GdbResponse responseData = new GdbResponse();
         Response<GdbResponse> objectResponse = new Response<>();
-
         PropertiesUtil propertiesUtil = new PropertiesUtil("url.properties");
         //调用图谱API
         HttpApi<Response> api = new HttpApi<Response>();
         // 根据疾病信息获取高危属性
         Response highRiskResponse = api.doPost(propertiesUtil.getProperty("highrisk.http.url"), searchData,
                 Response.class);
-
         Map data = (Map<String, Map>)highRiskResponse.getData();
-
         responseData.setStatus(data.get("status").toString());
         responseData.setResult((Map<String,String>)data.get("result"));
-
-
         objectResponse.setData(responseData);
         return objectResponse;
     }

+ 26 - 0
graph-web/src/main/java/org/diagbot/graphWeb/work/LisPacsCalculate.java

@@ -0,0 +1,26 @@
+package org.diagbot.graphWeb.work;
+
+import org.diagbot.common.work.FeatureRate;
+import org.diagbot.common.work.ResponseData;
+import org.diagbot.common.work.SearchData;
+import org.diagbot.pub.api.Response;
+import org.diagbot.pub.utils.PropertiesUtil;
+import org.diagbot.pub.utils.http.HttpApi;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+public class LisPacsCalculate {
+    public Response<ResponseData> getLisPacs(HttpServletRequest request, SearchData searchData) throws Exception {
+        Response<ResponseData> objectResponse = new Response<ResponseData>();
+        ResponseData responseData = new ResponseData();
+        PropertiesUtil propertiesUtil = new PropertiesUtil("url.properties");
+        //调用图谱API
+        HttpApi<Response> api = new HttpApi<>();
+        Response lisPacsResponse = api.doPost(propertiesUtil.getProperty("lisPacs.http.url"), searchData,
+                Response.class);
+
+        return lisPacsResponse;
+    }
+}

+ 2 - 1
graph-web/src/main/resources/url.properties

@@ -1,2 +1,3 @@
-highrisk.http.url=http://192.168.2.234:8080/knowledge/getHighRisk
+highrisk.http.url=http://192.168.3.112:8080/knowledge/getHighRisk
+lisPacs.http.url=http://192.168.3.112:8080/knowledge/getLisPacs
 #highrisk.http.url=http://192.168.3.9:8080/knowledge/getHighRisk

+ 0 - 6
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -1315,27 +1315,21 @@ public class Neo4jAPI {
             List<String> lisArray = new ArrayList<>();
             List<String> pacsArray = new ArrayList<>();
             query = serchLisPacs.replace("diseaseNmae", diseaseList.toString());
-            System.out.println(query);
             result = session.run(query);
             while (result.hasNext()) {
                 Record next = result.next();
                 String lei = next.get("lei").toString().replaceAll("\"", "");
                 String name = next.get("n").toString().replaceAll("\"", "");
-                String subLis = next.get("lr").toString().replaceAll("\"", "");
                 if ("LIS".equals(lei)) {
                     lisArray.add(name);
                 } else if ("PACS".equals(lei)) {
                     pacsArray.add(name);
                 }
             }
-
-            //            lisPacsMap.put("LIS", processList(lisList));
-            //            lisPacsMap.put("PACS", processList(pacsList));
             lisPacsMap1.put("LIS", processList(lisArray));
             lisPacsMap1.put("PACS", processList(pacsArray));
         } catch (Exception e) {
             e.printStackTrace();
-
         } finally {
             CloseSession(session);
             return lisPacsMap1;

+ 5 - 0
graphdb/src/main/java/org/diagbot/repository/BaseNodeRepository.java

@@ -21,4 +21,9 @@ 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 LIS PACS
+    @Query("match (d:Disease)-[r1:推荐]->(m) where d.name in {0} return  labels(m)[0] as label,m.name as name")
+    List<Map<String,Object>> getLisPacsList(List diagList);
+
 }

+ 4 - 3
graphdb/src/main/java/org/diagbot/service/KnowledgeService.java

@@ -5,6 +5,8 @@ import org.diagbot.entity.node.Symptom;
 import org.diagbot.vo.*;
 import org.diagbot.entity.node.Disease;
 import org.diagbot.entity.node.base.BaseNode;
+import org.diagbot.vo.domain.FeatureRate;
+import org.diagbot.vo.domain.SearchData;
 
 import java.util.List;
 import java.util.Map;
@@ -35,12 +37,11 @@ public interface KnowledgeService {
     // 获取所有节点
     List<Map<String, Object>> getAllNode();
 
-    // 获取高危疾病列表
-    List<Map<String, Object>> findHighRiskDisease(QueryVo queryVo);
-
     // 获取高危疾病列表
     Map<String, Object> getHighRiskDisease(SearchData searchData);
 
+    Map<String,List<FeatureRate>> getLisPacs(SearchData searchData);
+
     // 获取推荐项目
     List<Map<String, Object>> getRecommendItem(QueryVo queryVo);
 

+ 117 - 11
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -1,6 +1,5 @@
 package org.diagbot.service.impl;
 
-import org.apache.commons.collections4.IterableUtils;
 import org.diagbot.entity.node.LIS;
 import org.diagbot.entity.node.Symptom;
 import org.diagbot.mapper.KnowledgeMapper;
@@ -10,6 +9,8 @@ import org.diagbot.entity.node.Disease;
 import org.diagbot.entity.node.base.BaseNode;
 import org.apache.commons.collections4.IteratorUtils;
 import org.diagbot.repository.*;
+import org.diagbot.vo.domain.FeatureRate;
+import org.diagbot.vo.domain.SearchData;
 import org.neo4j.driver.v1.types.Node;
 import org.neo4j.driver.v1.types.Path;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,7 +20,6 @@ import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 
 @Service
@@ -173,30 +173,106 @@ public class KnowledgeServiceImpl implements KnowledgeService {
         return ndlist;
     }
 
-    @Override
-    public List<Map<String, Object>> findHighRiskDisease(QueryVo queryVo) {
-        List<Map<String, Object>> hrlist = diseaseRepository.findHighRiskDisease(queryVo.getDiseaselist());
-        return hrlist;
-    }
-
     @Override
     public Map<String, Object> getHighRiskDisease(SearchData searchData) {
         String diag = searchData.getDiag();
         String[] diseaseArray = diag.split(",|,|、");
         List<String> diseaseList = Arrays.asList(diseaseArray);
-
         Map<String, Object> map = new HashMap<>();
         List<Map<String, Object>> list = baseNodeRepository.getHighRisk(diseaseList);
-
         for (Map hrmap:list) {
             String name = hrmap.get("name").toString();
             String risk = hrmap.get("risk").toString();
             map.put(name, risk);
         }
-
         return map;
     }
 
+    @Override
+    public Map<String, List<FeatureRate>> getLisPacs(SearchData searchData) {
+        Map<String, List<FeatureRate>> lisPacsFeature = new HashMap<>();
+        String webDiag = searchData.getDiag();
+        List<String> webDiagList = Arrays.asList(webDiag.split(",|,|、"));
+        List<FeatureRate> bigdataDiagFeature = searchData.getPushDiags();
+        List<String> bigdataDiagList =new LinkedList<>();
+        if(bigdataDiagFeature.size()>0){
+            for (FeatureRate fe:bigdataDiagFeature) {
+                if("neo4j".equals(fe.getRate())){
+                    bigdataDiagList.add(fe.getFeatureName());
+                }else {
+                    bigdataDiagList.add(fe.getFeatureName());
+                }
+            }
+        }
+        for (String web: webDiagList ) {
+            for (int i=0;i<bigdataDiagList.size();i++ ) {
+                if(bigdataDiagList.get(i).equals(web)){
+                    bigdataDiagList.remove(bigdataDiagList.get(i));
+                }
+            }
+        }
+        Map<String, Set<String>> weblisPacs =null;
+        Map<String, Set<String>> biglisPacs =null;
+        if(webDiagList !=null && webDiagList.size()>0){
+            weblisPacs = processLisPacs(webDiagList);
+        }
+        if(bigdataDiagList !=null && bigdataDiagList.size()>0){
+            biglisPacs = processLisPacs(bigdataDiagList);
+        }
+        Set<String> lis =null;
+        Set<String> pacs =null;
+        //如果界面有诊断
+        if(weblisPacs !=null && weblisPacs.values().size()>0){
+            lis = weblisPacs.get("LIS");
+            pacs = weblisPacs.get("PACS");
+            if(biglisPacs !=null && biglisPacs.values().size()>0){
+                Set<String> bl = biglisPacs.get("LIS");
+                Set<String>  bp= biglisPacs.get("PACS");
+                lis.addAll(bl);
+                pacs.addAll(bp);
+            }
+        }else {
+            lis = biglisPacs.get("LIS");
+            pacs = biglisPacs.get("PACS");
+        }
+        ArrayList<FeatureRate> lisFeature = new ArrayList<>();
+        ArrayList<FeatureRate> pacsFeature = new ArrayList<>();
+        for (String l:lis) {
+            FeatureRate featureRate = new FeatureRate();
+            featureRate.setFeatureName(l);
+            lisFeature.add(featureRate);
+        }
+        for (String p:pacs) {
+            FeatureRate featureRate = new FeatureRate();
+            featureRate.setFeatureName(p);
+            pacsFeature.add(featureRate);
+        }
+        lisPacsFeature.put("lisList",lisFeature);
+        lisPacsFeature.put("pacsList",pacsFeature);
+        return lisPacsFeature;
+    }
+
+    public Map<String, Set<String>> processLisPacs(List<String> webDiagList) {
+        Map<String, Set<String>> lisPacsMap = new HashMap<>();
+        List<String> lisArray = new ArrayList<>();
+        List<String> pacsArray = new ArrayList<>();
+        List<Map<String, Object>> lisPacsList = baseNodeRepository.getLisPacsList(webDiagList);
+        if(lisPacsList !=null && lisPacsList.size()>0){
+            for (Map<String, Object> f:lisPacsList) {
+                String label = f.get("label").toString();
+                String name = f.get("name").toString();
+                if("LIS".equals(label)){
+                    lisArray.add(name);
+                }else if("PACS".equals(label)){
+                    pacsArray.add(name);
+                }
+            }
+        }
+        lisPacsMap.put("LIS",processList(lisArray));
+        lisPacsMap.put("PACS",processList(pacsArray));
+        return lisPacsMap;
+    }
+
     @Override
     public List<Map<String, Object>> getRecommendItem(QueryVo queryVo) {
         List<Map<String, Object>> llist = relationRepository.getRecommendItem(queryVo.getDiseaselist());
@@ -273,4 +349,34 @@ public class KnowledgeServiceImpl implements KnowledgeService {
         return path;
     }
 
+    /**
+     * 根据出现次数排序,去重
+     * @param list
+     * @return
+     */
+    public Set<String> processList(List<String> list) {
+        Set<String> resultSet = new LinkedHashSet<>();
+        Map<String, Integer> featuerInt = new HashMap<String, Integer>();
+        for (String d : list) {
+            if (featuerInt.containsKey(d)) {
+                featuerInt.put(d, featuerInt.get(d) + 1);
+            } else {
+                featuerInt.put(d, 1);
+            }
+        }
+        List<Map.Entry<String, Integer>> reslist = new ArrayList<Map.Entry<String, Integer>>(featuerInt.entrySet());
+        Collections.sort(reslist, new Comparator<Map.Entry<String, Integer>>() {
+            @Override
+            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
+                return o2.getValue().compareTo(o1.getValue());
+            }
+        });
+        for (Map.Entry<String, Integer> f : reslist
+                ) {
+            //排好序的set
+            resultSet.add(f.getKey());
+        }
+        return resultSet;
+    }
+
 }

+ 11 - 0
graphdb/src/main/java/org/diagbot/vo/domain/Detail.java

@@ -0,0 +1,11 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Detail {
+    private String name;
+    private Integer value;//0-未选中,1-选中
+}

+ 14 - 0
graphdb/src/main/java/org/diagbot/vo/domain/Drugs.java

@@ -0,0 +1,14 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.LinkedList;
+@Getter
+@Setter
+public class Drugs {
+    private String bigdrugsName;//大药类名
+    private String subdrugsName;//小药类名
+    private Integer drugsForbidden;//药类的忌用和慎用
+    private LinkedList<Medicition> medicitionsList;
+}

+ 1 - 1
graphdb/src/main/java/org/diagbot/vo/FeatureRate.java

@@ -1,4 +1,4 @@
-package org.diagbot.vo;
+package org.diagbot.vo.domain;
 
 import lombok.Getter;
 import lombok.Setter;

+ 13 - 0
graphdb/src/main/java/org/diagbot/vo/domain/Filnlly.java

@@ -0,0 +1,13 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+@Getter
+@Setter
+public class Filnlly {
+    private List<Indicators> adverseEvent;
+    private ArrayList<Drugs> treatment;
+}

+ 1 - 1
graphdb/src/main/java/org/diagbot/vo/GdbResponse.java

@@ -1,4 +1,4 @@
-package org.diagbot.vo;
+package org.diagbot.vo.domain;
 import lombok.Getter;
 import lombok.Setter;
 import java.util.HashMap;

+ 14 - 0
graphdb/src/main/java/org/diagbot/vo/domain/Indicators.java

@@ -0,0 +1,14 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.diagbot.vo.domain.Detail;
+
+import java.util.List;
+@Getter
+@Setter
+public class Indicators {
+    private String name;
+    private Integer controlType;//控件类型:1-单选,2-多选
+    private List<Detail> details;
+}

+ 13 - 0
graphdb/src/main/java/org/diagbot/vo/domain/Medicition.java

@@ -0,0 +1,13 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Medicition {
+    private String medicitionName;//药名
+    private String rate;//使用率
+    private Integer isShow;//0不展示,1展示
+    private Integer forbidden;// 0:正常,1:慎用,2:禁忌"
+}

+ 1 - 1
graphdb/src/main/java/org/diagbot/vo/Response.java

@@ -1,4 +1,4 @@
-package org.diagbot.vo;
+package org.diagbot.vo.domain;
 
 import lombok.Getter;
 import lombok.Setter;

+ 24 - 0
graphdb/src/main/java/org/diagbot/vo/domain/ResponseData.java

@@ -0,0 +1,24 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@Getter
+@Setter
+public class ResponseData {
+    private String participleSymptom = "";
+
+    private List<FeatureRate> symptom = new ArrayList<>(10);
+    private List<FeatureRate> vitals = new ArrayList<>(10);
+    private List<FeatureRate> dis = new ArrayList<>(10);
+    private List<FeatureRate> labs = new ArrayList<>(10);
+    private List<FeatureRate> pacs = new ArrayList<>(10);
+    private List<FeatureRate> history = new ArrayList<>(10);
+
+    private Map<String, Filnlly> treat = new HashMap<>();
+    private List<FeatureRate> graphWords = new ArrayList<>(10);
+}

+ 2 - 1
graphdb/src/main/java/org/diagbot/vo/SearchData.java

@@ -1,7 +1,8 @@
-package org.diagbot.vo;
+package org.diagbot.vo.domain;
 
 import lombok.Getter;
 import lombok.Setter;
+import org.diagbot.vo.LisDetail;
 
 import java.util.ArrayList;
 import java.util.HashMap;

+ 16 - 10
graphdb/src/main/java/org/diagbot/web/KnowledgeController.java

@@ -6,6 +6,7 @@ import org.diagbot.entity.node.Disease;
 import org.diagbot.entity.node.Symptom;
 import org.diagbot.entity.node.base.BaseNode;
 import org.diagbot.service.KnowledgeService;
+import org.diagbot.vo.domain.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -132,15 +133,6 @@ public class KnowledgeController {
         return knowledgeService.getAllNode();
     }
 
-
-    /**
-     * 获取高危疾病列表
-     **/
-    @RequestMapping("/getHighRiskDisease")
-    public List<Map<String, Object>> getHighRiskDisease(@Valid @RequestBody QueryVo queryVo) {
-        return knowledgeService.findHighRiskDisease(queryVo);
-    }
-
     /**
      * 获取高危疾病列表
      */
@@ -150,10 +142,24 @@ public class KnowledgeController {
         GdbResponse gdbResponse = new GdbResponse();
         gdbResponse.setResult(knowledgeService.getHighRiskDisease(searchData));
         resp.setData(gdbResponse);
-
         return resp;
     }
 
+    /**
+     * 推送LIS和PACS
+     */
+    @RequestMapping("/getLisPacs")
+    public Response<ResponseData> getLisPacs(@Valid @RequestBody SearchData searchData){
+        Response<ResponseData> kk = new Response<>();
+        ResponseData responseData = new ResponseData();
+        Map<String, List<FeatureRate>> lisPacs = knowledgeService.getLisPacs(searchData);
+        List<FeatureRate> lisList = lisPacs.get("lisList");
+        List<FeatureRate> pacsList = lisPacs.get("pacsList");
+        responseData.setLabs(lisList);
+        responseData.setPacs(pacsList);
+        kk.setData(responseData);
+        return kk;
+    }
     /**
      * 给定疾病,获取推荐的化验或辅检项目
      */

+ 4 - 1
push-web/src/main/java/org/diagbot/push/controller/GraphController.java

@@ -7,6 +7,7 @@ import org.diagbot.graph.jdbc.DriverManager;
 import org.diagbot.graph.jdbc.Neo4jAPI;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.HighRiskCalculate;
+import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.graphWeb.work.ScaleCalculate;
 import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
@@ -76,7 +77,9 @@ public class GraphController extends BaseController {
         GraphCalculate graphCalculate = new GraphCalculate();
         ResponseData responseData = graphCalculate.getLisPacs(request, searchData);
         response.setData(responseData);
-        return response;
+        LisPacsCalculate lisPacsCalculate = new LisPacsCalculate();
+        Response<ResponseData> lisPacs = lisPacsCalculate.getLisPacs(request, searchData);
+        return lisPacs;
     }
 
     @RequestMapping(value = "/scale", method = RequestMethod.POST)