فهرست منبع

鉴别诊断接口

kongwz 6 سال پیش
والد
کامیت
606e05bfe3

+ 9 - 0
common-service/src/main/java/org/diagbot/common/work/ResponseData.java

@@ -26,6 +26,15 @@ public class ResponseData {
     private List<MedicalIndication> medicalIndications;//量表和指标推送
 //    private Map<String,JSONObject> managementEvaluation; //管理评估
     private Map managementEvaluation;
+    private List<String> diffDiag;//鉴别诊断
+
+    public List<String> getDiffDiag() {
+        return diffDiag;
+    }
+
+    public void setDiffDiag(List<String> diffDiag) {
+        this.diffDiag = diffDiag;
+    }
 
     public Map getManagementEvaluation() {
         return managementEvaluation;

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

@@ -43,11 +43,12 @@ public class GraphCalculate {
         List<String> featureTypeList = Arrays.asList(featureTypes);
         logger.info("featureTypeList : " + featureTypeList);
         inputList.addAll(ss);
-        //        Driver driver = DriverManager.newDrive("192.168.2.232", "neo4j", "root");
         Neo4jAPI neo4jAPI = new Neo4jAPI(DriverManager.newDrive());
         logger.info("图谱开始推送诊断!!!!!!!!!!!");
+        String webDiag = searchData.getDiag();
+        logger.info("页面诊断为 :"+webDiag);
         //计算诊断
-        Map<String, String> condition = neo4jAPI.getCondition((String[]) inputList.toArray(new String[inputList.size()]));
+        Map<String, String> condition = neo4jAPI.getCondition((String[]) inputList.toArray(new String[inputList.size()]),webDiag );
         List<FeatureRate> featureRates = new ArrayList<>();
         for (Map.Entry<String, String> d : condition.entrySet()) {
             if (!"低血糖反应".equals(d.getKey()) && !"胃肠道不良反应".equals(d.getKey())) {
@@ -59,8 +60,6 @@ public class GraphCalculate {
                 featureRates.add(featureRate);
             }
         }
-        String webDiag = searchData.getDiag();
-        logger.info("页面诊断为 :"+webDiag);
         Set<String> diseaseSet = condition.keySet();
         logger.info("diseaseSet :" + diseaseSet);
         Integer diseaseType = searchData.getDisType();
@@ -77,6 +76,13 @@ public class GraphCalculate {
             }
         }
         logger.info("页面导入的所有化验项为 :" +lisSet);
+        //鉴别诊断
+        if(webDiag != null && webDiag.trim() != ""){
+            String[] webDiagSplits = webDiag.split(",");
+            String mainDiag = webDiagSplits[0];
+            List<String> differentialDiagnose = neo4jAPI.getDifferentialDiagnose(mainDiag);
+            responseData.setDiffDiag(differentialDiagnose);
+        }
         //走治疗
         if (webDiag.trim() != null && webDiag.trim() != "" && featureTypeList.contains("8")) {
             // 查找页面诊断里是否有不良反应

+ 27 - 11
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -646,7 +646,7 @@ public class Neo4jAPI {
      * @param keys
      * @return
      */
-    public Map<String, String> getCondition(String[] keys) {
+    public Map<String, String> getCondition(String[] keys,String webDiag) {
         Map<String, String> diseaseCondition = new LinkedHashMap<>();
         List<String> newList = new ArrayList<>();
         ArrayList<String> fildList = new ArrayList<>();
@@ -690,16 +690,6 @@ public class Neo4jAPI {
                         fildList.add(js);
                     }
                 }
-                //                else {
-                //                    fildList.add(fild);
-                //                    query = "match(l)-[r:近义词]->(h) where l.name="+fild+" return h.name as js";
-                //                    StatementResult run1 = session.run(query);
-                //                    while (run1.hasNext()){
-                //                        Record next = run1.next();
-                //                        String js = next.get("js").toString();
-                //                        fildList.add(js);
-                //                    }
-                //                }
             }
             newList.addAll(fildList);
             int i = 0;
@@ -755,6 +745,32 @@ public class Neo4jAPI {
         }
     }
 
+    public List<String> getDifferentialDiagnose(String mainDiag){
+        List<String> differentialDiagnoseList = new LinkedList<>();
+        Session session = null;
+        StatementResult result = null;
+        String query = "";
+        try {
+            session = driver.session(AccessMode.WRITE);
+            logger.info("session 为: " + session);
+            query = propertiesUtil.getProperty("searchDifferentialDiagnose").replace("mainDis", mainDiag);
+            result = session.run(query);
+            while (result.hasNext()) {
+                Record record = result.next();
+                List<Object> coll = record.get("coll").asList();
+                if(coll != null && coll.size()>0){
+                    for (Object o:coll) {
+                        differentialDiagnoseList.add(o.toString().replace("\"",""));
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            CloseSession(session);
+            return differentialDiagnoseList;
+        }
+    }
     /**
      * 不良反应推送
      */

+ 3 - 0
graph/src/main/resources/bolt.properties

@@ -42,6 +42,9 @@ where n.name=row\n \
 with distinct m,r\n \
 return m.name as name, labels(m)[0] as label,type(r) as relationType
 
+#\u67E5\u627E\u9274\u522B\u8BCA\u65AD\u7684\u8BED\u53E5
+searchDifferentialDiagnose=match(d:Disease)-[r:\u9274\u522B\u8BCA\u65AD]->(h) where d.name='mainDis' return collect(h.name) as coll
+
 #\u67E5\u627E\u6307\u6807\u7684\u8BED\u53E5
 searchIndication=with fildList  as data unwind data as row\n \
 match (n)-[r:\u786E\u8BCA|:\u62DF\u8BCA]->(m:Indicators)\n \

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

@@ -94,6 +94,7 @@ public class AlgorithmController extends BaseController {
             logger.info("合并知识图谱、大数据后推送的诊断信息....: " + fr.getFeatureName());
         }
         searchData.setPushDiags(pushDiags);
+        bigDataResponseData.setDiffDiag(graphResponseData.getDiffDiag());
 
         bigDataResponseData.setTreat(graphResponseData.getTreat());
         //量表和指标推送