|
@@ -26,7 +26,7 @@ public class PushTreat {
|
|
* @param crisisDetails 规则返回结果
|
|
* @param crisisDetails 规则返回结果
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public Treat processTreat(String disName,String webDiag,Integer diseaseType,Driver driver,String[] keys,Map<String, List<CrisisDetail>> crisisDetails){
|
|
|
|
|
|
+ public Treat processTreat(String disName,String webDiag,Integer diseaseType,Driver driver,String[] keys,List<String> exculdDiagFilds,Map<String, List<CrisisDetail>> crisisDetails){
|
|
Treat treat =new Treat();
|
|
Treat treat =new Treat();
|
|
|
|
|
|
// TODO: 2019/11/20
|
|
// TODO: 2019/11/20
|
|
@@ -42,7 +42,7 @@ public class PushTreat {
|
|
|
|
|
|
// TODO: 2019/11/20
|
|
// TODO: 2019/11/20
|
|
//具体用药
|
|
//具体用药
|
|
- List<TreatDetail> treatmentPlan = this.getTreatmentPlan(disName,webDiag, keys, crisisDetails,ueSet,driver);
|
|
|
|
|
|
+ List<TreatDetail> treatmentPlan = this.getTreatmentPlan(disName,webDiag, keys,exculdDiagFilds, crisisDetails,ueSet,driver);
|
|
treat.setTreatmentPlan(treatmentPlan);
|
|
treat.setTreatmentPlan(treatmentPlan);
|
|
|
|
|
|
|
|
|
|
@@ -56,12 +56,21 @@ public class PushTreat {
|
|
* @param crisisDetails 规则结果
|
|
* @param crisisDetails 规则结果
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private List<TreatDetail> getTreatmentPlan(String disName,String webDiag,String[] inputList,Map<String, List<CrisisDetail>> crisisDetails, Map<String, String> ueSet,Driver driver){
|
|
|
|
|
|
+ private List<TreatDetail> getTreatmentPlan(String disName,String webDiag,String[] inputList,List<String> exculdDiagFilds,Map<String, List<CrisisDetail>> crisisDetails, Map<String, String> ueSet,Driver driver){
|
|
List<TreatDetail> treatmentPlanList = new ArrayList<>();
|
|
List<TreatDetail> treatmentPlanList = new ArrayList<>();
|
|
//获取全部字段
|
|
//获取全部字段
|
|
List<String> allFilds = this.getAllFilds(webDiag, crisisDetails, inputList, ueSet);
|
|
List<String> allFilds = this.getAllFilds(webDiag, crisisDetails, inputList, ueSet);
|
|
|
|
+
|
|
// TODO: 2019/11/19 匹配规则用药,判断是否满足规则
|
|
// TODO: 2019/11/19 匹配规则用药,判断是否满足规则
|
|
- treatmentPlanList = this.ruleMedicaton(disName,webDiag,allFilds, driver);
|
|
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
// TODO: 2019/11/19 规则不满足的情况下,返回主诊断的用药情况
|
|
// TODO: 2019/11/19 规则不满足的情况下,返回主诊断的用药情况
|
|
if(treatmentPlanList.size() == 0){
|
|
if(treatmentPlanList.size() == 0){
|
|
treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
@@ -150,6 +159,37 @@ public class PushTreat {
|
|
disTreatDetailList.add(treatDetail);
|
|
disTreatDetailList.add(treatDetail);
|
|
return disTreatDetailList;
|
|
return disTreatDetailList;
|
|
}
|
|
}
|
|
|
|
+ //匹配规则,主症+其他+其他
|
|
|
|
+ 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<>();
|
|
|
|
+ Set<String> disSet = new HashSet<>();
|
|
|
|
+ excludeDiagFilds.add("'"+disName+"'");
|
|
|
|
+ Session session = driver.session(AccessMode.WRITE);
|
|
|
|
+ session.writeTransaction(new TransactionWork<Integer>() {
|
|
|
|
+ @Override
|
|
|
|
+ public Integer execute(Transaction tx) {
|
|
|
|
+ String query = propertiesUtil_treat.getProperty("medicationRule").replace("filds",excludeDiagFilds.toString());
|
|
|
|
+ logger.info("规则用药,查询语句为:\n" + query);
|
|
|
|
+ StatementResult result = tx.run(query);
|
|
|
|
+ while (result.hasNext()) {
|
|
|
|
+ searchDrugs(result, conditionDesign, disDrugs,disSet);
|
|
|
|
+ }
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ closeSession(session);
|
|
|
|
+ List<TreatDetail> treatDetailList =new ArrayList<>();
|
|
|
|
+ if(!disSet.contains(disName)){
|
|
|
|
+ //规则不匹配,返回主诊断治疗方案
|
|
|
|
+ treatDetailList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
|
+ }else {
|
|
|
|
+ treatDetailList = this.processMedication(disDrugs, conditionDesign, allFilds, driver);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return treatDetailList;
|
|
|
|
+ }
|
|
//匹配规则,推荐用药
|
|
//匹配规则,推荐用药
|
|
private List<TreatDetail> ruleMedicaton(String disName,String webDiag,List<String> allFilds,Driver driver){
|
|
private List<TreatDetail> ruleMedicaton(String disName,String webDiag,List<String> allFilds,Driver driver){
|
|
Map<String,Integer> conditionDesign = new HashMap<>();
|
|
Map<String,Integer> conditionDesign = new HashMap<>();
|
|
@@ -160,8 +200,8 @@ public class PushTreat {
|
|
session.writeTransaction(new TransactionWork<Integer>() {
|
|
session.writeTransaction(new TransactionWork<Integer>() {
|
|
@Override
|
|
@Override
|
|
public Integer execute(Transaction tx) {
|
|
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());
|
|
|
|
|
|
+ String query = propertiesUtil_treat.getProperty("medicationRule").replace("filds",webDiagList.toString());
|
|
|
|
+// String query = propertiesUtil_treat.getProperty("medicationRule").replace("filds",allFilds.toString());
|
|
logger.info("规则用药,查询语句为:\n" + query);
|
|
logger.info("规则用药,查询语句为:\n" + query);
|
|
StatementResult result = tx.run(query);
|
|
StatementResult result = tx.run(query);
|
|
while (result.hasNext()) {
|
|
while (result.hasNext()) {
|
|
@@ -173,9 +213,11 @@ public class PushTreat {
|
|
closeSession(session);
|
|
closeSession(session);
|
|
List<TreatDetail> treatDetailList =new ArrayList<>();
|
|
List<TreatDetail> treatDetailList =new ArrayList<>();
|
|
if(!disSet.contains(disName)){
|
|
if(!disSet.contains(disName)){
|
|
|
|
+ //规则不匹配,返回主诊断治疗方案
|
|
treatDetailList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
treatDetailList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
}else {
|
|
}else {
|
|
treatDetailList = this.processMedication(disDrugs, conditionDesign, allFilds, driver);
|
|
treatDetailList = this.processMedication(disDrugs, conditionDesign, allFilds, driver);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
return treatDetailList;
|
|
return treatDetailList;
|
|
@@ -512,6 +554,15 @@ public class PushTreat {
|
|
|
|
|
|
return filds;
|
|
return filds;
|
|
}
|
|
}
|
|
|
|
+ private List<String> getAllFilds(String[] inputList){
|
|
|
|
+ List<String> filds = new ArrayList<>();
|
|
|
|
+ if(inputList.length>0){
|
|
|
|
+ for (String fild:inputList) {
|
|
|
|
+ filds.add("\'"+fild.trim()+"\'");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return filds;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
//不良反应set
|
|
//不良反应set
|