Przeglądaj źródła

归一优化(确诊优化)

kongwz 5 lat temu
rodzic
commit
479fb32c57

+ 71 - 1
common-push/src/main/java/org/diagbot/common/push/filter/ClassifyDiag.java

@@ -5,6 +5,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.diagbot.common.push.bean.FeatureRate;
 import org.diagbot.common.push.bean.ResponseData;
 import org.diagbot.common.push.cache.CacheUtil;
+import org.diagbot.nlp.relation.module.Lis;
 
 import java.text.DecimalFormat;
 import java.util.*;
@@ -81,6 +82,7 @@ public class ClassifyDiag {
     public List<FeatureRate> diagClassify(List<FeatureRate> updateFeatures){
         List<FeatureRate> finalDiagList = new LinkedList<>();//最终返回
         List<String> highDiagList = new LinkedList<>();//警惕集合
+        List<String> diffDiagList = new LinkedList<>();//鉴别诊断集合
         List<String> queDiagList = new LinkedList<>();//确诊集合
         List<String> bigDiagList = new LinkedList<>();//可能诊断集合
         if(updateFeatures != null && updateFeatures.size()>0){
@@ -93,6 +95,9 @@ public class ClassifyDiag {
                     d = jsonObject;
                     if(d.keySet().size() == 1 && "警惕".equals(d.keySet().toArray()[0])){
                         highDiagList.add(featureName);
+                    }else if(d.keySet().size() == 1 && ("鉴别诊断".equals(d.keySet().toArray()[0])
+                            || "页面急诊".equals(d.keySet().toArray()[0])) || "急诊".equals(d.keySet().toArray()[0])){
+                        diffDiagList.add(featureName);
                     }else {
                         queDiagList.add(featureName);
                     }
@@ -112,6 +117,17 @@ public class ClassifyDiag {
                 }
             }
         }
+        //再把鉴别诊断加进去
+        if(diffDiagList.size()>0){
+            for(int j =0;j<updateFeatures.size();j++){
+                FeatureRate featureRate = updateFeatures.get(j);
+                String featureName = featureRate.getFeatureName();
+                int i = diffDiagList.indexOf(featureName);
+                if(i >= 0){
+                    finalDiagList.add(featureRate);
+                }
+            }
+        }
         /**
          * 这里处理一下可能诊断剔除的功能
          * 如果图谱推出的诊断和可能诊断有层级关系,就把对应的可能诊断剔除
@@ -121,12 +137,16 @@ public class ClassifyDiag {
         System.out.println("图谱归一前数据 :"+queDiagList);
         if(queDiagList != null && queDiagList.size()>0){
             //图谱归一 ,图谱sign =0,大数据sign = 1
-            queSet = this.diagProcess(queDiagList,0);
+            List<String> que = this.processQue(updateFeatures, queDiagList);
+            queSet = this.diagProcess(que,0);
             System.out.println("图谱归一后的数据    :"+queSet);
             if(queSet != null && queSet.size()>0){
                 for (String queDis:queSet) {
                     if(queDiagList.indexOf(queDis)>=0){ //可以找到,就取出来,用原来的
                         FeatureRate feature = this.getFeature(updateFeatures, queDis);
+                        if(feature.getDesc().contains("拟诊")){
+                            feature.setDesc(feature.getDesc().replace("拟诊","确诊"));
+                        }
                         feature.setExtraProperty(diagDepartCache.get(queDis));
                         finalDiagList.add(feature);
                     }else {
@@ -527,5 +547,55 @@ public class ClassifyDiag {
         }
         return arrayList;
     }
+    //归一有确诊的诊断
+    public  List<String> processQue(List<FeatureRate> updateFeatures,List<String>queList){
+        List<String> finallyQue = new LinkedList<>();
+        List<String> que = new ArrayList<>();
+        List<String> ni = new ArrayList<>();
+        for (String qd:queList) {
+            for (FeatureRate f:updateFeatures) {
+                if("neo4j".equals(f.getSource()) && qd.equals(f.getFeatureName())){
+                    if(f.getDesc().contains("确诊")){
+                        que.add(qd);
+                    }else if(f.getDesc().contains("拟诊")) {
+                        ni.add(qd);
+                    }
+                }
+            }
+        }
+        if(que != null && que.size()>0){
+            for (String q:que) {
+                Set<String> classifySet = new HashSet<>();
+                String s = diagClassifyCache.get(q);
+                if(StringUtils.isNotEmpty(s)){
+                    classifySet.add(s);
+                    List<Object> key = this.getKey(diagClassifyCache, s);
+                    if(key != null && key.size()>0){
+                        for (Object o:key) {
+                            classifySet.add(o.toString());
+                        }
+                    }
+                }
+                List<Object> key = this.getKey(diagClassifyCache, q);
+                if(key != null && key.size()>0){
+                    for (Object o:key) {
+                        classifySet.add(o.toString());
+                    }
+                }
+                if(classifySet != null && classifySet.size()>0){
+                    for (String sq:classifySet
+                         ) {
+                        if(ni.indexOf(sq) >= 0){
+                            ni.remove(sq);
+                        }
+                    }
+                }
+            }
+        }
+        finallyQue.addAll(que);
+        finallyQue.addAll(ni);
+        return finallyQue;
+
+    }
 
 }

+ 7 - 4
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -846,9 +846,12 @@ public class Neo4jAPI {
                 que = conditionType;
                 Map<String, String> queMap = neoPushMap.get(quezhenName);
                 if(queMap != null && queMap.size()>0){
+                    if("拟诊".equals(que) &&queMap.keySet().contains("确诊") ){
+                        continue;
+                    }
                     if(queMap.keySet().contains("拟诊") && "确诊".equals(que) ){
                         queMap.remove("拟诊");
-                        queMap.put("确诊","");
+                        queMap.put(que,"");
                         neoPushMap.put(quezhenName,queMap);
                     }else if(que.equals("警惕")){
                         queMap.put("警惕","");
@@ -995,7 +998,7 @@ public class Neo4jAPI {
                 }
                     diseaseCondition.put(emDis.replace("\"", ""), stringStringMap);
             }
-            Set<String> queset = new LinkedHashSet<>();
+           /* Set<String> queset = new LinkedHashSet<>();
             Set<String> ll = new LinkedHashSet<>();
             Set<String> kk = new LinkedHashSet<>();
             for (Map.Entry<String,Map<String,String>> l:diseaseCondition.entrySet()) {
@@ -1018,8 +1021,8 @@ public class Neo4jAPI {
                 }
                 diseaseCondition1.put(dis,stringStringMap);
             }
-            conditionMap.put("确诊",queset);
-            conditionMap.put("全部诊断",diseaseCondition1);
+            conditionMap.put("确诊",queset);*/
+            conditionMap.put("全部诊断",diseaseCondition);
         } catch (Exception e) {
             e.printStackTrace();
         } finally {