Преглед изворни кода

把LIS,PACS整合到推送中(更新)

kongwz пре 6 година
родитељ
комит
918e024022

+ 9 - 1
graph-web/src/main/java/org/diagbot/graphWeb/controller/GraphController.java

@@ -35,6 +35,14 @@ public class GraphController {
         Response<GdbResponse> gdbResponseResponse = highRiskCalculate.calculateHighRisk(request, searchData);
         return gdbResponseResponse;
     }
-
+    @RequestMapping(value = "/lisPacs", method = RequestMethod.POST)
+    @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);
+        response.setData(responseData);
+        return response;
+    }
 }
 

+ 42 - 10
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -11,10 +11,7 @@ import org.diagbot.graph.jdbc.DriverManager;
 import org.diagbot.graph.jdbc.Neo4jAPI;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 public class GraphCalculate {
     public ResponseData calculate(HttpServletRequest request, SearchData searchData) throws Exception {
@@ -58,18 +55,53 @@ public class GraphCalculate {
             featureRates.add(featureRate);
         }
 
+        String webDiag = searchData.getDiag();
         //走治疗
-        if(searchData.getDiag().trim()!=null){
-            String diag = searchData.getDiag();
-            Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(diag, String.join(",", inputList));
+        if(webDiag.trim()!=null && Arrays.asList(searchData.getFeatureTypes()).contains('8')){
+            Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(webDiag, String.join(",", inputList));
             responseData.setTreat(mulDiseaseTreat);
-            Map<String, List<FeatureRate>> lisPacs = neo4jAPI.getLisPacs(diag);
-            responseData.setLabs(lisPacs.get("LIS"));
-            responseData.setPacs(lisPacs.get("PACS"));
         }
+
         responseData.setGraphWords(graphWordfeatureRates);
         responseData.setDis(featureRates);
         responseData.setInputs(searchData.getInputs());
         return responseData;
     }
+
+    /**
+     * 返回LIS,PACS
+     * @param searchData
+     */
+    public ResponseData getLisPacs(HttpServletRequest request,SearchData searchData) throws Exception {
+        ResponseData responseData = new ResponseData();
+        Neo4jAPI neo4jAPI = new Neo4jAPI(DriverManager.newDrive());
+        String webDiag = searchData.getDiag();
+        List<String> webDiagList = Arrays.asList(webDiag.split(",|,|、"));
+        List<String> bigdataDiagList = searchData.getPushDiags();
+        for (String web: webDiagList ) {
+            for (String big: bigdataDiagList ) {
+                if(big.equals(web)){
+                    bigdataDiagList.remove(big);
+                }
+            }
+        }
+        Map<String, Set<FeatureRate>> weblisPacs = neo4jAPI.getLisPacs(webDiagList);
+        Map<String, Set<FeatureRate>> biglisPacs = neo4jAPI.getLisPacs(bigdataDiagList);
+        Set<FeatureRate> lis =null;
+        Set<FeatureRate> pacs =null;
+        //如果界面有诊断
+        if(webDiagList.size()>0){
+            lis = weblisPacs.get("LIS");
+            lis.addAll(biglisPacs.get("LIS"));
+            pacs = weblisPacs.get("PACS");
+            pacs.addAll(biglisPacs.get("PACS"));
+
+        }else {
+            lis=biglisPacs.get("LIS");
+            pacs=biglisPacs.get("PACS");
+        }
+        responseData.setLabs(new ArrayList<FeatureRate>(lis));
+        responseData.setPacs(new ArrayList<FeatureRate>(pacs));
+        return responseData;
+    }
 }

+ 34 - 8
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -1238,19 +1238,18 @@ public class Neo4jAPI {
     }
     /**
      * 反推LIS,PACS
-     * @param diseaseName
+     * @param diseases
      * @return
      */
-    public Map<String,List<FeatureRate>> getLisPacs(String diseaseName){
+    public Map<String,Set<FeatureRate>> getLisPacs(List<String> diseases){
         Session session = null;
         StatementResult result =null;
         String serchLisPacs = propertiesUtil.getProperty("serchLisPacs");
         String query = null;
-        Map<String,List<FeatureRate>> lisPacsMap = new HashMap<>();
-        String[] diseaseArray = diseaseName.split(",|,|、");
+        Map<String,Set<FeatureRate>> lisPacsMap = new HashMap<>();
         List<String> diseaseList = new ArrayList<>();//诊断数组
-        for (int i = 0;i<diseaseArray.length;i++) {
-            diseaseList.add("\""+diseaseArray[i]+"\"");
+        for (String dis:diseases) {
+            diseaseList.add("\""+dis+"\"");
         }
         try {
                 session = driver.session(AccessMode.WRITE);
@@ -1275,8 +1274,9 @@ public class Neo4jAPI {
                         }
                     }
                 }
-            lisPacsMap.put("LIS",lisList);
-            lisPacsMap.put("PACS",pacsList);
+
+            lisPacsMap.put("LIS",processList(lisList));
+            lisPacsMap.put("PACS",processList(pacsList));
         }catch (Exception e){
             e.printStackTrace();
 
@@ -1285,6 +1285,32 @@ public class Neo4jAPI {
             return lisPacsMap;
         }
     }
+
+    public Set<FeatureRate> processList(List<FeatureRate> list) {
+        Set<FeatureRate> resultSet = new LinkedHashSet<>();
+        Map<FeatureRate,Integer> featuerInt = new HashMap<FeatureRate,Integer>();
+        for (FeatureRate d: list) {
+            if(featuerInt.containsKey(d)){
+                featuerInt.put(d,featuerInt.get(d)+1);
+            }else {
+                featuerInt.put(d,1);
+            }
+        }
+        List<Map.Entry<FeatureRate,Integer>> reslist = new ArrayList<Map.Entry<FeatureRate,Integer>>(featuerInt.entrySet());
+        Collections.sort(reslist, new Comparator<Map.Entry<FeatureRate, Integer>>() {
+            @Override
+            public int compare(Map.Entry<FeatureRate, Integer> o1, Map.Entry<FeatureRate, Integer> o2) {
+                return o2.getValue().compareTo(o1.getValue());
+            }
+        });
+        for (Map.Entry<FeatureRate,Integer> f:reslist
+                ) {
+            //排好序的set
+            resultSet.add(f.getKey());
+        }
+        return resultSet;
+    }
+
     /**
      * 化验结果文本化
      * @param lisres