|
@@ -72,7 +72,6 @@ public class Neo4jAPI {
|
|
}
|
|
}
|
|
finally {
|
|
finally {
|
|
CloseSession(session);
|
|
CloseSession(session);
|
|
-
|
|
|
|
return Res;
|
|
return Res;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -113,7 +112,6 @@ public class Neo4jAPI {
|
|
}
|
|
}
|
|
finally {
|
|
finally {
|
|
CloseSession(session);
|
|
CloseSession(session);
|
|
-
|
|
|
|
return Res;
|
|
return Res;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -275,7 +273,6 @@ public class Neo4jAPI {
|
|
}
|
|
}
|
|
finally {
|
|
finally {
|
|
CloseSession(session);
|
|
CloseSession(session);
|
|
-
|
|
|
|
return Res;
|
|
return Res;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -375,7 +372,6 @@ public class Neo4jAPI {
|
|
}
|
|
}
|
|
finally {
|
|
finally {
|
|
CloseSession(session);
|
|
CloseSession(session);
|
|
-
|
|
|
|
return Res;
|
|
return Res;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -562,7 +558,6 @@ public class Neo4jAPI {
|
|
}
|
|
}
|
|
finally {
|
|
finally {
|
|
CloseSession(session);
|
|
CloseSession(session);
|
|
-
|
|
|
|
return Res;
|
|
return Res;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -802,161 +797,7 @@ public class Neo4jAPI {
|
|
return conditionMap;
|
|
return conditionMap;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- /* *//**
|
|
|
|
- * 治疗查询
|
|
|
|
- * @param disease
|
|
|
|
- * @param filds
|
|
|
|
- * @return
|
|
|
|
- *//*
|
|
|
|
- public Map<String, String> GetTreat(String disease,String filds){
|
|
|
|
- Session session = null;
|
|
|
|
- Map<String, String> resultMap = new HashMap<>();
|
|
|
|
- try {
|
|
|
|
- session = driver.session(AccessMode.WRITE);
|
|
|
|
- session.writeTransaction(new TransactionWork<Integer>() {
|
|
|
|
- @Override
|
|
|
|
- public Integer execute(Transaction tx) {
|
|
|
|
- StatementResult result = null;
|
|
|
|
- String query = "";
|
|
|
|
- StringBuffer s1 = new StringBuffer();
|
|
|
|
- s1.append("match (d:Disease{name:'" + disease + "'})-[r0:推荐]->(m:Drugs)-[:包含]->(n:Medicine),(d)-[r1:推荐]->(n)");
|
|
|
|
- s1.append("\n");
|
|
|
|
- s1.append("return m.name as 类, r0.p as sort, n.name as 药物, r1.rate as a");
|
|
|
|
- s1.append("\n").append("union").append("\n");
|
|
|
|
- s1.append("match p=(d:Disease{name:'" + disease + "'})-[r0:推荐]->(m:Drugs)-[:包含]->(n:Medicine)");
|
|
|
|
- s1.append("\n");
|
|
|
|
- s1.append("where not (d)-[:推荐]->(n)").append("\n");
|
|
|
|
- s1.append("return m.name as 类, r0.p as sort, n.name as 药物, 0 as a");
|
|
|
|
- query = s1.toString();
|
|
|
|
- result = tx.run(query);
|
|
|
|
- HashMap<String, String> contentMap = new HashMap<>();
|
|
|
|
- HashMap<String, HashMap<String, String>> contentMap1 = new HashMap<>();
|
|
|
|
- while (result.hasNext()) {
|
|
|
|
- Record record = result.next();
|
|
|
|
- String[] splits = record.values().toString().split(",");
|
|
|
|
- String drugs = splits[0].replace("[", "").replace("\"", "");
|
|
|
|
- if (contentMap1.containsKey(drugs)) {
|
|
|
|
- HashMap<String, String> stringStringHashMap = contentMap1.get(drugs);
|
|
|
|
- stringStringHashMap.put(splits[2].replace("\"", ""), splits[3].replace("]", ""));
|
|
|
|
- contentMap1.put(drugs, stringStringHashMap);
|
|
|
|
- } else {
|
|
|
|
- HashMap<String, String> sa = new HashMap<>();
|
|
|
|
- sa.put(splits[2].replace("\"", ""), splits[3].replace("]", ""));
|
|
|
|
- contentMap1.put(drugs, sa);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
- List<String> drugTree = new ArrayList<>();
|
|
|
|
- query = "match (d:Disease{name:'" + disease + "'})-[r:推荐]->(s:Drugs) return s order by r.p";
|
|
|
|
- result = tx.run(query);
|
|
|
|
- while (result.hasNext()) {
|
|
|
|
- Record record = result.next();
|
|
|
|
- Node node = record.get(0).asNode();
|
|
|
|
- String coll = node.get("name").toString();
|
|
|
|
- drugTree.add(coll);
|
|
|
|
- }
|
|
|
|
- LinkedHashMap<String, HashMap<String, String>> contentSortMap1 = new LinkedHashMap<>();
|
|
|
|
- for (String drug : drugTree) {
|
|
|
|
- contentSortMap1.put(drug.replace("\"", ""), contentMap1.get(drug.replace("\"", "")));
|
|
|
|
- }
|
|
|
|
- //排序后的map
|
|
|
|
- LinkedHashMap<String, LinkedHashMap<String, String>> mapSortValue = new LinkedHashMap<>();
|
|
|
|
-
|
|
|
|
- for (Map.Entry<String, HashMap<String, String>> e : contentSortMap1.entrySet()
|
|
|
|
- ) {
|
|
|
|
- HashMap<String, String> value = e.getValue();
|
|
|
|
- mapSortValue.put(e.getKey(), mapSortByValue(value));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- HashMap<String, String> shortLargeMap = new HashMap<>();
|
|
|
|
- //大项查询
|
|
|
|
- query = "match (n:Disease{name:'" + disease + "'})-[:推荐]->(d:Drugs)<-[:包含]-(m) return d.name as short,m.name as large";
|
|
|
|
- result = tx.run(query);
|
|
|
|
- while (result.hasNext()) {
|
|
|
|
- Record record = result.next();
|
|
|
|
- String aShort = record.get("short").toString().replace("\"", "");
|
|
|
|
- String large = record.get("large").toString().replace("\"", "");
|
|
|
|
- shortLargeMap.put(aShort, large + "(" + aShort + ")");
|
|
|
|
- }
|
|
|
|
- LinkedHashMap<String, LinkedHashMap<String, String>> mapSortValueDa = new LinkedHashMap<>();
|
|
|
|
- for (Map.Entry<String, LinkedHashMap<String, String>> f : mapSortValue.entrySet()
|
|
|
|
- ) {
|
|
|
|
- String key = f.getKey();
|
|
|
|
- if (shortLargeMap.get(key) != null) {
|
|
|
|
- mapSortValueDa.put(shortLargeMap.get(key), mapSortValue.get(key));
|
|
|
|
- } else {
|
|
|
|
- mapSortValueDa.put(key, mapSortValue.get(key));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ArrayList<String> fildList = new ArrayList<>();
|
|
|
|
- String[] splits = filds.split(",");
|
|
|
|
- for (String fild : splits) {
|
|
|
|
- fildList.add("'" + fild + "'");
|
|
|
|
- }
|
|
|
|
- Map<String, String> medicationUseMap = new HashMap<>();//key:药名 value:禁忌(慎用)
|
|
|
|
- StringBuffer fildBuffer = new StringBuffer();
|
|
|
|
- fildBuffer.append("match (n:Disease{name:'" + disease + "'})-[:推荐]->(d)<-[r0:忌用]-(m)").append("\n");
|
|
|
|
- fildBuffer.append("where m.name in " + fildList + "").append("\n");
|
|
|
|
- fildBuffer.append("return d.name as ff,type(r0) as hh").append("\n").append("union\n");
|
|
|
|
- fildBuffer.append("match (n:Disease{name:'" + disease + "'})-[:推荐]->(d)<-[r0:慎用]-(m)\n");
|
|
|
|
- fildBuffer.append("where m.name in " + fildList + "").append("\n");
|
|
|
|
- fildBuffer.append("return d.name as ff,type(r0) as hh");
|
|
|
|
- query = fildBuffer.toString();
|
|
|
|
- result = tx.run(query);
|
|
|
|
- while (result.hasNext()) {
|
|
|
|
- Record next = result.next();
|
|
|
|
- String name = next.get("ff").toString().replace("\"", "");
|
|
|
|
- String type = next.get("hh").toString().replace("\"", "");
|
|
|
|
- medicationUseMap.put(name, type);
|
|
|
|
- }
|
|
|
|
- //大对象集合
|
|
|
|
- ArrayList<Drugs> drugs = new ArrayList<Drugs>();
|
|
|
|
- for (Map.Entry<String, LinkedHashMap<String, String>> w : mapSortValueDa.entrySet()) {
|
|
|
|
- Drugs drugs1 = new Drugs();
|
|
|
|
- drugs1.setDrugsName(w.getKey().trim());//药类
|
|
|
|
- LinkedList<Medicition> medicitions = new LinkedList<>();
|
|
|
|
- LinkedHashMap<String, String> value = w.getValue();
|
|
|
|
- for (Map.Entry<String, String> d : value.entrySet()) {
|
|
|
|
-// System.out.println(w.getKey()+" "+d.getKey()+" "+d.getValue());
|
|
|
|
- Medicition medicition = new Medicition();
|
|
|
|
- medicition.setMedicitionName(d.getKey().trim());//药名
|
|
|
|
- medicition.setRate(d.getValue().trim());//使用率
|
|
|
|
- if ("0".equals(d.getValue().trim())) {
|
|
|
|
- medicition.setIsShow(0);//不展示
|
|
|
|
- } else {
|
|
|
|
- medicition.setIsShow(1);//展示
|
|
|
|
- }
|
|
|
|
- if ("忌用".equals(medicationUseMap.get(d.getKey().trim()))) {
|
|
|
|
- medicition.setForbidden(2);
|
|
|
|
- } else if ("慎用".equals(medicationUseMap.get(d.getKey().trim()))) {
|
|
|
|
- medicition.setForbidden(1);
|
|
|
|
- } else {
|
|
|
|
- medicition.setForbidden(0);
|
|
|
|
- }
|
|
|
|
- medicitions.add(medicition);
|
|
|
|
- }
|
|
|
|
- drugs1.setMedicitionsList(medicitions);
|
|
|
|
- drugs.add(drugs1);
|
|
|
|
- }
|
|
|
|
- Filnlly filnlly = new Filnlly();
|
|
|
|
- filnlly.setTreatment(drugs);
|
|
|
|
-
|
|
|
|
- String s = JSON.toJSONString(filnlly);
|
|
|
|
- resultMap.put("des", s);
|
|
|
|
- return 1;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }catch (Exception e){
|
|
|
|
- e.printStackTrace();
|
|
|
|
- session.close();
|
|
|
|
- }
|
|
|
|
- finally {
|
|
|
|
- session.close();
|
|
|
|
- return resultMap;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-*/
|
|
|
|
/**
|
|
/**
|
|
* 多疾病下治疗方案
|
|
* 多疾病下治疗方案
|
|
* @param disease
|
|
* @param disease
|
|
@@ -997,63 +838,27 @@ public class Neo4jAPI {
|
|
String diseaseName = df.getKey();//疾病
|
|
String diseaseName = df.getKey();//疾病
|
|
ArrayList value = df.getValue();//其他条件
|
|
ArrayList value = df.getValue();//其他条件
|
|
StringBuffer s1 = new StringBuffer();
|
|
StringBuffer s1 = new StringBuffer();
|
|
- s1.append("match (d:Disease{name:'" + diseaseName + "'})-[r0:推荐]->(m:Drugs)-[:包含]->(n:Medicine),(d)-[r1:推荐]->(n)");
|
|
|
|
|
|
+ s1.append("match (d:Disease{name:'"+disease+"'})-[r0:推荐]->(m:Drugs)-[:包含]->(n:Medicine),(d)-[r1:推荐]->(n)");
|
|
s1.append("\n");
|
|
s1.append("\n");
|
|
- s1.append("return m.name as 类, r0.p as sort, n.name as 药物, r1.rate as a");
|
|
|
|
- s1.append("\n").append("union").append("\n");
|
|
|
|
- s1.append("match p=(d:Disease{name:'" + diseaseName + "'})-[r0:推荐]->(m:Drugs)-[:包含]->(n:Medicine)");
|
|
|
|
- s1.append("\n");
|
|
|
|
- s1.append("where not (d)-[:推荐]->(n)").append("\n");
|
|
|
|
- s1.append("return m.name as 类, r0.p as sort, n.name as 药物, 0 as a");
|
|
|
|
|
|
+ s1.append("where r0.p<6").append("\n");
|
|
|
|
+ s1.append("return m.name as 类, r0.p as sort, n.name as 药物, r1.rate as a order by sort , a desc");
|
|
query = s1.toString();
|
|
query = s1.toString();
|
|
result = tx.run(query);
|
|
result = tx.run(query);
|
|
- HashMap<String, String> contentMap = new HashMap<>();
|
|
|
|
- HashMap<String, HashMap<String, String>> contentMap1 = new HashMap<>();
|
|
|
|
|
|
+ LinkedHashMap<String, LinkedHashMap<String,String>> contentMap = new LinkedHashMap<>();
|
|
while (result.hasNext()) {
|
|
while (result.hasNext()) {
|
|
Record record = result.next();
|
|
Record record = result.next();
|
|
String[] splits = record.values().toString().split(",");
|
|
String[] splits = record.values().toString().split(",");
|
|
String drugs = splits[0].replace("[", "").replace("\"", "");
|
|
String drugs = splits[0].replace("[", "").replace("\"", "");
|
|
- if (contentMap1.containsKey(drugs)) {
|
|
|
|
- HashMap<String, String> stringStringHashMap = contentMap1.get(drugs);
|
|
|
|
|
|
+ if (contentMap.containsKey(drugs)) {
|
|
|
|
+ LinkedHashMap<String, String> stringStringHashMap = contentMap.get(drugs);
|
|
stringStringHashMap.put(splits[2].replace("\"", ""), splits[3].replace("]", ""));
|
|
stringStringHashMap.put(splits[2].replace("\"", ""), splits[3].replace("]", ""));
|
|
- contentMap1.put(drugs, stringStringHashMap);
|
|
|
|
|
|
+ contentMap.put(drugs, stringStringHashMap);
|
|
} else {
|
|
} else {
|
|
- HashMap<String, String> sa = new HashMap<>();
|
|
|
|
|
|
+ LinkedHashMap<String, String> sa = new LinkedHashMap<>();
|
|
sa.put(splits[2].replace("\"", ""), splits[3].replace("]", ""));
|
|
sa.put(splits[2].replace("\"", ""), splits[3].replace("]", ""));
|
|
- contentMap1.put(drugs, sa);
|
|
|
|
|
|
+ contentMap.put(drugs, sa);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- /** contentMap1存的数据结构
|
|
|
|
- * 支气管扩张剂 二羟丙茶碱 0.92
|
|
|
|
- * 支气管扩张剂 多索茶碱 0.94
|
|
|
|
- */
|
|
|
|
- List<String> drugTree = new ArrayList<>();
|
|
|
|
- query = "match (d:Disease{name:'" + diseaseName + "'})-[r:推荐]->(s:Drugs) return s order by r.p";
|
|
|
|
- result = tx.run(query);
|
|
|
|
- while (result.hasNext()) {
|
|
|
|
- Record record = result.next();
|
|
|
|
- Node node = record.get(0).asNode();
|
|
|
|
- String coll = node.get("name").toString();
|
|
|
|
- drugTree.add(coll);
|
|
|
|
- }
|
|
|
|
- LinkedHashMap<String, HashMap<String, String>> contentSortMap1 = new LinkedHashMap<>();
|
|
|
|
- for (String drug : drugTree) {
|
|
|
|
- contentSortMap1.put(drug.replace("\"", ""), contentMap1.get(drug.replace("\"", "")));
|
|
|
|
- }
|
|
|
|
- //排序后的map
|
|
|
|
- LinkedHashMap<String, LinkedHashMap<String, String>> mapSortValue = new LinkedHashMap<>();
|
|
|
|
-
|
|
|
|
- for (Map.Entry<String, HashMap<String, String>> e : contentSortMap1.entrySet()
|
|
|
|
- ) {
|
|
|
|
- HashMap<String, String> value1 = e.getValue();
|
|
|
|
- mapSortValue.put(e.getKey(), mapSortByValue(value1));
|
|
|
|
- }
|
|
|
|
- /**
|
|
|
|
- * mapSortValue是已经排好顺序的
|
|
|
|
- * 根除Hp 治疗 胶体果胶铋 0.51
|
|
|
|
- * 根除Hp 治疗 阿莫西林 0.5
|
|
|
|
- * 根除Hp 治疗 克拉霉素 0.32
|
|
|
|
- */
|
|
|
|
|
|
|
|
HashMap<String, String> shortLargeMap = new HashMap<>();
|
|
HashMap<String, String> shortLargeMap = new HashMap<>();
|
|
//大项查询
|
|
//大项查询
|
|
@@ -1066,13 +871,13 @@ public class Neo4jAPI {
|
|
shortLargeMap.put(aShort, large + "(" + aShort + ")");
|
|
shortLargeMap.put(aShort, large + "(" + aShort + ")");
|
|
}
|
|
}
|
|
LinkedHashMap<String, LinkedHashMap<String, String>> mapSortValueDa = new LinkedHashMap<>();
|
|
LinkedHashMap<String, LinkedHashMap<String, String>> mapSortValueDa = new LinkedHashMap<>();
|
|
- for (Map.Entry<String, LinkedHashMap<String, String>> f : mapSortValue.entrySet()
|
|
|
|
|
|
+ for (Map.Entry<String, LinkedHashMap<String, String>> f : contentMap.entrySet()
|
|
) {
|
|
) {
|
|
String key = f.getKey();
|
|
String key = f.getKey();
|
|
if (shortLargeMap.get(key) != null) {
|
|
if (shortLargeMap.get(key) != null) {
|
|
- mapSortValueDa.put(shortLargeMap.get(key), mapSortValue.get(key));
|
|
|
|
|
|
+ mapSortValueDa.put(shortLargeMap.get(key), contentMap.get(key));
|
|
} else {
|
|
} else {
|
|
- mapSortValueDa.put(key, mapSortValue.get(key));
|
|
|
|
|
|
+ mapSortValueDa.put(key, contentMap.get(key));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
@@ -1082,10 +887,10 @@ public class Neo4jAPI {
|
|
|
|
|
|
Map<String, String> medicationUseMap = new HashMap<>();//key:药名 value:禁忌(慎用)
|
|
Map<String, String> medicationUseMap = new HashMap<>();//key:药名 value:禁忌(慎用)
|
|
StringBuffer fildBuffer = new StringBuffer();
|
|
StringBuffer fildBuffer = new StringBuffer();
|
|
- fildBuffer.append("match (n:Disease{name:'" + diseaseName + "'})-[:推荐]->(d)<-[r0:忌用]-(m)").append("\n");
|
|
|
|
|
|
+ fildBuffer.append("match (n:Disease{name:'" + diseaseName + "'})-[:推荐]->(d)<-[r0:慎用]-(m)").append("\n");
|
|
fildBuffer.append("where m.name in " + value + "").append("\n");
|
|
fildBuffer.append("where m.name in " + value + "").append("\n");
|
|
fildBuffer.append("return d.name as ff,type(r0) as hh").append("\n").append("union\n");
|
|
fildBuffer.append("return d.name as ff,type(r0) as hh").append("\n").append("union\n");
|
|
- fildBuffer.append("match (n:Disease{name:'" + diseaseName + "'})-[:推荐]->(d)<-[r0:慎用]-(m)\n");
|
|
|
|
|
|
+ fildBuffer.append("match (n:Disease{name:'" + diseaseName + "'})-[:推荐]->(d)<-[r0:忌用]-(m)\n");
|
|
fildBuffer.append("where m.name in " + value + "").append("\n");
|
|
fildBuffer.append("where m.name in " + value + "").append("\n");
|
|
fildBuffer.append("return d.name as ff,type(r0) as hh");
|
|
fildBuffer.append("return d.name as ff,type(r0) as hh");
|
|
query = fildBuffer.toString();
|
|
query = fildBuffer.toString();
|
|
@@ -1099,6 +904,7 @@ public class Neo4jAPI {
|
|
//大对象集合
|
|
//大对象集合
|
|
ArrayList<Drugs> drugs = new ArrayList<Drugs>();
|
|
ArrayList<Drugs> drugs = new ArrayList<Drugs>();
|
|
for (Map.Entry<String, LinkedHashMap<String, String>> w : mapSortValueDa.entrySet()) {
|
|
for (Map.Entry<String, LinkedHashMap<String, String>> w : mapSortValueDa.entrySet()) {
|
|
|
|
+ int i = 0;
|
|
Drugs drugs1 = new Drugs();
|
|
Drugs drugs1 = new Drugs();
|
|
drugs1.setDrugsName(w.getKey().trim());//药类
|
|
drugs1.setDrugsName(w.getKey().trim());//药类
|
|
LinkedList<Medicition> medicitions = new LinkedList<>();
|
|
LinkedList<Medicition> medicitions = new LinkedList<>();
|
|
@@ -1108,10 +914,11 @@ public class Neo4jAPI {
|
|
Medicition medicition = new Medicition();
|
|
Medicition medicition = new Medicition();
|
|
medicition.setMedicitionName(d.getKey().trim());//药名
|
|
medicition.setMedicitionName(d.getKey().trim());//药名
|
|
medicition.setRate(nf.format(Double.parseDouble(d.getValue().trim())));//使用率
|
|
medicition.setRate(nf.format(Double.parseDouble(d.getValue().trim())));//使用率
|
|
- if ("0".equals(d.getValue().trim())) {
|
|
|
|
- medicition.setIsShow(0);//不展示
|
|
|
|
- } else {
|
|
|
|
|
|
+ i++;
|
|
|
|
+ if (i<2) {
|
|
medicition.setIsShow(1);//展示
|
|
medicition.setIsShow(1);//展示
|
|
|
|
+ } else {
|
|
|
|
+ medicition.setIsShow(0);//不展示
|
|
}
|
|
}
|
|
if ("忌用".equals(medicationUseMap.get(d.getKey().trim()))) {
|
|
if ("忌用".equals(medicationUseMap.get(d.getKey().trim()))) {
|
|
medicition.setForbidden(2);
|
|
medicition.setForbidden(2);
|
|
@@ -1334,7 +1141,6 @@ public class Neo4jAPI {
|
|
}
|
|
}
|
|
finally {
|
|
finally {
|
|
CloseSession(session);
|
|
CloseSession(session);
|
|
-
|
|
|
|
return reslist;
|
|
return reslist;
|
|
}
|
|
}
|
|
}
|
|
}
|