Quellcode durchsuchen

判断是否为慢病或者并发症

kongwz vor 5 Jahren
Ursprung
Commit
3bd1b4603c

+ 45 - 11
graph/src/main/java/org/diagbot/graph/medicationProcess/PushTreat.java

@@ -1,5 +1,6 @@
 package org.diagbot.graph.medicationProcess;
 
+import org.apache.commons.lang3.StringUtils;
 import org.diagbot.common.push.bean.CrisisDetail;
 import org.diagbot.common.push.bean.neo4j.*;
 import org.diagbot.pub.utils.PropertiesUtil;
@@ -57,25 +58,32 @@ public class PushTreat {
      * @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){
+
         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);
+        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 处理合并症 例如高热
         List<TreatDetail> treatDetailList = this.complicationMedicaton(inputList, driver, allFilds);
         treatmentPlanList.addAll(treatDetailList);
@@ -83,6 +91,32 @@ public class PushTreat {
         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) {
         int i = 0;
         Map<List<String>,LinkedHashMap<String,List<Drugs>>> fi = new HashMap<>();

+ 3 - 1
graph/src/main/resources/pushTreat.properties

@@ -38,4 +38,6 @@ with t,m,d\n \
 match(t)-[r:\u63A8\u8350]->(m)-[r1:\u5C5E\u4E8E]->(h:Drugs)\n \
 where d.name=h.bigDrugs \n \
 return t.name as treat,d.name as big,h.name as sub, m.name as med,null as ty\n \
-order by h.p
+order by h.p
+# \u5224\u65AD\u8BCA\u65AD\u662F\u4EC0\u4E48\u7C7B\u578B
+judgeDiseaseType=match(d:Disease) where d.name='disName' return d.sign as design