|
@@ -63,7 +63,7 @@ public class Neo4jAPI {
|
|
|
|
|
|
while (Rset.hasNext()) {
|
|
|
rec = Rset.next();
|
|
|
-// System.out.println(rec);
|
|
|
+ // System.out.println(rec);
|
|
|
String lbl = rec.get(key).toString();
|
|
|
jobj.put(lbl.substring(1, lbl.length() - 1), rec.get(val).toString());
|
|
|
}
|
|
@@ -256,7 +256,7 @@ public class Neo4jAPI {
|
|
|
coll.put(name, (Object) jobj);
|
|
|
}
|
|
|
|
|
|
-// System.out.println(name + "\t" + lbl + "\t" + JSONUtils.toJSONString(Result));
|
|
|
+ // System.out.println(name + "\t" + lbl + "\t" + JSONUtils.toJSONString(Result));
|
|
|
}
|
|
|
|
|
|
for (String key : coll.keySet()) {
|
|
@@ -406,7 +406,7 @@ public class Neo4jAPI {
|
|
|
|
|
|
resmap.put(name, content);
|
|
|
res = JSONUtils.toJSONString(resmap);
|
|
|
-// System.out.println(res);
|
|
|
+ // System.out.println(res);
|
|
|
} catch (Exception ex) {
|
|
|
ex.printStackTrace();
|
|
|
} finally {
|
|
@@ -434,7 +434,7 @@ public class Neo4jAPI {
|
|
|
switch (option) {
|
|
|
case "-1":
|
|
|
RemovePath(start, end, oldrel);
|
|
|
-// Res = GetPath(name, label, "1");
|
|
|
+ // Res = GetPath(name, label, "1");
|
|
|
break;
|
|
|
case "0":
|
|
|
Res = GetPath(name, label, level);
|
|
@@ -894,7 +894,7 @@ public class Neo4jAPI {
|
|
|
for (Map.Entry<String, LinkedHashMap<String, String>> w : mapSortValueDa.entrySet()) {
|
|
|
int i = 0;
|
|
|
Drugs drugs1 = new Drugs();
|
|
|
-// drugs1.setDrugsName(w.getKey().trim());//药类
|
|
|
+ // drugs1.setDrugsName(w.getKey().trim());//药类
|
|
|
LinkedList<Medicition> medicitions = new LinkedList<>();
|
|
|
LinkedHashMap<String, String> value2 = w.getValue();
|
|
|
for (Map.Entry<String, String> d : value2.entrySet()) {
|
|
@@ -1002,7 +1002,7 @@ public class Neo4jAPI {
|
|
|
}
|
|
|
//药类型的大小类拼接
|
|
|
Map<String, String> shortLargeMap = new HashMap<>();
|
|
|
-// query="match (n:Disease{name:'"+diseaseName+"'})-[:推荐]->(d:Drugs)<-[:包含]-(m) return d.name as short,m.name as large";
|
|
|
+ // query="match (n:Disease{name:'"+diseaseName+"'})-[:推荐]->(d:Drugs)<-[:包含]-(m) return d.name as short,m.name as large";
|
|
|
query = "match (n:Disease{name:'" + diseaseName + "'})-[r0:推荐]->(m:Drugs)-[:包含]->(k:Drugs) return k.name as short,m.name as large";
|
|
|
result = tx.run(query);
|
|
|
while (result.hasNext()) {
|
|
@@ -1062,7 +1062,7 @@ public class Neo4jAPI {
|
|
|
int i = 0;
|
|
|
Drugs drugs = new Drugs();
|
|
|
String drugsName = w.getKey();//药类
|
|
|
-// Map<String, String> bigSubDrugs = new DrugsPattern().bigSubDrugs(drugsName);
|
|
|
+ // Map<String, String> bigSubDrugs = new DrugsPattern().bigSubDrugs(drugsName);
|
|
|
Map<String, String> bigSubDrugs = drugsPattern.bigSubDrugs(drugsName);
|
|
|
drugs.setBigdrugsName(bigSubDrugs.get("big"));
|
|
|
drugs.setSubdrugsName(bigSubDrugs.get("sub"));
|
|
@@ -1203,9 +1203,9 @@ public class Neo4jAPI {
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, List> getPushBack(String diseaseName, int sign) {
|
|
|
-// Map<String, String> labelMap = new HashMap<>();
|
|
|
+ // Map<String, String> labelMap = new HashMap<>();
|
|
|
HashMap<String, List> backMap = new HashMap<>();
|
|
|
- String[] label = {"Symptom", "Vital", "LIS", "PACS", "History"};
|
|
|
+ String[] label = { "Symptom", "Vital", "LIS", "PACS", "History" };
|
|
|
Session session = null;
|
|
|
StatementResult result = null;
|
|
|
String query = "";
|
|
@@ -1414,7 +1414,7 @@ public class Neo4jAPI {
|
|
|
"when m.判断1= \"大于等于\" and m.单位=row.units then row.value >= m.判断系数1\n" +
|
|
|
"when m.判断1= \"小于\" and m.单位=row.units then row.value < m.判断系数1\n" +
|
|
|
"when m.判断1= \"小于等于\" and m.单位=row.units then row.value <= m.判断系数1\n" +
|
|
|
-// "when m.单位<>row.unit and m.单位 is not null then '单位不同'\n" +
|
|
|
+ // "when m.单位<>row.unit and m.单位 is not null then '单位不同'\n" +
|
|
|
"else 'Unknown'\n" +
|
|
|
"end as judgement1,\n" +
|
|
|
"case\n" +
|
|
@@ -1430,7 +1430,7 @@ public class Neo4jAPI {
|
|
|
"when m.判断2 = \"大于等于\" and m.单位=row.units then row.value >= m.判断系数2\n" +
|
|
|
"when m.判断2 = \"小于\" and m.单位=row.units then row.value < m.判断系数2\n" +
|
|
|
"when m.判断2 = \"小于等于\" and m.单位=row.units then row.value <= m.判断系数2\n" +
|
|
|
-// "when m.单位<>row.unit and m.单位 is not null then '单位不同'\n" +
|
|
|
+ // "when m.单位<>row.unit and m.单位 is not null then '单位不同'\n" +
|
|
|
"else 'Unknown'\n" +
|
|
|
"end as judgement2\n" +
|
|
|
"return m.name as LIS_Result,\n" +
|
|
@@ -1438,13 +1438,13 @@ public class Neo4jAPI {
|
|
|
"when judgement1 = True and judgement2 = True then True\n" +
|
|
|
"when judgement1 = True and judgement2 = '未定义' then True\n" +
|
|
|
"when judgement2 = True and judgement1 = '未定义' then True\n" +
|
|
|
-// "when judgement2 = '单位不同' or judgement1 = '单位不同' then 'Unknown'\n" +
|
|
|
-// "when judgement2 = '未定义' and judgement1 = '未定义' then 'Unknown'\n" +
|
|
|
-// "when judgement2 is null or judgement1 is null then 'Unknown'\n" +
|
|
|
-// "when judgement2 = false or judgement1 = false then false\n" +
|
|
|
+ // "when judgement2 = '单位不同' or judgement1 = '单位不同' then 'Unknown'\n" +
|
|
|
+ // "when judgement2 = '未定义' and judgement1 = '未定义' then 'Unknown'\n" +
|
|
|
+ // "when judgement2 is null or judgement1 is null then 'Unknown'\n" +
|
|
|
+ // "when judgement2 = false or judgement1 = false then false\n" +
|
|
|
"else False end as judgement order by LIS_Result";
|
|
|
|
|
|
-// System.out.println(query);
|
|
|
+ // System.out.println(query);
|
|
|
|
|
|
StatementResult run = session.run(query);
|
|
|
while (run.hasNext()) {
|
|
@@ -1584,4 +1584,188 @@ public class Neo4jAPI {
|
|
|
}
|
|
|
return graphWordsList;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据是否需要计算调取相应返回量表的方法
|
|
|
+ *
|
|
|
+ * @param scaleName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, Object> getScale(String scaleName) {
|
|
|
+ Session session = driver.session(AccessMode.READ);
|
|
|
+ StatementResult Rset;
|
|
|
+ scaleName = scaleName.toUpperCase();
|
|
|
+ Map<String, Object> scale = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ String query = "match (m:Scale)-[r]->(n) WHERE m.name=~'.*" + scaleName + ".*' return m.type";
|
|
|
+ Rset = session.run(query);
|
|
|
+ String type = Rset.next().get("m.type").toString().replace("\"", "");
|
|
|
+ if ("NoCalc".equals(type)) {
|
|
|
+ scale = this.getScaleNoCalc(scaleName);
|
|
|
+ } else {
|
|
|
+ scale = this.getScaleCalc(scaleName);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ System.out.println("调量表方法时出了问题!");
|
|
|
+ } finally {
|
|
|
+ CloseSession(session);
|
|
|
+ return scale;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回带得分需要计算的量表
|
|
|
+ *
|
|
|
+ * @param scaleName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, Object> getScaleCalc(String scaleName) {
|
|
|
+ Session session = driver.session(AccessMode.READ);
|
|
|
+ StatementResult Rset1 = null;
|
|
|
+ StatementResult Rset2 = null;
|
|
|
+ Record rec;
|
|
|
+ scaleName = scaleName.toUpperCase();
|
|
|
+
|
|
|
+ //<年龄,<<=44,0>> 最外层
|
|
|
+ Map<String, Object> twoLevelItems = new LinkedHashMap<>();
|
|
|
+ //第二层
|
|
|
+ Map<String, Object> threeLevelItems = new LinkedHashMap<>();
|
|
|
+ //<<=44,0>
|
|
|
+ Map<Object, Object> itemOrIndex = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ String query1 = "match (m:Scale)-[r1]->(n1)-[r2]->(n2) WHERE m.name=~'.*" + scaleName + ".*' return n1.name,r1.score,n2.name," +
|
|
|
+ "r2.score,n2.type,r2.p order by n2.type,toInt(r2.p)";
|
|
|
+
|
|
|
+ String query2 = "match (m:Scale)-[r1]->(n1)-[r2]->(n2)-[r3]->(n3) WHERE m.name=~'.*" + scaleName + ".*' return n1.name,r1.score,n2.name," +
|
|
|
+ "r2.score,n3.name,r3.score,r3.p,n3.type order by n2.type,toInt(r2.p)";
|
|
|
+ writeLog(query1);
|
|
|
+ Rset1 = session.run(query1);
|
|
|
+ Rset2 = session.run(query2);
|
|
|
+ writeLog(query2);
|
|
|
+
|
|
|
+ String item = "";
|
|
|
+ String optionOrIndex = "";
|
|
|
+ String score1 = "";
|
|
|
+ String index = "";
|
|
|
+ String score2 = "";
|
|
|
+
|
|
|
+ while (Rset1.hasNext()) {
|
|
|
+ rec = Rset1.next();
|
|
|
+ item = rec.get("n1.name").toString().replace("\"", "");
|
|
|
+ optionOrIndex = rec.get("n2.name").toString().replace("\"", "");
|
|
|
+ score1 = rec.get("r2.score").toString().replace("\"", "");
|
|
|
+ if (!"NULL".equals(score1)) {
|
|
|
+ if (!threeLevelItems.containsKey(item)) {
|
|
|
+ itemOrIndex = new LinkedHashMap<>();
|
|
|
+ }
|
|
|
+ itemOrIndex.put(optionOrIndex, score1);
|
|
|
+ threeLevelItems.put(item, itemOrIndex);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ while (Rset2.hasNext()) {
|
|
|
+ rec = Rset2.next();
|
|
|
+ item = rec.get("n1.name").toString().replace("\"", "");
|
|
|
+ optionOrIndex = rec.get("n2.name").toString().replace("\"", "");
|
|
|
+ index = rec.get("n3.name").toString().replace("\"", "");
|
|
|
+ score2 = rec.get("r3.score").toString().replace("\"", "");
|
|
|
+
|
|
|
+ if (!threeLevelItems.containsKey(item)) {
|
|
|
+ itemOrIndex = new LinkedHashMap<>();
|
|
|
+ twoLevelItems = new LinkedHashMap<>();
|
|
|
+ }
|
|
|
+ if (!twoLevelItems.containsKey(optionOrIndex)) {
|
|
|
+ itemOrIndex = new LinkedHashMap<>();
|
|
|
+ }
|
|
|
+ itemOrIndex.put(index, score2);
|
|
|
+ twoLevelItems.put(optionOrIndex, itemOrIndex);
|
|
|
+ threeLevelItems.put(item, twoLevelItems);
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ System.out.println("返回带得分需要计算的量表时出了问题!---->getScaleCalc");
|
|
|
+ } finally {
|
|
|
+ CloseSession(session);
|
|
|
+ return threeLevelItems;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回不带得分不需要计算的量表
|
|
|
+ *
|
|
|
+ * @param scaleName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, Object> getScaleNoCalc(String scaleName) {
|
|
|
+ Session session = driver.session(AccessMode.READ);
|
|
|
+ StatementResult Rset1 = null;
|
|
|
+ StatementResult Rset2 = null;
|
|
|
+ Record rec;
|
|
|
+ scaleName = scaleName.toUpperCase();
|
|
|
+
|
|
|
+ Map<String, Object> fourLevelItems = new LinkedHashMap<>();
|
|
|
+ Map<String, Object> threeLevelItems = new LinkedHashMap<>();
|
|
|
+ Map<String, Object> twoLevelItems = new LinkedHashMap<>();
|
|
|
+ Map<Object, Object> firstLevelItems = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ String query1 = "match (m:Scale)-[r1]->(n1) where m.name=~'.*" + scaleName + ".*' " +
|
|
|
+ "return m.name,r1.grade,n1.name order by r1.grade,toInt(r1.p)";
|
|
|
+
|
|
|
+ String query2 = "match (m:Scale)-[r1]->(n1)-[r2]->(n2) where m.name=~'.*" + scaleName + ".*' " +
|
|
|
+ "return m.name,r1.grade,n1.name,r2.stage,n2.name order by r1.grade,r2.stage,toInt(r1.p)";
|
|
|
+ writeLog(query1);
|
|
|
+ Rset1 = session.run(query1);
|
|
|
+ Rset2 = session.run(query2);
|
|
|
+ writeLog(query2);
|
|
|
+
|
|
|
+ String scale = "";
|
|
|
+ String grade = "";
|
|
|
+ String gradeName = "";
|
|
|
+ String stage = "";
|
|
|
+ String stageName = "";
|
|
|
+
|
|
|
+ while (Rset1.hasNext()) {
|
|
|
+ rec = Rset1.next();
|
|
|
+ scale = rec.get("m.name").toString().replace("\"", "");
|
|
|
+ grade = rec.get("r1.grade").toString().replace("\"", "");
|
|
|
+ gradeName = rec.get("n1.name").toString().replace("\"", "");
|
|
|
+
|
|
|
+ firstLevelItems.put(gradeName, grade);
|
|
|
+ fourLevelItems.put(scale, firstLevelItems);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ while (Rset2.hasNext()) {
|
|
|
+ rec = Rset2.next();
|
|
|
+ scale = rec.get("m.name").toString().replace("\"", "");
|
|
|
+ grade = rec.get("r1.grade").toString().replace("\"", "");
|
|
|
+ gradeName = rec.get("n1.name").toString().replace("\"", "");
|
|
|
+ stage = rec.get("r2.stage").toString().replace("\"", "");
|
|
|
+ stageName = rec.get("n2.name").toString().replace("\"", "");
|
|
|
+
|
|
|
+ if (!threeLevelItems.containsKey(gradeName)) {
|
|
|
+ firstLevelItems = new LinkedHashMap<>();
|
|
|
+ twoLevelItems = new LinkedHashMap<>();
|
|
|
+ }
|
|
|
+ if (!twoLevelItems.containsKey(grade)) {
|
|
|
+ firstLevelItems = new LinkedHashMap<>();
|
|
|
+ }
|
|
|
+ firstLevelItems.put(stageName, stage);
|
|
|
+ twoLevelItems.put(grade, firstLevelItems);
|
|
|
+ threeLevelItems.put(gradeName, twoLevelItems);
|
|
|
+ fourLevelItems.put(scale, threeLevelItems);
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ System.out.println("返回不带得分不需要计算的量表出了问题!---->getScaleNoCalc");
|
|
|
+ } finally {
|
|
|
+ CloseSession(session);
|
|
|
+ return fourLevelItems;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|