|
@@ -62,25 +62,17 @@ public class PushTreat {
|
|
|
List<String> allFilds = this.getAllFilds(webDiag, crisisDetails, inputList, ueSet);
|
|
|
|
|
|
// TODO: 2019/11/19 匹配规则用药,判断是否满足规则
|
|
|
- List<TreatDetail> treatDetailList_rule = this.ruleMedicaton(disName, webDiag, allFilds, driver);
|
|
|
- String name = treatDetailList_rule.get(0).getTitle().substring(0, treatDetailList_rule.get(0).getTitle().indexOf("治疗方案"));
|
|
|
- if(treatDetailList_rule.size() == 1 && disName.equals(name)){
|
|
|
- // TODO: 2019/11/28 匹配主症+其他+其他
|
|
|
-// List<TreatDetail> treatmentPlanList_otherrule = this.otherRuleMedicaton(disName, exculdDiagFilds, allFilds, driver);
|
|
|
-// treatmentPlanList = treatmentPlanList_otherrule;
|
|
|
-
|
|
|
- }else if(treatDetailList_rule.size() == 1 && !disName.equals(name)){
|
|
|
- treatmentPlanList =treatDetailList_rule;
|
|
|
- }else {
|
|
|
- treatmentPlanList = treatDetailList_rule;
|
|
|
- }
|
|
|
+ treatmentPlanList= this.ruleMedicaton(disName, webDiag, allFilds, driver);
|
|
|
+
|
|
|
// TODO: 2019/11/28 匹配主症+其他+其他
|
|
|
List<TreatDetail> treatmentPlanList_otherrule = this.otherRuleMedicaton(disName, exculdDiagFilds, allFilds, driver);
|
|
|
treatmentPlanList.addAll(treatmentPlanList_otherrule);
|
|
|
+
|
|
|
// TODO: 2019/11/19 规则不满足的情况下,返回主诊断的用药情况
|
|
|
if(treatmentPlanList.size() == 0){
|
|
|
treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
}
|
|
|
+
|
|
|
// TODO: 2019/11/21 处理合并症 例如高热
|
|
|
List<TreatDetail> treatDetailList = this.complicationMedicaton(inputList, driver, allFilds);
|
|
|
treatmentPlanList.addAll(treatDetailList);
|
|
@@ -94,6 +86,7 @@ public class PushTreat {
|
|
|
Map<String,Map<String,Object>> disDrugs = new HashMap<>();
|
|
|
Map<String, String> medicaton_ji = new HashMap<>();
|
|
|
Map<String, List<String>> medicatonMap = new HashMap<>();
|
|
|
+ Map<String,List<String>> condiTypedis = new HashMap<>();
|
|
|
Set<String> disSet = new HashSet<>();
|
|
|
List<String> filds = new ArrayList<>();
|
|
|
if(inputList.length>0){
|
|
@@ -112,14 +105,14 @@ public class PushTreat {
|
|
|
logger.info("规则用药,查询语句为:\n" + query);
|
|
|
StatementResult result = tx.run(query);
|
|
|
while (result.hasNext()) {
|
|
|
- searchDrugs(result, conditionDesign, disDrugs,disSet);
|
|
|
+ searchDrugs(condiTypedis,result, conditionDesign, disDrugs,disSet);
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
|
});
|
|
|
closeSession(session);
|
|
|
+ addColl(condiTypedis,disDrugs);
|
|
|
disTreatDetailList = this.processMedication_he(disDrugs, conditionDesign, allFilds, driver);
|
|
|
-
|
|
|
return disTreatDetailList;
|
|
|
}
|
|
|
/**
|
|
@@ -134,7 +127,7 @@ public class PushTreat {
|
|
|
|
|
|
List<Drugs> dList = new ArrayList<>();
|
|
|
Map<String, String> medicaton_ji = new HashMap<>();
|
|
|
- Map<String, List<String>> medicatonMap = new HashMap<>();
|
|
|
+ Map<String, List<String>> medicatonMap = new LinkedHashMap<>();
|
|
|
|
|
|
Session session = driver.session(AccessMode.WRITE);
|
|
|
session.writeTransaction(new TransactionWork<Integer>() {
|
|
@@ -169,6 +162,7 @@ public class PushTreat {
|
|
|
private List<TreatDetail> otherRuleMedicaton(String disName,List<String> excludeDiagFilds,List<String> allFilds,Driver driver){
|
|
|
Map<String,Integer> conditionDesign = new HashMap<>();
|
|
|
Map<String,Map<String,Object>> disDrugs = new HashMap<>();
|
|
|
+ Map<String,List<String>> condiTypedis = new HashMap<>();
|
|
|
Set<String> disSet = new HashSet<>();
|
|
|
excludeDiagFilds.add("'"+disName+"'");
|
|
|
Session session = driver.session(AccessMode.WRITE);
|
|
@@ -179,21 +173,15 @@ public class PushTreat {
|
|
|
logger.info("规则用药,查询语句为:\n" + query);
|
|
|
StatementResult result = tx.run(query);
|
|
|
while (result.hasNext()) {
|
|
|
- searchDrugs(result, conditionDesign, disDrugs,disSet);
|
|
|
+ searchDrugs(condiTypedis,result, conditionDesign, disDrugs,disSet);
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
|
});
|
|
|
closeSession(session);
|
|
|
+ addColl(condiTypedis,disDrugs);
|
|
|
List<TreatDetail> treatDetailList =new ArrayList<>();
|
|
|
-// if(!disSet.contains(disName)){
|
|
|
-// //规则不匹配,返回主诊断治疗方案
|
|
|
-// treatDetailList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
-// }else {
|
|
|
- treatDetailList = this.processMedication_otherrule(disName,disDrugs, conditionDesign, allFilds, driver);
|
|
|
-
|
|
|
-// }
|
|
|
-
|
|
|
+ treatDetailList = this.processMedication_otherrule(disName,disDrugs, conditionDesign, allFilds, driver);
|
|
|
return treatDetailList;
|
|
|
}
|
|
|
|
|
@@ -201,6 +189,7 @@ public class PushTreat {
|
|
|
private List<TreatDetail> ruleMedicaton(String disName,String webDiag,List<String> allFilds,Driver driver){
|
|
|
Map<String,Integer> conditionDesign = new HashMap<>();
|
|
|
Map<String,Map<String,Object>> disDrugs = new HashMap<>();
|
|
|
+ Map<String,List<String>> condiTypedis = new HashMap<>();
|
|
|
Set<String> disSet = new HashSet<>();
|
|
|
List<String> webDiagList = processWebDiag(disName,webDiag);
|
|
|
Session session = driver.session(AccessMode.WRITE);
|
|
@@ -208,30 +197,39 @@ public class PushTreat {
|
|
|
@Override
|
|
|
public Integer execute(Transaction tx) {
|
|
|
String query = propertiesUtil_treat.getProperty("medicationRule").replace("filds",webDiagList.toString());
|
|
|
-// String query = propertiesUtil_treat.getProperty("medicationRule").replace("filds",allFilds.toString());
|
|
|
logger.info("规则用药,查询语句为:\n" + query);
|
|
|
StatementResult result = tx.run(query);
|
|
|
while (result.hasNext()) {
|
|
|
- searchDrugs(result, conditionDesign, disDrugs,disSet);
|
|
|
+ searchDrugs(condiTypedis,result, conditionDesign, disDrugs,disSet);
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
|
});
|
|
|
closeSession(session);
|
|
|
+ addColl(condiTypedis,disDrugs);
|
|
|
List<TreatDetail> treatDetailList =new ArrayList<>();
|
|
|
- if(!disSet.contains(disName)){
|
|
|
- //规则不匹配,返回主诊断治疗方案
|
|
|
- treatDetailList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
- }else {
|
|
|
- treatDetailList = this.processMedication(disName,disDrugs, conditionDesign, allFilds, driver);
|
|
|
+ treatDetailList = this.processMedication(disName,disDrugs, conditionDesign, allFilds, driver);
|
|
|
+ return treatDetailList;
|
|
|
+ }
|
|
|
+ private void addColl(Map<String,List<String>> condiTypedis,Map<String,Map<String,Object>> disDrugs){
|
|
|
+ List<List<String>> collList = new ArrayList<>();
|
|
|
+ if(condiTypedis!= null &&condiTypedis.size()>0){
|
|
|
+ for (Map.Entry<String,List<String>> ctd:condiTypedis.entrySet()) {
|
|
|
+ if(disDrugs.containsKey(ctd.getKey().split("&")[1])){
|
|
|
+ Map<String, Object> objectMap = disDrugs.get(ctd.getKey().split("&")[1]);
|
|
|
+ List<String> value = ctd.getValue();
|
|
|
+ collList.add(value);
|
|
|
+ objectMap.put("coll",collList);
|
|
|
+ disDrugs.put(ctd.getKey().split("&")[1],objectMap);
|
|
|
+ }
|
|
|
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- return treatDetailList;
|
|
|
- }
|
|
|
|
|
|
- private void searchDrugs(StatementResult result, Map<String, Integer> conditionDesign, Map<String, Map<String, Object>> disDrugs,Set<String> disSet) {
|
|
|
- List<String> collection =null;
|
|
|
+ }
|
|
|
+ private void searchDrugs(Map<String,List<String>> condiTypedis,StatementResult result, Map<String, Integer> conditionDesign, Map<String, Map<String, Object>> disDrugs,Set<String> disSet) {
|
|
|
+ String collection =null;
|
|
|
int i=0;
|
|
|
Record next = result.next();
|
|
|
String name = next.get("name").toString().replace("\"", "");
|
|
@@ -242,38 +240,45 @@ public class PushTreat {
|
|
|
disSet.add(disName);
|
|
|
if(design >= i){
|
|
|
i = design;
|
|
|
- collection = (List) next.get("collection").asList();
|
|
|
+ collection = next.get("collection").toString().replace("\"", "");
|
|
|
}
|
|
|
conditionDesign.put(name,i);
|
|
|
+ String ncd =category+"&"+ name + "&" + disName;
|
|
|
+ if(condiTypedis.containsKey(ncd)){
|
|
|
+ List<String> list = condiTypedis.get(ncd);
|
|
|
+ list.add(collection);
|
|
|
+ condiTypedis.put(ncd,list);
|
|
|
+ }else {
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ list.add(collection);
|
|
|
+ condiTypedis.put(ncd,list);
|
|
|
+ }
|
|
|
+
|
|
|
if(!disDrugs.containsKey(name)){
|
|
|
Map<String, Object> designHashMap = new HashMap<>();
|
|
|
- List<String> pList = new ArrayList<>();
|
|
|
List<String> cateList = new ArrayList<>();
|
|
|
List<String> disList = new ArrayList<>();
|
|
|
- List<Object> collList = new ArrayList<>();
|
|
|
- pList.add(p);
|
|
|
- designHashMap.put("p",pList);
|
|
|
- cateList.add(category);
|
|
|
+ if(!cateList.contains(category)){
|
|
|
+ cateList.add(category);
|
|
|
+ }
|
|
|
designHashMap.put("cate",cateList);
|
|
|
- disList.add(disName);
|
|
|
+ if(!disList.contains(disName)){
|
|
|
+ disList.add(disName);
|
|
|
+ }
|
|
|
designHashMap.put("dis",disList);
|
|
|
- collList.add(collection);
|
|
|
- designHashMap.put("coll",collList);
|
|
|
disDrugs.put(name,designHashMap);
|
|
|
}else {
|
|
|
Map<String, Object> objectMap = disDrugs.get(name);
|
|
|
- List<String> p1 = (List<String>)objectMap.get("p");
|
|
|
- p1.add(p);
|
|
|
- objectMap.put("p",p1);
|
|
|
List<String> cate1 = (List<String>)objectMap.get("cate");
|
|
|
- cate1.add(category);
|
|
|
+ if(!cate1.contains(category)){
|
|
|
+ cate1.add(category);
|
|
|
+ }
|
|
|
objectMap.put("cate",cate1);
|
|
|
List<String> dis1 = (List<String>)objectMap.get("dis");
|
|
|
- dis1.add(disName);
|
|
|
+ if(!dis1.contains(disName)){
|
|
|
+ dis1.add(disName);
|
|
|
+ }
|
|
|
objectMap.put("dis",dis1);
|
|
|
- List<Object> coll1 = (List<Object>)objectMap.get("coll");
|
|
|
- coll1.add(collection);
|
|
|
- objectMap.put("coll",coll1);
|
|
|
disDrugs.put(name,objectMap);
|
|
|
}
|
|
|
}
|
|
@@ -446,7 +451,7 @@ public class PushTreat {
|
|
|
private List<Drugs> searchMedication(List<String> drugs,List<String> allFilds,Driver driver){
|
|
|
List<Drugs> dList = new ArrayList<>();
|
|
|
Map<String, String> medicaton_ji = new HashMap<>();
|
|
|
- Map<String, List<String>> medicatonMap = new HashMap<>();
|
|
|
+ Map<String, List<String>> medicatonMap = new LinkedHashMap<>();
|
|
|
|
|
|
Session session = driver.session(AccessMode.WRITE);
|
|
|
session.writeTransaction(new TransactionWork<Integer>() {
|