|
@@ -1,5 +1,6 @@
|
|
package org.diagbot.graph.medicationProcess;
|
|
package org.diagbot.graph.medicationProcess;
|
|
|
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
import org.diagbot.common.push.bean.CrisisDetail;
|
|
import org.diagbot.common.push.bean.CrisisDetail;
|
|
import org.diagbot.common.push.bean.neo4j.*;
|
|
import org.diagbot.common.push.bean.neo4j.*;
|
|
import org.diagbot.pub.utils.PropertiesUtil;
|
|
import org.diagbot.pub.utils.PropertiesUtil;
|
|
@@ -57,25 +58,32 @@ public class PushTreat {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
private List<TreatDetail> getTreatmentPlan(String disName,String webDiag,String[] inputList,List<String> exculdDiagFilds,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> typeList = this.judgeDiseaseType(disName, driver);
|
|
|
|
+ String sign = typeList.size()>0? typeList.get(0):"NULL";
|
|
//获取全部字段
|
|
//获取全部字段
|
|
List<String> allFilds = this.getAllFilds(webDiag, crisisDetails, inputList, ueSet);
|
|
List<String> allFilds = this.getAllFilds(webDiag, crisisDetails, inputList, ueSet);
|
|
|
|
+ if("NULL".equals(sign) || "2".equals(sign)|| "3".equals(sign)){
|
|
|
|
+ treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
|
+ }else if("1".equals(sign)){
|
|
|
|
+ // TODO: 2019/11/19 匹配规则用药,判断是否满足规则
|
|
|
|
+ treatmentPlanList= this.ruleMedicaton(disName, webDiag, allFilds, driver);
|
|
|
|
|
|
- // TODO: 2019/11/19 匹配规则用药,判断是否满足规则
|
|
|
|
- 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/28 匹配主症+其他+其他
|
|
|
|
+ List<TreatDetail> treatmentPlanList_otherrule = this.otherRuleMedicaton(disName, exculdDiagFilds, allFilds, driver);
|
|
|
|
+ treatmentPlanList.addAll(treatmentPlanList_otherrule);
|
|
|
|
|
|
- // TODO: 2019/12/4 合并规则,多个相同的治疗合并成一个
|
|
|
|
- this.mergerRules(treatmentPlanList);
|
|
|
|
|
|
+ // TODO: 2019/12/4 合并规则,多个相同的治疗合并成一个
|
|
|
|
+ this.mergerRules(treatmentPlanList);
|
|
|
|
|
|
- // TODO: 2019/11/19 规则不满足的情况下,返回主诊断的用药情况
|
|
|
|
- if(treatmentPlanList.size() == 0){
|
|
|
|
- treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
|
|
|
+ // TODO: 2019/11/19 规则不满足的情况下,返回主诊断的用药情况
|
|
|
|
+ if(treatmentPlanList.size() == 0){
|
|
|
|
+ treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
// TODO: 2019/11/21 处理合并症 例如高热
|
|
// TODO: 2019/11/21 处理合并症 例如高热
|
|
List<TreatDetail> treatDetailList = this.complicationMedicaton(inputList, driver, allFilds);
|
|
List<TreatDetail> treatDetailList = this.complicationMedicaton(inputList, driver, allFilds);
|
|
treatmentPlanList.addAll(treatDetailList);
|
|
treatmentPlanList.addAll(treatDetailList);
|
|
@@ -83,6 +91,32 @@ public class PushTreat {
|
|
return treatmentPlanList;
|
|
return treatmentPlanList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private List<String> judgeDiseaseType(String disName, Driver driver){
|
|
|
|
+ List<String> signList = new ArrayList<>();
|
|
|
|
+ if(StringUtils.isNotEmpty(disName)){
|
|
|
|
+ Session session = driver.session(AccessMode.WRITE);
|
|
|
|
+ session.writeTransaction(new TransactionWork<Integer>() {
|
|
|
|
+ @Override
|
|
|
|
+ public Integer execute(Transaction tx) {
|
|
|
|
+ String query = propertiesUtil_treat.getProperty("judgeDiseaseType").replace("disName",disName.toString());
|
|
|
|
+ logger.info("规则用药,查询语句为:\n" + query);
|
|
|
|
+ StatementResult result = tx.run(query);
|
|
|
|
+ while (result.hasNext()) {
|
|
|
|
+ Record next = result.next();
|
|
|
|
+ String sign = next.get("design").toString();
|
|
|
|
+ signList.add(sign);
|
|
|
|
+ }
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ closeSession(session);
|
|
|
|
+ }
|
|
|
|
+ return signList;
|
|
|
|
+ }
|
|
|
|
+ /**
|
|
|
|
+ * 合并规则
|
|
|
|
+ * @param treatmentPlanList
|
|
|
|
+ */
|
|
private void mergerRules(List<TreatDetail> treatmentPlanList) {
|
|
private void mergerRules(List<TreatDetail> treatmentPlanList) {
|
|
int i = 0;
|
|
int i = 0;
|
|
Map<List<String>,LinkedHashMap<String,List<Drugs>>> fi = new HashMap<>();
|
|
Map<List<String>,LinkedHashMap<String,List<Drugs>>> fi = new HashMap<>();
|