Browse Source

Merge remote-tracking branch 'origin/push-dev-edite' into push-test

kongwz 5 years ago
parent
commit
157de655f5

+ 47 - 3
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -1737,15 +1737,31 @@ public class Neo4jAPI {
 
     public Map<String, JSONObject> procrssMange(Map<String, Map<String, List<String>>> zong, List<String> types,Map<String, List<CrisisDetail>> crisisDetails) {
         Map<String, JSONObject> llo = new HashMap<>();
+        Map<String, List<String>> crisisDetailsManger = processCrisisDetails_manger(crisisDetails);
         Map<String, String> crisisDetailsMap = this.processCrisisDetails(crisisDetails,"11");
         if (types != null && types.size() > 0) {
             for (String type : types) {
                 JSONObject big = new JSONObject();
                 List<JSONObject> result = new ArrayList<>();
+
                 Map<String, List<String>> csc = zong.get(type);
                 for (Map.Entry<String, List<String>> fd : csc.entrySet()) {
                     String key = fd.getKey();
+                    List<String> maList = crisisDetailsManger.get(key);
                     List<String> values = fd.getValue();
+                    int index = -1;
+                    String s ="";
+                    if(maList != null && maList.size()>0){
+                        for (String m:maList) {
+                            if(values.indexOf(m)>=0){
+                                int i = values.indexOf(m);
+                                if(i>index){
+                                    index = i;
+                                }
+                            }
+                        }
+                        s = values.get(index);
+                    }
                     // TODO: 2019/10/31
                     /**
                      * 这部分可以进行校验
@@ -1753,13 +1769,13 @@ public class Neo4jAPI {
                     JSONObject j = new JSONObject();
                     j.put("controltype", 0);
                     j.put("name", key);
+
                     List<JSONObject> hList = new ArrayList<>();
                     if (values.size() > 0) {
-                        for (String value : values
-                                ) {
+                        for (String value : values) {
                             JSONObject ds = new JSONObject();
                             ds.put("detailName", value);
-                            if(crisisDetailsMap.containsKey(key) && value.equals(crisisDetailsMap.get(key))){
+                            if(value.equals(s)){
                                 ds.put("state", 1);
                             }else {
                                 ds.put("state", 0);
@@ -1767,7 +1783,9 @@ public class Neo4jAPI {
                             hList.add(ds);
                         }
                     }
+
                     j.put("details", hList);
+
                     result.add(j);
                 }
 //                ll.put(type,result);
@@ -1777,6 +1795,32 @@ public class Neo4jAPI {
         }
         return llo;
     }
+    public Map<String,List<String>> processCrisisDetails_manger(Map<String, List<CrisisDetail>> crisisDetails){
+        Map<String,List<String>> managerMap = new HashMap<>();
+        if(crisisDetails != null && crisisDetails.size()>0 ) {
+            for (Map.Entry<String, List<CrisisDetail>> crisis : crisisDetails.entrySet()
+                    ) {
+                List<CrisisDetail> value = crisis.getValue();
+                if (value != null && value.size() > 0) {
+                    for (CrisisDetail crisisDetail : value) {
+                        String[] crisisSplits = crisisDetail.getRemindText().split(":");
+                        if(managerMap.containsKey(crisisSplits[0])){
+                            List<String> manList = managerMap.get(crisisSplits[0]);
+                            if(manList.indexOf(crisisSplits[1])<0){
+                                manList.add(crisisSplits[1]);
+                            }
+                            managerMap.put(crisisSplits[0],manList);
+                        }else {
+                            List<String> manList = new ArrayList<>();
+                            manList.add(crisisSplits[1]);
+                            managerMap.put(crisisSplits[0],manList);
+                        }
+                    }
+                }
+            }
+        }
+        return managerMap;
+    }
 
     /**
      * 处理风险因素评估或不良反应

+ 24 - 5
graph/src/main/java/org/diagbot/graph/medicationProcess/PushTreat.java

@@ -68,9 +68,9 @@ public class PushTreat {
         }
         // TODO: 2019/11/21 处理合并症 例如高热
         List<TreatDetail> treatDetailList = this.complicationMedicaton(inputList, driver, allFilds);
-        treatDetailList.addAll(treatmentPlanList);
+        treatmentPlanList.addAll(treatDetailList);
 
-        return treatDetailList;
+        return treatmentPlanList;
     }
 
     private List<TreatDetail> complicationMedicaton(String[] inputList,Driver driver,List<String> allFilds){
@@ -160,7 +160,8 @@ public class PushTreat {
         session.writeTransaction(new TransactionWork<Integer>() {
             @Override
             public Integer execute(Transaction tx) {
-                String query = propertiesUtil_treat.getProperty("medicationRule").replace("filds",webDiagList.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);
                 StatementResult result = tx.run(query);
                 while (result.hasNext()) {
@@ -323,14 +324,32 @@ public class PushTreat {
                         meditionDetails.add(meditionDetail_bing);
                     }
 
-
-
                     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;

+ 1 - 1
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -1973,7 +1973,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
                         diseaseRepository.mergePublicLIS_1(unique_name);
                         //疾病和化验公表项创建推荐关系
                         diseaseRepository.mergeRelationLIS_1(disId,unique_name);
-                        lis = searchStandWord(standWord,type,ciKu);
+                        lis = searchStandWord(standard,type,ciKu);
                         if(StringUtils.isNotEmpty(lis)){
                             //创建大项名
                             diseaseRepository.mergePublicLIS(lis);