|
@@ -64,12 +64,53 @@ public class PushTreat {
|
|
|
treatmentPlanList = this.ruleMedicaton(disName,webDiag,allFilds, driver);
|
|
|
// TODO: 2019/11/19 规则不满足的情况下,返回主诊断的用药情况
|
|
|
if(treatmentPlanList.size() == 0){
|
|
|
-
|
|
|
+ treatmentPlanList = this.ordinaryMedicaton(disName,allFilds,driver);
|
|
|
}
|
|
|
+ return treatmentPlanList;
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 规则不匹配返回主诊断用药
|
|
|
+ * @param disName 主诊断
|
|
|
+ * @param allFilds 其他条件
|
|
|
+ * @param driver
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<TreatDetail> ordinaryMedicaton(String disName,List<String> allFilds,Driver driver){
|
|
|
+ List<TreatDetail> disTreatDetailList = new ArrayList<>();
|
|
|
|
|
|
+ List<Drugs> dList = new ArrayList<>();
|
|
|
+ Map<String, String> medicaton_ji = new HashMap<>();
|
|
|
+ Map<String, List<String>> medicatonMap = new HashMap<>();
|
|
|
|
|
|
- return treatmentPlanList;
|
|
|
+ Session session = driver.session(AccessMode.WRITE);
|
|
|
+ session.writeTransaction(new TransactionWork<Integer>() {
|
|
|
+ @Override
|
|
|
+ public Integer execute(Transaction tx) {
|
|
|
+ String query = propertiesUtil_treat.getProperty("searchMedication").replace("disName", "\'" + disName + "\'").replace("filds", allFilds.toString());
|
|
|
+ logger.info("规则通过类找药:\n" + query);
|
|
|
+ StatementResult result = tx.run(query);
|
|
|
+ while (result.hasNext()) {
|
|
|
+ Record record = result.next();
|
|
|
+ searchAllMedication(record, medicatonMap, medicaton_ji);
|
|
|
+ }
|
|
|
+ medicationList(medicatonMap, medicaton_ji, dList);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ closeSession(session);
|
|
|
+
|
|
|
+ TreatDetail treatDetail = new TreatDetail();
|
|
|
+ List<MeditionDetail> mList = new ArrayList<>();
|
|
|
+ MeditionDetail meditionDetail = new MeditionDetail();
|
|
|
+ meditionDetail.setDescription("");
|
|
|
+ meditionDetail.setTreatment(dList);
|
|
|
+ mList.add(meditionDetail);
|
|
|
+
|
|
|
+ treatDetail.setTitle(disName+"治疗方案");
|
|
|
+ treatDetail.setMeditionDetails(mList);
|
|
|
+ disTreatDetailList.add(treatDetail);
|
|
|
+ return disTreatDetailList;
|
|
|
}
|
|
|
//匹配规则,推荐用药
|
|
|
private List<TreatDetail> ruleMedicaton(String disName,String webDiag,List<String> allFilds,Driver driver){
|
|
@@ -206,88 +247,96 @@ public class PushTreat {
|
|
|
session.writeTransaction(new TransactionWork<Integer>() {
|
|
|
@Override
|
|
|
public Integer execute(Transaction tx) {
|
|
|
- StatementResult result = null;
|
|
|
String query = propertiesUtil_treat.getProperty("searchMedication_rule").replace("drugs",drugs.toString()).replace("filds",allFilds.toString());
|
|
|
logger.info("规则通过类找药:\n" + query);
|
|
|
- result = tx.run(query);
|
|
|
+ StatementResult result = tx.run(query);
|
|
|
while (result.hasNext()) {
|
|
|
Record record = result.next();
|
|
|
- String big = record.get("big").toString().replace("\"", "");
|
|
|
- String sub = record.get("sub").toString().replace("\"", "");
|
|
|
- String med = record.get("med").toString().replace("\"", "");
|
|
|
- String ty = record.get("ty").toString().replace("\"", "");
|
|
|
- if ("NULL".equals(ty)) {
|
|
|
- if (medicatonMap.containsKey(big + "$" + sub)) {
|
|
|
- List<String> ml = medicatonMap.get(big + "$" + sub);
|
|
|
- ml.add(med);
|
|
|
- medicatonMap.put(big + "$" + sub, ml);
|
|
|
- } else {
|
|
|
- List<String> ml = new ArrayList<>();
|
|
|
- ml.add(med);
|
|
|
- medicatonMap.put(big + "$" + sub, ml);
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (medicaton_ji.containsKey(med)) {
|
|
|
- if (medicaton_ji.get(med).equals("慎用") && ty.equals("忌用")) {
|
|
|
- medicaton_ji.put(med, "忌用");
|
|
|
+ searchAllMedication(record, medicatonMap, medicaton_ji);
|
|
|
+ }
|
|
|
+ medicationList(medicatonMap, medicaton_ji, dList);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ closeSession(session);
|
|
|
+ return dList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void medicationList(Map<String, List<String>> medicatonMap, Map<String, String> medicaton_ji, List<Drugs> dList) {
|
|
|
+ if (medicatonMap != null && medicatonMap.size() > 0) {
|
|
|
+ for (Map.Entry<String, List<String>> fd : medicatonMap.entrySet()) {
|
|
|
+ int i = 0;
|
|
|
+ String big = "", sub = "";
|
|
|
+ String big_sub = fd.getKey();//大小类
|
|
|
+ List<String> medications = fd.getValue();//药的集合
|
|
|
+ String[] splits = big_sub.split("\\$");
|
|
|
+ Drugs drugs = new Drugs();
|
|
|
+ if (splits[0].equals(splits[1])) {
|
|
|
+ sub = "";
|
|
|
+ big = splits[0];
|
|
|
+ } else {
|
|
|
+ big = splits[0];
|
|
|
+ sub = splits[1];
|
|
|
+ }
|
|
|
+ LinkedList<Medicition> mes = new LinkedList<>();
|
|
|
+ if (medications != null && medications.size() > 0) {
|
|
|
+ for (String m : medications) {
|
|
|
+ Medicition medicition = new Medicition();
|
|
|
+ medicition.setMedicitionName(m);
|
|
|
+ if (medicaton_ji.containsKey(m)) {
|
|
|
+ String s = medicaton_ji.get(m);
|
|
|
+ if (s.equals("忌用")) {
|
|
|
+ medicition.setForbidden(2);
|
|
|
+ } else {
|
|
|
+ medicition.setForbidden(1);
|
|
|
}
|
|
|
} else {
|
|
|
- medicaton_ji.put(med, ty);
|
|
|
+ medicition.setForbidden(0);
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- if (medicatonMap != null && medicatonMap.size() > 0) {
|
|
|
- for (Map.Entry<String, List<String>> fd : medicatonMap.entrySet()) {
|
|
|
- int i = 0;
|
|
|
- String big = "", sub = "";
|
|
|
- String big_sub = fd.getKey();//大小类
|
|
|
- List<String> medications = fd.getValue();//药的集合
|
|
|
- String[] splits = big_sub.split("\\$");
|
|
|
- Drugs drugs = new Drugs();
|
|
|
- if (splits[0].equals(splits[1])) {
|
|
|
- sub = "";
|
|
|
- big = splits[0];
|
|
|
+ if (i < 3) {
|
|
|
+ medicition.setIsShow(1);
|
|
|
+ i++;
|
|
|
} else {
|
|
|
- big = splits[0];
|
|
|
- sub = splits[1];
|
|
|
- }
|
|
|
- LinkedList<Medicition> mes = new LinkedList<>();
|
|
|
- if (medications != null && medications.size() > 0) {
|
|
|
- for (String m : medications) {
|
|
|
- Medicition medicition = new Medicition();
|
|
|
- medicition.setMedicitionName(m);
|
|
|
- if (medicaton_ji.containsKey(m)) {
|
|
|
- String s = medicaton_ji.get(m);
|
|
|
- if (s.equals("忌用")) {
|
|
|
- medicition.setForbidden(2);
|
|
|
- } else {
|
|
|
- medicition.setForbidden(1);
|
|
|
- }
|
|
|
- } else {
|
|
|
- medicition.setForbidden(0);
|
|
|
- }
|
|
|
- if (i < 3) {
|
|
|
- medicition.setIsShow(1);
|
|
|
- i++;
|
|
|
- } else {
|
|
|
- medicition.setIsShow(0);
|
|
|
- }
|
|
|
- mes.add(medicition);
|
|
|
- }
|
|
|
+ medicition.setIsShow(0);
|
|
|
}
|
|
|
- drugs.setBigdrugsName(big);
|
|
|
- drugs.setSubdrugsName(sub);
|
|
|
- drugs.setDrugsForbidden(0);
|
|
|
- drugs.setMedicitionsList(mes);
|
|
|
- dList.add(drugs);
|
|
|
+ mes.add(medicition);
|
|
|
}
|
|
|
}
|
|
|
- return 1;
|
|
|
+ drugs.setBigdrugsName(big);
|
|
|
+ drugs.setSubdrugsName(sub);
|
|
|
+ drugs.setDrugsForbidden(0);
|
|
|
+ drugs.setMedicitionsList(mes);
|
|
|
+ dList.add(drugs);
|
|
|
}
|
|
|
- });
|
|
|
- closeSession(session);
|
|
|
- return dList;
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ private void searchAllMedication(Record record, Map<String, List<String>> medicatonMap, Map<String, String> medicaton_ji) {
|
|
|
+ String big = record.get("big").toString().replace("\"", "");
|
|
|
+ String sub = record.get("sub").toString().replace("\"", "");
|
|
|
+ String med = record.get("med").toString().replace("\"", "");
|
|
|
+ String ty = record.get("ty").toString().replace("\"", "");
|
|
|
+ if ("NULL".equals(ty)) {
|
|
|
+ if (medicatonMap.containsKey(big + "$" + sub)) {
|
|
|
+ List<String> ml = medicatonMap.get(big + "$" + sub);
|
|
|
+ ml.add(med);
|
|
|
+ medicatonMap.put(big + "$" + sub, ml);
|
|
|
+ } else {
|
|
|
+ List<String> ml = new ArrayList<>();
|
|
|
+ ml.add(med);
|
|
|
+ medicatonMap.put(big + "$" + sub, ml);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (medicaton_ji.containsKey(med)) {
|
|
|
+ if (medicaton_ji.get(med).equals("慎用") && ty.equals("忌用")) {
|
|
|
+ medicaton_ji.put(med, "忌用");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ medicaton_ji.put(med, ty);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//查找主诊断
|
|
|
private String mainDisease(String disName,Driver driver){
|
|
|
String main_dis = "";
|