Parcourir la source

图谱加密配置

kongwz il y a 6 ans
Parent
commit
e9305aaecd

+ 26 - 26
graph/src/main/java/org/diagbot/graph/encryptionNeo4j/ReadNeo4jData2Neo4j.java

@@ -33,7 +33,7 @@ public class ReadNeo4jData2Neo4j{
         //第一步把每个病的第一层表现和近义词写入图谱
         for (String diseaseName:diseaseList) {
             System.out.println(diseaseName);
-            nodeRelationUtil.AddNode(driver232,"Disease",diseaseName.replace("\"",""));//添加疾病
+            nodeRelationUtil.AddNode(driver232,1,"Disease",diseaseName.replace("\"",""));//添加疾病
             query="match p=(d:Disease)-[r1:表现]->(k)<-[r2:近义词]-(h) where d.name='"+diseaseName+"'\n" +
                     "return k.name as name,labels(k)[0] as type,h.name as gg,labels(h)[0] as tt";
             StatementResult result1 = session.run(query);
@@ -43,10 +43,10 @@ public class ReadNeo4jData2Neo4j{
                 String type = next.get("type").toString().replace("\"", "");
                 String gg = next.get("gg").toString().replace("\"", "");
                 String tt = next.get("tt").toString().replace("\"", "");
-                nodeRelationUtil.AddNode(driver232,tt,gg);//近义词
-                nodeRelationUtil.AddNode(driver232,type,name);//表现
-                nodeRelationUtil.addRelation(driver232,"Disease",diseaseName.replace("\"",""),"表现",type,name);
-                nodeRelationUtil.addRelation(driver232,tt,gg,"近义词",type,name);
+                nodeRelationUtil.AddNode(driver232,1,tt,gg);//近义词
+                nodeRelationUtil.AddNode(driver232,1,type,name);//表现
+                nodeRelationUtil.addRelation(driver232,1,"Disease",diseaseName.replace("\"",""),"表现",type,name);
+                nodeRelationUtil.addRelation(driver232,1,tt,gg,"近义词",type,name);
             }
             query="match (n)-[r:确诊]->(m{name:'"+diseaseName+"'})\n" +
                     "with distinct n,r\n" +
@@ -60,12 +60,12 @@ public class ReadNeo4jData2Neo4j{
                 String relationType = record.get("relationType").toString().replace("\"","");
                 //化验结果就可以直接确诊
                 if("LIS_Result".equals(label) && path == "NULL" && relationType == "NULL"){
-                    nodeRelationUtil.AddNode(driver232,"LIS_Result",nodeName);
-                    nodeRelationUtil.addRelation(driver232,"LIS_Result",nodeName,"确诊","Disease",diseaseName.replace("\"",""));
+                    nodeRelationUtil.AddNode(driver232,1,"LIS_Result",nodeName);
+                    nodeRelationUtil.addRelation(driver232,1,"LIS_Result",nodeName,"确诊","Disease",diseaseName.replace("\"",""));
                 }else if("Condition".equals(label)){ //有诊断依据才能够确诊
                     //添加确诊依据和确诊依据和疾病的关系
-                    nodeRelationUtil.AddNode(driver232,"Condition",nodeName,Integer.parseInt(path),relationType);
-                    nodeRelationUtil.addRelation(driver232,"Condition",nodeName,"确诊","Disease",diseaseName.replace("\"",""));
+                    nodeRelationUtil.AddNode(driver232,1,"Condition",nodeName,Integer.parseInt(path),relationType);
+                    nodeRelationUtil.addRelation(driver232,1,"Condition",nodeName,"确诊","Disease",diseaseName.replace("\"",""));
                     //查询推出确诊依据的诊断依据
                     query="match(v)-[r1:诊断依据]->(c:Condition)-[r2:确诊]->(d:Disease)\n" +
                             "where c.name='"+nodeName+"' and d.name='"+diseaseName+"'\n" +
@@ -79,9 +79,9 @@ public class ReadNeo4jData2Neo4j{
                        String patha = next.get("path").toString().replace("\"","");
                        String relationa = next.get("relation").toString().replace("\"","");
                        if("PACS_Result".equals(l) || "LIS_Result".equals(l)){
-                           nodeRelationUtil.AddNode(driver232,l,n);
-                           nodeRelationUtil.addRelation(driver232,l,n,"诊断依据","Condition",nodeName);
-                           nodeRelationUtil.addRelation(driver232,"Disease",diseaseName.replace("\"",""),"表现",l,n);
+                           nodeRelationUtil.AddNode(driver232,1,l,n);
+                           nodeRelationUtil.addRelation(driver232,1,l,n,"诊断依据","Condition",nodeName);
+                           nodeRelationUtil.addRelation(driver232,1,"Disease",diseaseName.replace("\"",""),"表现",l,n);
                            query="match(d:Disease)-[r1:推荐]->(k)-[r2:结果]->(f)\n" +
                                    "where d.name='"+diseaseName+"' and f.name='"+n+"'\n" +
                                    "return k.name as name,labels(k)[0] as jj,f.name as kk,labels(f)[0] as ll";
@@ -93,35 +93,35 @@ public class ReadNeo4jData2Neo4j{
                                String kk = next1.get("kk").toString().replace("\"","");
                                String ll = next1.get("ll").toString().replace("\"","");
                                if("PACS".equals(jj)){
-                                   nodeRelationUtil.AddNode(driver232,"PACS",name);
-                                   nodeRelationUtil.addRelation(driver232,"Disease",diseaseName.replace("\"",""),"推荐","PACS",name);
-                                   nodeRelationUtil.addRelation(driver232,"PACS",name,"结果",ll,kk);
+                                   nodeRelationUtil.AddNode(driver232,1,"PACS",name);
+                                   nodeRelationUtil.addRelation(driver232,1,"Disease",diseaseName.replace("\"",""),"推荐","PACS",name);
+                                   nodeRelationUtil.addRelation(driver232,1,"PACS",name,"结果",ll,kk);
                                }else if ("LIS".equals(jj)){
-                                   nodeRelationUtil.AddNode(driver232,"LIS",name);
-                                   nodeRelationUtil.addRelation(driver232,"Disease",diseaseName.replace("\"",""),"推荐","LIS",name);
-                                   nodeRelationUtil.addRelation(driver232,"LIS",name,"结果",ll,kk);
+                                   nodeRelationUtil.AddNode(driver232,1,"LIS",name);
+                                   nodeRelationUtil.addRelation(driver232,1,"Disease",diseaseName.replace("\"",""),"推荐","LIS",name);
+                                   nodeRelationUtil.addRelation(driver232,1,"LIS",name,"结果",ll,kk);
                                }
 
                            }
                        }else if("Condition".equals(l)){
-                           nodeRelationUtil.AddNode(driver232,"Condition",n,Integer.parseInt(patha),relationa);
-                           nodeRelationUtil.addRelation(driver232,"Condition",n,"诊断依据","Condition",quezhen);
+                           nodeRelationUtil.AddNode(driver232,1,"Condition",n,Integer.parseInt(patha),relationa);
+                           nodeRelationUtil.addRelation(driver232,1,"Condition",n,"诊断依据","Condition",quezhen);
                            query = "match(f)-[r1:诊断依据]->(c:Condition) where c.name='"+n+"' return f.name as name,labels(f)[0] as lab";
                            StatementResult fhsdjfh = session.run(query);
                            while (fhsdjfh.hasNext()){
                                Record nextRecord = fhsdjfh.next();
                                String name = nextRecord.get("name").toString().replaceAll("\"","");
                                String lab = nextRecord.get("lab").toString().replaceAll("\"", "");
-                               nodeRelationUtil.AddNode(driver232,lab,name);
-                               nodeRelationUtil.addRelation(driver232,"Disease",diseaseName.replace("\"",""),"表现",lab,name);
-                               nodeRelationUtil.addRelation(driver232,lab,name,"诊断依据","Condition",n);
+                               nodeRelationUtil.AddNode(driver232,1,lab,name);
+                               nodeRelationUtil.addRelation(driver232,1,"Disease",diseaseName.replace("\"",""),"表现",lab,name);
+                               nodeRelationUtil.addRelation(driver232,1,lab,name,"诊断依据","Condition",n);
 
                            }
 
                        }else {
-                           nodeRelationUtil.AddNode(driver232,l,n);
-                           nodeRelationUtil.addRelation(driver232,l,n,"诊断依据",label,nodeName);
-                           nodeRelationUtil.addRelation(driver232,"Disease",diseaseName.replace("\"",""),"表现",l,n);
+                           nodeRelationUtil.AddNode(driver232,1,l,n);
+                           nodeRelationUtil.addRelation(driver232,1,l,n,"诊断依据",label,nodeName);
+                           nodeRelationUtil.addRelation(driver232,1,"Disease",diseaseName.replace("\"",""),"表现",l,n);
 
                        }
                    }

+ 32 - 16
graph/src/main/java/org/diagbot/graph/util/NodeRelationUtil.java

@@ -40,19 +40,22 @@ public class NodeRelationUtil {
      * @param lbl 标签名字
      * @param val 节点名字
      */
-    public void AddNode(final Driver driver, final String lbl, final String val) {
-
+    public void AddNode(final Driver driver,final Integer sign, final String lbl, final String val) {
         Session session = null;
-
-
         try {
             session = driver.session(AccessMode.WRITE);
             session.writeTransaction(new TransactionWork<Integer>() {
                 @Override
                 public Integer execute(Transaction tx) {
-                    String query = "MERGE (n:" + DESUtil.encrypt(lbl,DESUtil.KEY_LANTONE) + "{name:$name}) RETURN n";
-
-                    int result = processNode(tx, query, "name", DESUtil.encrypt(val,DESUtil.KEY_LANTONE));
+                    String query =null;
+                    int result =0;
+                    if(sign == 0){
+                        query = "MERGE (n:" + lbl + "{name:$name}) RETURN n";
+                        result = processNode(tx, query, "name", val);
+                    }else if (sign == 1){
+                        query = "MERGE (n:" + DESUtil.encrypt(lbl,DESUtil.KEY_LANTONE) + "{name:$name}) RETURN n";
+                        result = processNode(tx, query, "name", DESUtil.encrypt(val,DESUtil.KEY_LANTONE));
+                    }
                     return result;
                 }
             });
@@ -93,18 +96,23 @@ public class NodeRelationUtil {
      * @param lbl 标签名字
      * @param val 节点名字
      */
-    public void AddNode(final Driver driver, final String lbl, final String val, final Integer path, final String relation) {
-
+    public void AddNode(final Driver driver,final Integer sign, final String lbl, final String val, final Integer path, final String relation) {
         Session session = null;
 
-
         try {
             session = driver.session(AccessMode.WRITE);
             session.writeTransaction(new TransactionWork<Integer>() {
                 @Override
                 public Integer execute(Transaction tx) {
-                    String query = "MERGE (n:" + DESUtil.encrypt(lbl,DESUtil.KEY_LANTONE) + "{name:$val,path:$path,relation:$relation}) RETURN n";
-                    int result = processNodepro(tx, query, "val", DESUtil.encrypt(val,DESUtil.KEY_LANTONE),"path",path,"relation",relation);
+                    String query =null;
+                    int result =0;
+                    if(sign == 0){
+                        query = "MERGE (n:" + lbl + "{name:$val,path:$path,relation:$relation}) RETURN n";
+                        result = processNodepro(tx, query, "val",val,"path",path,"relation",relation);
+                    }else if (sign == 1){
+                        query = "MERGE (n:" + DESUtil.encrypt(lbl,DESUtil.KEY_LANTONE) + "{name:$val,path:$path,relation:$relation}) RETURN n";
+                        result = processNodepro(tx, query, "val", DESUtil.encrypt(val,DESUtil.KEY_LANTONE),"path",path,"relation",relation);
+                    }
                     return result;
                 }
             });
@@ -122,7 +130,7 @@ public class NodeRelationUtil {
      * @param tolbl 标签类型
      * @param toval 节点名字
      */
-    public void addRelation(final Driver driver, final String fromlbl, final String fromval, final String relation, final String tolbl, final String toval){
+    public void addRelation(final Driver driver,final Integer sign, final String fromlbl, final String fromval, final String relation, final String tolbl, final String toval){
         Session session = null;
         //两个节点之间,有关系,先删除
         try {
@@ -140,9 +148,17 @@ public class NodeRelationUtil {
             session.writeTransaction(new TransactionWork<Integer>() {
                 @Override
                 public Integer execute(Transaction tx) {
-                    String query = "MATCH (e:" + DESUtil.encrypt(fromlbl,DESUtil.KEY_LANTONE) + "{name:$src}), (c:" + DESUtil.encrypt(tolbl,DESUtil.KEY_LANTONE) + "{name:$dest}) " +
-                            "MERGE (e)-[r:" + DESUtil.encrypt(relation,DESUtil.KEY_LANTONE) + "]->(c) RETURN e.name, type(r), c.name";
-                    int result = processRelation(tx, query, "src", DESUtil.encrypt(fromval,DESUtil.KEY_LANTONE), "dest", DESUtil.encrypt(toval,DESUtil.KEY_LANTONE));
+                    String query =null;
+                    int result =0;
+                    if(sign == 0){
+                        query = "MATCH (e:" + fromlbl + "{name:$src}), (c:" + tolbl + "{name:$dest}) " +
+                                "MERGE (e)-[r:" + relation + "]->(c) RETURN e.name, type(r), c.name";
+                        result = processRelation(tx, query, "src", fromval, "dest", toval);
+                    }else if (sign == 1){
+                        query = "MATCH (e:" + DESUtil.encrypt(fromlbl,DESUtil.KEY_LANTONE) + "{name:$src}), (c:" + DESUtil.encrypt(tolbl,DESUtil.KEY_LANTONE) + "{name:$dest}) " +
+                                "MERGE (e)-[r:" + DESUtil.encrypt(relation,DESUtil.KEY_LANTONE) + "]->(c) RETURN e.name, type(r), c.name";
+                        result = processRelation(tx, query, "src", DESUtil.encrypt(fromval,DESUtil.KEY_LANTONE), "dest", DESUtil.encrypt(toval,DESUtil.KEY_LANTONE));
+                    }
                     return result;
                 }
             });