Pārlūkot izejas kodu

添加过滤方法

kongwz 5 gadi atpakaļ
vecāks
revīzija
2989f52c5b

+ 15 - 0
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -171,7 +171,22 @@ public class GraphCalculate {
         System.out.println("Total takes: " + (System.currentTimeMillis()-starttime)/1000d + 's');
         return responseData;
     }
+//    诊断过滤
+    public void filterDis(List<FeatureRate> graphFeatureRates,String sex,Integer age) throws Exception {
+        if(neo4jAPI == null){
+            neo4jAPI = new Neo4jAPI(DriverManager.newDrive());
+        }
+        List<String> disList = new ArrayList<>();
+        if(graphFeatureRates != null && graphFeatureRates.size()>0){
+            for (FeatureRate f:graphFeatureRates) {
+                disList.add("\""+f.getFeatureName()+"\"");
+            }
+        }
+//        第一步先过滤性别和年龄
+        Set<String> filterSexAgeList = neo4jAPI.filterDisFromSexAge(disList,sex,age);
+
 
+    }
     /**
      * 返回LIS,PACS
      *

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

@@ -2819,4 +2819,37 @@ public class Neo4jAPI {
             return diaglist;
         }
     }
+    /**
+     * 根据年龄和性别排除的疾病
+     */
+    public Set<String> filterDisFromSexAge(List<String> dis,String sexIn,Integer ageIn){
+        Set<String> filterDisList = new HashSet<>();
+        Session session = null;
+        try {
+            session = driver.session(AccessMode.READ);
+            String query = "match(d:Disease) where d.name in "+dis+" return d.name as dis,d.sex as sex,d.minAge as minAge,d.maxAge as maxAge";
+            StatementResult dlist = session.run(query);
+            while (dlist.hasNext()) {
+                Record rec = dlist.next();
+                String disName = rec.get("dis").toString().replace("\"", "");
+                String sex = rec.get("sex").toString();
+                int minAge = rec.get("minAge").asInt();
+                int maxAge = rec.get("maxAge").asInt();
+                if("1".equals(sex) || "2".equals(sex)){
+                    if(!sexIn.equals(sex)){
+                        filterDisList.add(disName);
+                    }
+                }
+                if(ageIn < minAge || ageIn >maxAge){
+                    filterDisList.add(disName);
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        } finally {
+            CloseSession(session);
+            return filterDisList;
+        }
+
+    }
 }

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

@@ -142,6 +142,8 @@ public class AlgorithmController extends BaseController {
             }
             List<FeatureRate> graphFeatureRates = graphResponseData.getDis();
             graphFeatureRates.addAll(disFeatureRates);
+            //把所有的诊断拿出来经过过滤层过滤
+
             //将需要排除的诊断从列表中删除
             List<FeatureRate> updateFeatureRates = new ArrayList<>();
             List<String> removeDis = graphResponseData.getExcludeDiag();