Преглед изворни кода

诊断的过滤和排序整合到同一类中

kongwz пре 5 година
родитељ
комит
ea30f3d2fe

+ 75 - 0
graph-web/src/main/java/org/diagbot/graphWeb/work/FilterSortDiag.java

@@ -0,0 +1,75 @@
+package org.diagbot.graphWeb.work;
+
+import org.apache.commons.lang3.StringUtils;
+import org.diagbot.common.work.FeatureRate;
+import org.diagbot.common.work.ResponseData;
+import org.diagbot.graph.jdbc.Neo4jAPI;
+import org.diagbot.graph.util.CacheUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+
+/**
+ * 诊断的过滤和排序
+ */
+public class FilterSortDiag {
+    Logger logger = LoggerFactory.getLogger(FilterSortDiag.class);
+    /**
+     * 过滤诊断
+     */
+    public List<FeatureRate> filterDiag(ResponseData graphResponseData, List<FeatureRate> graphFeatureRates) throws Exception {
+        List<String> removeDiagList = graphResponseData.getExcludeDiag();
+        //将需要排除的诊断从列表中删除
+        List<FeatureRate> updateFeatureRates = new ArrayList<>();
+        for (int j = 0; j < graphFeatureRates.size(); j++) {
+            if (removeDiagList.indexOf(graphFeatureRates.get(j).getFeatureName()) == -1) {
+                updateFeatureRates.add(graphFeatureRates.get(j));
+            }
+        }
+        return updateFeatureRates;
+    }
+
+    public List<FeatureRate> sortDiag(List<FeatureRate> updateFeatureRates){
+        Map<String, String> diagSortCache = CacheUtil.getDiagSortCache();
+        List<String> finalDiagList = new LinkedList<>();
+        List<String> neoDiagList = new LinkedList<>();
+        List<String> bigDataIDiagList = new LinkedList<>();
+        List<String> bigDataIIDiagList = new LinkedList<>();
+        List<FeatureRate> finalDiagFeature = new LinkedList<>();
+        if(updateFeatureRates != null || updateFeatureRates.size()>0){
+            for (FeatureRate feature:updateFeatureRates) {
+                String featureName = feature.getFeatureName();
+                String source = feature.getSource();
+                if("neo4j".equals(source)){
+                    neoDiagList.add(featureName);
+                }else {
+                    String s = diagSortCache.get(featureName);
+                    if(StringUtils.isNotEmpty(s)){
+                        if("Ⅰ".equals(s)){
+                            bigDataIDiagList.add(featureName);
+                        }else if("Ⅱ".equals(s)){
+                            bigDataIIDiagList.add(featureName);
+                        }
+                    }else {
+                        bigDataIDiagList.add(featureName);
+                    }
+                }
+            }
+        }
+        finalDiagList.addAll(neoDiagList);
+        finalDiagList.addAll(bigDataIDiagList);
+        finalDiagList.addAll(bigDataIIDiagList);
+        if(finalDiagList != null && finalDiagList.size()>0){
+            for (String diag:finalDiagList){
+                for (FeatureRate f:updateFeatureRates) {
+                    if(diag.equals(f.getFeatureName())){
+                        finalDiagFeature.add(f);
+                        break;
+                    }
+                }
+            }
+        }
+        return finalDiagFeature;
+    }
+}

+ 7 - 66
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -11,6 +11,7 @@ import org.diagbot.common.work.ResponseData;
 import org.diagbot.common.work.SearchData;
 import org.diagbot.graph.util.CacheUtil;
 import org.diagbot.graphWeb.work.DiseaseCalculate;
+import org.diagbot.graphWeb.work.FilterSortDiag;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.nlp.util.Constants;
@@ -143,34 +144,15 @@ public class AlgorithmController extends BaseController {
             List<FeatureRate> graphFeatureRates = graphResponseData.getDis();
             graphFeatureRates.addAll(disFeatureRates);
             //把所有的诊断拿出来经过过滤层过滤
-
-            //将需要排除的诊断从列表中删除
-            List<FeatureRate> updateFeatureRates = new ArrayList<>();
-            List<String> removeDis = graphResponseData.getExcludeDiag();
-            for (int j = 0; j < graphFeatureRates.size(); j++) {
-                if (removeDis.indexOf(graphFeatureRates.get(j).getFeatureName()) == -1) {
-                    updateFeatureRates.add(graphFeatureRates.get(j));
-                }
-            }
-            //诊断排序
-            Map<String, String> diagSortCache = CacheUtil.getDiagSortCache();
-            List<FeatureRate> finalDiagList = this.processDiagSort(updateFeatureRates, diagSortCache);
-
-            //大数据推送疾病数据用知识图谱替换
-//            bigDataResponseData.setDis(updateFeatureRates);
-            bigDataResponseData.setDis(finalDiagList);
+            FilterSortDiag filterSortDiag = new FilterSortDiag();
+            List<FeatureRate> filterDiagList = filterSortDiag.filterDiag(graphResponseData, graphFeatureRates);
+            List<FeatureRate> filterSortDiagList = filterSortDiag.sortDiag(filterDiagList);
+            bigDataResponseData.setDis(filterSortDiagList);
         }
-
         //推送出的诊断信息作为参数传入知识图谱
         List<FeatureRate> pushDiags = new ArrayList<>();
         pushDiags.addAll(bigDataResponseData.getDis());
-
-//        for (FeatureRate fr : bigDataResponseData.getDis()) {
-//            pushDiags.add(fr);
-//            logger.info("合并知识图谱、大数据后推送的诊断信息....: " + fr.getFeatureName());
-//        }
         searchData.setPushDiags(pushDiags);
-
         bigDataResponseData.setTreat(graphResponseData.getTreat());
         //量表和指标推送
         List<MedicalIndication> medicalIndications = graphResponseData.getMedicalIndications();
@@ -181,13 +163,12 @@ public class AlgorithmController extends BaseController {
         //推送管理评估
         bigDataResponseData.setManagementEvaluation(graphResponseData.getManagementEvaluation());
         //知识图谱直接替换大数据中的检验检查数据
-//        if(searchData.getDiag() !=null || searchData.getPushDiags() != null){
         LisPacsCalculate lisPacsCalculate = new LisPacsCalculate();
         graphResponseData = lisPacsCalculate.getLisPacs(request, searchData);
 
         bigDataResponseData.setLabs(graphResponseData.getLabs());
         bigDataResponseData.setPacs(graphResponseData.getPacs());
-//        }
+
         //体征结果和指标推送
         Map<String, String> vitalCache = CacheUtil.getVitalCache();
         List<String> featureList = Arrays.asList(searchData.getFeatureTypes());
@@ -202,47 +183,7 @@ public class AlgorithmController extends BaseController {
         response.setData(bigDataResponseData);
         return response;
     }
-    public List<FeatureRate> processDiagSort(List<FeatureRate> updateFeatureRates, Map<String, String> diagSortCache){
-        List<String> finalDiagList = new LinkedList<>();
-        List<String> neoDiagList = new LinkedList<>();
-        List<String> bigDataIDiagList = new LinkedList<>();
-        List<String> bigDataIIDiagList = new LinkedList<>();
-        List<FeatureRate> finalDiagFeature = new LinkedList<>();
-        if(updateFeatureRates != null || updateFeatureRates.size()>0){
-            for (FeatureRate feature:updateFeatureRates) {
-                String featureName = feature.getFeatureName();
-                String source = feature.getSource();
-                if("neo4j".equals(source)){
-                   neoDiagList.add(featureName);
-               }else {
-                    String s = diagSortCache.get(featureName);
-                    if(StringUtils.isNotEmpty(s)){
-                        if("Ⅰ".equals(s)){
-                            bigDataIDiagList.add(featureName);
-                        }else if("Ⅱ".equals(s)){
-                            bigDataIIDiagList.add(featureName);
-                        }
-                    }else {
-                        bigDataIDiagList.add(featureName);
-                    }
-                }
-            }
-        }
-        finalDiagList.addAll(neoDiagList);
-        finalDiagList.addAll(bigDataIDiagList);
-        finalDiagList.addAll(bigDataIIDiagList);
-        if(finalDiagList != null && finalDiagList.size()>0){
-            for (String diag:finalDiagList){
-                for (FeatureRate f:updateFeatureRates) {
-                    if(diag.equals(f.getFeatureName())){
-                        finalDiagFeature.add(f);
-                        break;
-                    }
-                }
-            }
-        }
-        return finalDiagFeature;
-    }
+
     public List<FeatureRate> getVital(Map<String, String> vitalCache,List<FeatureRate> vitals){
         Set<String> vitalSet = new LinkedHashSet<>();
         List<FeatureRate> vitalList = new ArrayList<>();