Ver código fonte

不良反应通路打通

kongwz 5 anos atrás
pai
commit
b538b055c3

+ 1 - 1
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -140,7 +140,7 @@ public class GraphCalculate {
             Map<String,String> ue = neo4jAPI.getUe((String[]) inputList.toArray(new String[inputList.size()]));
             //走平常诊断治疗
 //            Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(diseaseName,webDiag, diseaseType, diseaseSet,disUE,ue,String.join(",", inputList));
-            Map<String, Filnlly> mulDiseaseTreat_new = neo4jAPI.getMulDiseaseTreat_new(diseaseName,webDiag, diseaseType, diseaseSet,disUE,ue,String.join(",", inputList));
+            Map<String, Filnlly> mulDiseaseTreat_new = neo4jAPI.getMulDiseaseTreat_new(diseaseName,webDiag, diseaseType, diseaseSet,disUE,ue,String.join(",", inputList),crisisDetails);
             System.out.println("推送治疗消耗:"+(System.currentTimeMillis()-starttime)+"s");
             responseData.setTreat(mulDiseaseTreat_new);
         }

+ 45 - 18
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -1171,7 +1171,8 @@ public class Neo4jAPI {
                             if (stringList != null && stringList.size() > 0) {
                                 List<Indicators> indicatorsList1 = new ArrayList<>();
                                 for (String de : stringList) {
-                                    Indicators indicators1 = getAdverse(ueSet, de);
+//                                    Indicators indicators1 = getAdverse(ueSet, de);
+                                    Indicators indicators1 = new Indicators();
                                     logger.info(disSet + "包含  " + de);
                                     indicatorsList1.add(indicators1);
                                 }
@@ -1192,7 +1193,7 @@ public class Neo4jAPI {
         }
     }
 
-    public Map<String, Filnlly> getMulDiseaseTreat_new(String disName, String disease, Integer diseaseType, Set<String> disSet, Map<String, List<String>> disUE, Map<String,String> ueSet, String filds) {
+    public Map<String, Filnlly> getMulDiseaseTreat_new(String disName, String disease, Integer diseaseType, Set<String> disSet, Map<String, List<String>> disUE, Map<String,String> ueSet, String filds, Map<String, List<CrisisDetail>> crisisDetails) {
         Map<String, Filnlly> newTret = new HashMap<>();
         Session session = null;
         Map<String, ArrayList> diseFilds = getdisFilds(disName, disease, disSet, ueSet, filds);
@@ -1295,7 +1296,7 @@ public class Neo4jAPI {
                                 if (stringList != null && stringList.size() > 0) {
                                     List<Indicators> indicatorsList1 = new ArrayList<>();
                                     for (String de : stringList) {
-                                        Indicators indicators1 = getAdverse(ueSet, de);
+                                        Indicators indicators1 = getAdverse(ueSet, de,crisisDetails);
                                         logger.info(disSet + "包含  " + de);
                                         indicatorsList1.add(indicators1);
                                     }
@@ -1586,7 +1587,7 @@ 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, String> crisisDetailsMap = this.processCrisisDetails(crisisDetails);
+        Map<String, String> crisisDetailsMap = this.processCrisisDetails(crisisDetails,"11");
         if (types != null && types.size() > 0) {
             for (String type : types) {
                 JSONObject big = new JSONObject();
@@ -1628,11 +1629,11 @@ public class Neo4jAPI {
     }
 
     /**
-     * 处理风险因素评估
+     * 处理风险因素评估或不良反应
      * @param crisisDetails
      * @return
      */
-    public Map<String,String> processCrisisDetails(Map<String, List<CrisisDetail>> crisisDetails){
+    public Map<String,String> processCrisisDetails(Map<String, List<CrisisDetail>> crisisDetails,String sign){
         Map<String,String> crisisMap = new HashMap<>();
         if(crisisDetails != null && crisisDetails.size()>0 ){
             for (Map.Entry<String, List<CrisisDetail>>  crisis:crisisDetails.entrySet()
@@ -1640,9 +1641,20 @@ public class Neo4jAPI {
                 List<CrisisDetail> value = crisis.getValue();
                 if(value!=null && value.size()>0){
                     for (CrisisDetail crisisDetail:value) {
-                        if("11".equals(crisisDetail.getTypeId())){
-                            String[] crisisSplits = crisisDetail.getRemindText().split(":");
+                        String[] crisisSplits = crisisDetail.getRemindText().split(":");
+                        if(sign.equals(crisisDetail.getTypeId()) && !sign.equals("6")){
                             crisisMap.put(crisisSplits[0],crisisSplits[1]);
+                        }else if(sign.equals(crisisDetail.getTypeId()) && sign.equals("6")){//不良反应
+                            if(crisisMap.containsKey(crisisSplits[0])){
+                                if("轻度".equals(crisisMap.get(crisisSplits[0])) && ("重度".equals(crisisSplits[1])||"中度".equals(crisisSplits[1]) )){
+                                    crisisMap.put(crisisSplits[0],crisisSplits[1]);
+                                }
+                                if("中度".equals(crisisMap.get(crisisSplits[0])) && "重度".equals(crisisSplits[1])){
+                                    crisisMap.put(crisisSplits[0],crisisSplits[1]);
+                                }
+                            }else {
+                                crisisMap.put(crisisSplits[0],crisisSplits[1]);
+                            }
                         }
                     }
                 }
@@ -1801,24 +1813,39 @@ public class Neo4jAPI {
 
     }
 
-    public Indicators getAdverse(Map<String,String> dis, String name) {
+    public Indicators getAdverse(Map<String,String> dis, String name,Map<String, List<CrisisDetail>> crisisDetails) {
+        Map<String, String> crisisDetailsMap = this.processCrisisDetails(crisisDetails,"6");
+        if(crisisDetailsMap != null && dis != null){
+            for (Map.Entry<String,String> d:dis.entrySet()
+                 ) {
+                if(!crisisDetailsMap.containsKey(d.getKey())){
+                    crisisDetailsMap.put(d.getKey(),d.getValue());
+                }
+            }
+        }
         String[] item={"无","可能有","轻度","中度","重度"};
         Indicators indicators = new Indicators();
         indicators.setName(name);
         indicators.setControlType(2);
         List<Detail> detailList1 = new ArrayList<>();
         for (String it:item) {
+            int value = 0;
             Detail detail = new Detail();
             detail.setName(it);
-            if(dis != null && dis.size()>0){
-                if(dis.containsKey(name) && dis.get(name).equals(it)){
-                    detail.setValue(1);
-                }else {
-                    detail.setValue(0);
-                }
-            }else {
-                detail.setValue(0);
-            }
+           if(crisisDetailsMap != null && crisisDetailsMap.size()>0){
+               if(crisisDetailsMap.containsKey(name) ){
+                   if(it.equals(crisisDetailsMap.get(name))){
+                       value = 1;
+                       detail.setValue(value);
+                   }else {
+                       detail.setValue(value);
+                   }
+               }else {
+                   detail.setValue(value);
+
+               }           }else {
+               detail.setValue(value);
+           }
             detailList1.add(detail);
 
         }