Jelajahi Sumber

处理主诊断+其他+其他的治疗方案

kongwz 5 tahun lalu
induk
melakukan
3e15cf1891

+ 66 - 63
graph/src/main/java/org/diagbot/graph/medicationProcess/PushTreat.java

@@ -184,7 +184,7 @@ public class PushTreat {
             //规则不匹配,返回主诊断治疗方案
             treatDetailList =  this.ordinaryMedicaton(disName,allFilds,driver);
         }else {
-            treatDetailList = this.processMedication(disDrugs, conditionDesign, allFilds, driver);
+            treatDetailList = this.processMedication(disName,disDrugs, conditionDesign, allFilds, driver);
 
         }
 
@@ -216,7 +216,7 @@ public class PushTreat {
             //规则不匹配,返回主诊断治疗方案
             treatDetailList =  this.ordinaryMedicaton(disName,allFilds,driver);
         }else {
-            treatDetailList = this.processMedication(disDrugs, conditionDesign, allFilds, driver);
+            treatDetailList = this.processMedication(disName,disDrugs, conditionDesign, allFilds, driver);
 
         }
 
@@ -321,77 +321,80 @@ public class PushTreat {
         return treatDetailList;
     }
 
-    private List<TreatDetail> processMedication(Map<String,Map<String,Object>> disDrugs,Map<String,Integer> conditionDesign,List<String> allFilds,Driver driver){
+    private List<TreatDetail> processMedication(String disName,Map<String,Map<String,Object>> disDrugs,Map<String,Integer> conditionDesign,List<String> allFilds,Driver driver){
         List<TreatDetail> treatDetailList = new ArrayList<>();
 
         if(disDrugs != null && disDrugs.size()>0){
             for (Map.Entry<String,Map<String,Object>> ds:disDrugs.entrySet()) {
                 String key = ds.getKey();
-                Map<String, Object> values = ds.getValue();
-                List<String> cateList = (List<String>) values.get("cate");
-                List<String> disList = (List<String>)values.get("dis");
-                List<Object> collList = (List<Object>)values.get("coll");
-                if(cateList.contains("主症") && cateList.contains("并发症")){
-                    TreatDetail treatDetail = new TreatDetail();
-                    List<MeditionDetail> meditionDetails = new ArrayList<>();
-                    int main = cateList.indexOf("主症");
-                    String mainDis = disList.get(main);
-                    List<String> dds= new ArrayList<>();
-                    for(String s:disList){
-                        if(!s.equals(mainDis)){
-                            dds.add(s);
+                if(Arrays.asList(key.split("\\+")).contains(disName)){
+                    Map<String, Object> values = ds.getValue();
+                    List<String> cateList = (List<String>) values.get("cate");
+                    List<String> disList = (List<String>)values.get("dis");
+                    List<Object> collList = (List<Object>)values.get("coll");
+                    if(cateList.contains("主症") && cateList.contains("并发症")){
+                        TreatDetail treatDetail = new TreatDetail();
+                        List<MeditionDetail> meditionDetails = new ArrayList<>();
+                        int main = cateList.indexOf("主症");
+                        String mainDis = disList.get(main);
+                        List<String> dds= new ArrayList<>();
+                        for(String s:disList){
+                            if(!s.equals(mainDis)){
+                                dds.add(s);
+                            }
+                        }
+                        treatDetail.setTitle(mainDis+"及其"+String.join("、",dds)+"治疗方案");//糖尿病及其2型糖尿病治疗方案
+                        Integer da = conditionDesign.get(key);
+                        String s = switchType(da);
+                        MeditionDetail meditionDetail_main = new MeditionDetail();//主诊断的
+                        List<String> o = (List<String>)collList.get(main);
+                        List<String> yinhao = yinhao(o);
+                        //根据类找药
+                        List<Drugs> drugs = searchMedication(yinhao,allFilds,driver);
+                        meditionDetail_main.setDescription(s+":"+String.join("、",o));//单药治疗:双胍类
+                        meditionDetail_main.setTreatment(drugs);
+                        meditionDetails.add(meditionDetail_main);
+
+                        //并发症用药
+                        for (String dis:dds) {
+                            MeditionDetail meditionDetail_bing = new MeditionDetail();//并发症的
+                            int i = disList.indexOf(dis);
+                            List<String> ol = (List<String>)collList.get(i);
+                            List<String> yinhaol = yinhao(ol);
+                            List<Drugs> drugs1 = searchMedication(yinhaol,allFilds,driver);
+                            meditionDetail_bing.setDescription(dis);//单药治疗:双胍类
+                            meditionDetail_bing.setTreatment(drugs1);
+                            meditionDetails.add(meditionDetail_bing);
                         }
-                    }
-                    treatDetail.setTitle(mainDis+"及其"+String.join("、",dds)+"治疗方案");//糖尿病及其2型糖尿病治疗方案
-                    Integer da = conditionDesign.get(key);
-                    String s = switchType(da);
-                    MeditionDetail meditionDetail_main = new MeditionDetail();//主诊断的
-                    List<String> o = (List<String>)collList.get(main);
-                    List<String> yinhao = yinhao(o);
-                    //根据类找药
-                    List<Drugs> drugs = searchMedication(yinhao,allFilds,driver);
-                    meditionDetail_main.setDescription(s+":"+String.join("、",o));//单药治疗:双胍类
-                    meditionDetail_main.setTreatment(drugs);
-                    meditionDetails.add(meditionDetail_main);
-
-                    //并发症用药
-                    for (String dis:dds) {
-                        MeditionDetail meditionDetail_bing = new MeditionDetail();//并发症的
-                        int i = disList.indexOf(dis);
-                        List<String> ol = (List<String>)collList.get(i);
-                        List<String> yinhaol = yinhao(ol);
-                        List<Drugs> drugs1 = searchMedication(yinhaol,allFilds,driver);
-                        meditionDetail_bing.setDescription(dis);//单药治疗:双胍类
-                        meditionDetail_bing.setTreatment(drugs1);
-                        meditionDetails.add(meditionDetail_bing);
-                    }
 
-                    treatDetail.setMeditionDetails(meditionDetails);
+                        treatDetail.setMeditionDetails(meditionDetails);
 
-                    treatDetailList.add(treatDetail);
+                        treatDetailList.add(treatDetail);
 
+                    }
+                    /*if(cateList.size()==1 && cateList.contains("主症")){
+
+                        TreatDetail treatDetail = new TreatDetail();
+                        List<MeditionDetail> meditionDetails = new ArrayList<>();
+                        int main = cateList.indexOf("主症");
+                        String mainDis = disList.get(main);
+                        treatDetail.setTitle(mainDis+"治疗方案");//糖尿病及其2型糖尿病治疗方案
+                        Integer da = conditionDesign.get(key);
+                        String s = switchType(da);
+                        MeditionDetail meditionDetail_main = new MeditionDetail();//主诊断的
+                        List<String> o = (List<String>)collList.get(main);
+                        List<String> yinhao = yinhao(o);
+                        //根据类找药
+                        List<Drugs> drugs = searchMedication(yinhao,allFilds,driver);
+                        meditionDetail_main.setDescription(s+":"+String.join("、",o));//单药治疗:双胍类
+                        meditionDetail_main.setTreatment(drugs);
+                        meditionDetails.add(meditionDetail_main);
+                        treatDetail.setMeditionDetails(meditionDetails);
+
+                        treatDetailList.add(treatDetail);
+                    }*/
                 }
-                if(cateList.size()==1 && cateList.contains("主症")){
-
-                    TreatDetail treatDetail = new TreatDetail();
-                    List<MeditionDetail> meditionDetails = new ArrayList<>();
-                    int main = cateList.indexOf("主症");
-                    String mainDis = disList.get(main);
-                    treatDetail.setTitle(mainDis+"治疗方案");//糖尿病及其2型糖尿病治疗方案
-                    Integer da = conditionDesign.get(key);
-                    String s = switchType(da);
-                    MeditionDetail meditionDetail_main = new MeditionDetail();//主诊断的
-                    List<String> o = (List<String>)collList.get(main);
-                    List<String> yinhao = yinhao(o);
-                    //根据类找药
-                    List<Drugs> drugs = searchMedication(yinhao,allFilds,driver);
-                    meditionDetail_main.setDescription(s+":"+String.join("、",o));//单药治疗:双胍类
-                    meditionDetail_main.setTreatment(drugs);
-                    meditionDetails.add(meditionDetail_main);
-                    treatDetail.setMeditionDetails(meditionDetails);
-
-                    treatDetailList.add(treatDetail);
-                }
+
             }
         }
         return treatDetailList;