فهرست منبع

232图谱诊断测试

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

+ 22 - 0
graph/src/main/java/org/diagbot/graph/Diagnose/DiagnoseMain.java

@@ -0,0 +1,22 @@
+package org.diagbot.graph.Diagnose;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 处理诊断的入口类
+ */
+public class DiagnoseMain {
+    public static void main(String[] args) throws Exception {
+        List<String> quezhenDiagno = new ArrayList<>();
+        Map<String, String> diagnose = new DiagnoseProcess().getDiagnose("近端指间关节炎","足关节炎","对称性关节肿胀","晨僵≥30分钟","类风湿因子阳性","抗CCP抗体阳性","侵袭性骨破坏");
+        for (Map.Entry<String,String> disease:diagnose.entrySet()
+             ) {
+            if("确诊".equals(disease.getValue())){
+                quezhenDiagno.add(disease.getKey());
+            }
+        }
+        System.out.println(quezhenDiagno);
+    }
+}

+ 70 - 0
graph/src/main/java/org/diagbot/graph/Diagnose/DiagnoseProcess.java

@@ -0,0 +1,70 @@
+package org.diagbot.graph.Diagnose;
+
+import org.diagbot.graph.jdbc.DriverManager;
+import org.diagbot.pub.utils.PropertiesUtil;
+import org.neo4j.driver.v1.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DiagnoseProcess {
+    PropertiesUtil propertiesUtil = new PropertiesUtil("bolt.properties");
+    protected Map<String,String> getDiagnose(String ...filds) throws Exception {
+        Map<String,String> quezhenDiagnose = new HashMap<>();
+        List<String> startList = new ArrayList<>();
+        List<String> newList = new ArrayList<>();
+        for (String fild:filds) {
+            startList.add("\""+fild+"\"");
+        }
+        String query = "";
+        StatementResult run =null;
+        //获取driver和session
+        Driver driver = DriverManager.newDrive("192.168.2.232","neo4j","root");
+        Session session = driver.session(AccessMode.READ);
+        //第一步查找近义词.化验或辅检项目
+        String searchJinyici = propertiesUtil.getProperty("searchJinyici");
+        String fildList = searchJinyici.replace("fildList", startList.toString());
+        query = fildList;
+        System.out.println(query);
+        run = session.run(query);
+        while (run.hasNext()){
+            Record next = run.next();
+            String c = next.get("zi").toString();
+            String d = next.get("fu").toString();
+            startList.remove(c);
+            startList.add(d);
+        }
+        System.out.println(startList);
+        newList.addAll(startList);
+        //第二步查找能推诊断
+        while (newList.size()>0){
+            query = propertiesUtil.getProperty("searchCondition").replace("newList",newList.toString()).replace("fildList",startList.toString());
+            run = session.run(query);
+            newList.clear();
+            while (run.hasNext()){
+                Record record = run.next();
+                String condition = record.get("condition").toString();
+                String jundgement = record.get("jundgement").toString();
+                String label = record.get("label").toString();
+                if ("TRUE".equals(jundgement)) {
+                    newList.add(condition);
+                    startList.add(condition);
+                }
+            }
+        }
+        //第三步查找确诊
+        query = propertiesUtil.getProperty("searchQuezhen").replace("fildList",startList.toString());
+        System.out.println(query);
+        run = session.run(query);
+        while (run.hasNext()){
+            Record next = run.next();
+            String quezhenName = next.get("name").toString().replace("\"","");
+            quezhenDiagnose.put(quezhenName,"确诊");
+        }
+        session.close();
+        driver.close();
+        return quezhenDiagnose;
+    }
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 2 - 1
graph/src/main/java/org/diagbot/graph/encryptionNeo4j/ReadNeo4jData2Neo4j.java


+ 1 - 1
graph/src/main/java/org/diagbot/graph/jdbc/DriverManager.java

@@ -21,7 +21,7 @@ public class DriverManager {
     public static Driver newDrive() throws Exception{
         if (driver == null) {
 //            driver = GraphDatabase.driver("bolt://192.168.3.112:7687", AuthTokens.basic("neo4j", "123456"),
-            driver = GraphDatabase.driver(propertiesUtil.getProperty("bolt.uri"), AuthTokens.basic(propertiesUtil.getProperty("bolt.user"), propertiesUtil.getProperty("bolt.passwd")),
+            driver = GraphDatabase.driver(propertiesUtil.getProperty("bolt232.uri"), AuthTokens.basic(propertiesUtil.getProperty("bolt232.user"), propertiesUtil.getProperty("bolt232.passwd")),
                     Config.build().withMaxConnectionLifetime(ConnLifeTime, TimeUnit.MINUTES)
                             .withMaxTransactionRetryTime(TransRetryTime, TimeUnit.SECONDS)
                             .withMaxConnectionPoolSize(ConnPoolSize)

+ 45 - 8
graph/src/main/resources/bolt.properties

@@ -19,16 +19,53 @@ bolt112.uri=bolt://192.168.3.112
 bolt112.user=neo4j
 bolt112.passwd=123456
 
-sql1=with "+newList+" as data unwind data as row\n \
-  match (l)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
-  where l.name= row\n \
-  with m,"+fildList+" as data unwind data as row\n \
-  match (n)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
-  where n.name= row\n \
-  return m.name as condition, count(distinct r)>=m.path as jundgement, labels(m)[0] as label
+#\u63A8\u786E\u8BCA\u5904\u7406sql
+#\u67E5\u627E\u8FD1\u4E49\u8BCD\u548C\u5316\u9A8C\u548C\u8F85\u68C0\u9879\u76EE
+
+#searchJinyici=with fildList as data  unwind data as  fild \n \
+#match(d:Disease)-[R1:\u63A8\u8350]->(h)-[r:\u7ED3\u679C]->(l) \n \
+#where l.name=fild \n \
+#return l.name as zi,labels(l)[0] as jin,h.name as fu,labels(h)[0] as da \n \
+#union \n \
+#with fildList as data  unwind data as  fild  \n \
+#match(l)-[r:\u8FD1\u4E49\u8BCD]->(h) \n \
+#where l.name=fild \n \
+#return l.name as zi,labels(l)[0] as jin,h.name as fu,labels(h)[0] as da
+
+searchJinyici=with fildList as data  unwind data as  fild  \n \
+match(l)-[r:\u8FD1\u4E49\u8BCD]->(h) \n \
+where l.name=fild \n \
+return l.name as zi,labels(l)[0] as jin,h.name as fu,labels(h)[0] as da
+#\u67E5\u627E\u80FD\u63A8\u51FA\u8BCA\u65AD\u4F9D\u636E\u7684\u8BCD
+searchCondition=with newList as data unwind data as row\n \
+match (l)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
+where l.name= row\n \
+with m,fildList as data unwind data as row\n \
+match (n)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
+where n.name= row\n \
+return m.name as condition, count(distinct r)>=m.path as jundgement, labels(m)[0] as label
+#\u67E5\u627E\u786E\u8BCA\u7684\u8BED\u53E5
+searchQuezhen=with fildList  as data unwind data as row\n \
+match (n)-[r:\u786E\u8BCA]->(m)\n \
+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\u4E00\u4E9B\u8BCD\u662F\u5426\u5728\u56FE\u8C31\u4E2D
 searchWords=match(d) where d.name in fildList return distinct d.name as name
 #\u6839\u636E\u75BE\u75C5\u67E5\u627E\u76F8\u5E94\u7684Lis Pacs
 serchLisPacs=match (d:Disease)-[r1:\u63A8\u8350]->(m)\n \
-where d.name in diseaseNmae return distinct d.name as name,labels(m)[0] as lei,m.name as n
+where d.name in diseaseNmae return distinct d.name as name,labels(m)[0] as lei,m.name as n
+
+#\u66F4\u65B0\u8BCA\u65AD\u4F9D\u636E\u7684path
+updateConditionPath=match (n:Condition)<-[:\u8BCA\u65AD\u4F9D\u636E]-(m) \n \
+          with n,\n \
+          case \n \
+          when n.relation="\u6216" then 1 \n \
+          when n.relation="\u4E14" then count(distinct m) \n \
+          when n.relation="\u4EFB\u4E00" then 1 \n \
+          when n.relation="\u4EFB\u4E8C" then 2 \n \
+          when n.relation="\u4EFB\u4E09" then 3 \n \
+          when n.relation="\u4EFB\u56DB" then 4 \n\
+          else 100 end as a \n \
+          set n.path=a