Bladeren bron

Merge remote-tracking branch 'origin/push-dev' into push-dev-ruletype

Conflicts:
	push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java
louhr 5 jaren geleden
bovenliggende
commit
c35edcaede

+ 4 - 3
algorithm/src/main/java/org/algorithm/core/neural/dataset/NNDataSet.java

@@ -27,7 +27,7 @@ public abstract class NNDataSet {
 
     // 再分词和疾病过滤相关容器
     protected final Map<String, String> RE_SPLIT_WORD_DICT = new HashMap<>();  // 在分词表
-    protected final List<String> FEATURE_NAME_STORE = new ArrayList<>();  // 特征保存
+    protected List<String> FEATURE_NAME_STORE = new ArrayList<>();  // 特征保存
     protected final Map<String, Map<String, Integer>> RELATED_DIAGNOSIS_DICT = new HashMap<>();  // 特征与疾病相关表
     private boolean doFilterDiagnosis = false;  // 是否做疾病过滤
 
@@ -352,8 +352,9 @@ public abstract class NNDataSet {
      * @param features
      */
     public void storeFeatureNames(Map<String, Map<String, String>> features) {
-        this.FEATURE_NAME_STORE.size();  // this.FEATURE_NAME_STORE.clear() 未知原因会出现数据越界异常,加了这个则没有了
-        this.FEATURE_NAME_STORE.clear();
+//        this.FEATURE_NAME_STORE.size();  // this.FEATURE_NAME_STORE.clear() 未知原因会出现数据越界异常,加了这个则没有了
+//        this.FEATURE_NAME_STORE.clear();
+        this.FEATURE_NAME_STORE = new ArrayList<>();
         this.FEATURE_NAME_STORE.addAll(features.keySet());
     }
 

+ 1 - 1
bigdata-web/src/main/java/org/diagbot/bigdata/work/AlgorithmCore.java

@@ -53,7 +53,7 @@ public class AlgorithmCore {
             switch (searchData.getAlgorithmType() == null ? 1 : searchData.getAlgorithmType()) {
                 case 1: //机器学习算法推理
                     executor = AlgorithmFactory.getInstance(classifies[i]);
-                    if (FeatureType.parse(featureTypes[i]) == FeatureType.DIAG) {
+                    if (FeatureType.parse(featureTypes[i]) == FeatureType.DIAG && !"2".equals(searchData.getSysCode())) {
                         bigDataSearchData.setLength(6);//模型推送最多6个比较合理
                     }
                     break;

+ 4 - 4
bigdata-web/src/main/java/org/diagbot/bigdata/work/ResultDataProxy.java

@@ -151,13 +151,13 @@ public class ResultDataProxy {
      * @return
      */
     public ResponseData resultSexAgeFilter(HttpServletRequest request, ResponseData responseData, SearchData searchData) {
-        if (responseData.getLabs().size() > 0) {//化验
+        if (responseData.getLabs() != null && responseData.getLabs().size() > 0) {//化验
             responseData.setLabs(sexFilter(request, responseData.getLabs(), searchData, Constants.feature_type_lis));
         }
-        if (responseData.getPacs().size() > 0) {//辅检
+        if (responseData.getPacs() != null && responseData.getPacs().size() > 0) {//辅检
             responseData.setPacs(sexFilter(request, responseData.getPacs(), searchData, Constants.feature_type_pacs));
         }
-        if (responseData.getVitals().size() > 0) {//查体
+        if (responseData.getVitals() != null && responseData.getVitals().size() > 0) {//查体
             responseData.setVitals(sexFilter(request, responseData.getVitals(), searchData, Constants.feature_type_vital));
         }
         return responseData;
@@ -180,7 +180,7 @@ public class ResultDataProxy {
                 ResultMappingFilter filter = filterMap.get(featureRate.getFeatureName());
                 if (filter != null) {
                     if (filter.getSex() != null && !StringUtils.isEmpty(searchData.getSex())
-                            && !filter.getSex().equals(searchData.getSex())) {      //性别过滤
+                            && filter.getSex().equals(searchData.getSex()) || filter.getSex().equals("3")) {      //性别过滤
                         isFirst = true;
                     } else {
                         isFirst = false;

+ 4 - 4
common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java

@@ -450,10 +450,10 @@ public class CacheFileManager {
             fw.close();
 
             //化验辅检体征性别年龄
-            sql = "SELECT k1.lib_name, k1.lib_type, kcc.sex_type, kcc.min_age, kcc.max_age " +
-                    "FROM kl_concept_common kcc, kl_concept k1 " +
-                    "where kcc.concept_id = k1.id " +
-                    "and k1.lib_type in (1, 18,12,16,33,35)";
+            sql = "SELECT k1.lib_name, k1.lib_type, IFNULL(kcc.sex_type,3) sex_type, IFNULL(kcc.min_age, 0) min_age, IFNULL(kcc.max_age,200)  max_age\n" +
+                    "from kl_concept k1 LEFT JOIN kl_concept_common kcc on kcc.concept_id = k1.id \n" +
+                    "where  k1.lib_type in (1, 18,12,16,33,35)\n" +
+                    "AND k1.is_deleted = 'N'\n";
             st = conn.createStatement();
             rs = st.executeQuery(sql);
             fw = new FileWriter(path + "bigdata_lpv_sex_age_filter.dict");//化验辅检体征相关文件

+ 33 - 0
nlp-web/src/main/java/org/diagbot/nlp/controller/SimilarController.java

@@ -0,0 +1,33 @@
+package org.diagbot.nlp.controller;
+
+import org.diagbot.nlp.similar.SimilarCacheUtil;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author: HUJING
+ * @Date: 2019/10/25 10:38
+ */
+@Controller
+@RequestMapping("/similar")
+public class SimilarController {
+
+    @RequestMapping(value = "/getsimilar", method = RequestMethod.POST)
+    @ResponseBody
+    public static List<String> getSimilarList(@RequestBody String inputWord) {
+        Map<String, List<String>> similarDictMap = SimilarCacheUtil.getSimilar_dict_map();
+        if (similarDictMap.get(inputWord) != null && similarDictMap.get(inputWord).size() > 0) {
+            return similarDictMap.get(inputWord);
+        }
+        return new ArrayList<>();
+    }
+}

+ 3 - 0
nlp/src/main/java/org/diagbot/nlp/participle/cfg/Configuration.java

@@ -10,5 +10,8 @@ public interface Configuration {
 	public Segment loadMainDict(List<String> dicts);
 	public Map<String, String> loadMapDict(String path);
 	public List<String> readFileContents(String path);
+	public List<String> readDirectFileContents(String path);
+	public List<String> readTargetFileContents(String path);
 	void writeFileContents(List<String> contents, String path);
+
 }

+ 61 - 21
nlp/src/main/java/org/diagbot/nlp/participle/cfg/DefaultConfig.java

@@ -86,35 +86,28 @@ public class DefaultConfig implements Configuration {
     }
 
     public List<String> readFileContents(String path) {
-        if (!StringUtils.isEmpty(path_prefix)) path = path_prefix + path;
+        if (!StringUtils.isEmpty(path_prefix)) {
+            path = path_prefix + path;
+        }
+        return readDirectFileContents(path);
+    }
+
+    public List<String> readDirectFileContents(String path) {
         InputStream is = null;
         List<String> fileContents = new ArrayList<String>(10);
         try {
-            if (StringUtils.isEmpty(path)) path = DEFAULT_PATH;
-            is = this.getClass().getClassLoader().getResourceAsStream(path);
+            if (StringUtils.isEmpty(path)) {
+                path = DEFAULT_PATH;
+            }
+            //            is = this.getClass().getClassLoader().getResourceAsStream(path);
             File file = new File(path);
-//            File file = new File(this.getClass().getResource(path).getFile());
+            //            File file = new File(this.getClass().getResource(path).getFile());
             is = new FileInputStream(file);
             if (is == null) {
                 throw new RuntimeException(path + ".......文件未找到!!");
             }
 
-            BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"), 512);
-
-            EncrypDES encrypDES = new EncrypDES();
-            String theWord = null;
-            int i = 0;
-            do {
-                theWord = br.readLine();
-                if (theWord != null && !"".equals(theWord.trim())) {
-                    if (i == 5) {
-                        logger.info("读取文件第六行解密前:" + theWord.trim());
-                        logger.info("读取文件第六行解密后:" + encrypDES.decryptor(theWord.trim()));
-                    }
-                    fileContents.add(encrypDES.decryptor(theWord.trim()));
-                }
-                i++;
-            } while (theWord != null);
+            addFileContents(is, fileContents);
         } catch (Exception ioe) {
             System.err.println("读取文件" + path + "出错.......................");
             ioe.printStackTrace();
@@ -124,12 +117,59 @@ public class DefaultConfig implements Configuration {
         return fileContents;
     }
 
+    public List<String> readTargetFileContents(String path) {
+        InputStream is = null;
+        List<String> fileContents = new ArrayList<String>(10);
+        try {
+            if (StringUtils.isEmpty(path)) {
+                path = DEFAULT_PATH;
+            }
+            is = this.getClass().getClassLoader().getResourceAsStream(path);
+            //            File file = new File(path);
+            //            File file = new File(this.getClass().getResource(path).getFile());
+            //            is = new FileInputStream(file);
+            if (is == null) {
+                throw new RuntimeException(path + ".......文件未找到!!");
+            }
+
+            addFileContents(is, fileContents);
+        } catch (Exception ioe) {
+            System.err.println("读取文件" + path + "出错.......................");
+            ioe.printStackTrace();
+        } finally {
+            this.close(is);
+        }
+        return fileContents;
+    }
+
+    public void addFileContents(InputStream is, List<String> fileContents) throws Exception {
+        BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"), 512);
+
+        EncrypDES encrypDES = new EncrypDES();
+        String theWord = null;
+        int i = 0;
+        do {
+            theWord = br.readLine();
+            if (theWord != null && !"".equals(theWord.trim())) {
+                if (i == 5) {
+                    logger.info("读取文件第六行解密前:" + theWord.trim());
+                    logger.info("读取文件第六行解密后:" + encrypDES.decryptor(theWord.trim()));
+                }
+                fileContents.add(encrypDES.decryptor(theWord.trim()));
+            }
+            i++;
+        } while (theWord != null);
+    }
+
+
     public void writeFileContents(List<String> contents, String path) {
         this.writeFileContents(contents, path, "");
     }
 
     public void writeFileContents(List<String> contents, String path, String separator) {
-        if (!StringUtils.isEmpty(path_prefix)) path = path_prefix + path;
+        if (!StringUtils.isEmpty(path_prefix)) {
+            path = path_prefix + path;
+        }
         try {
             FileWriter fw = new FileWriter(path);
             for (String content : contents) {

+ 92 - 0
nlp/src/main/java/org/diagbot/nlp/similar/SimilarCacheFileManager.java

@@ -0,0 +1,92 @@
+package org.diagbot.nlp.similar;
+
+import org.diagbot.pub.jdbc.MysqlJdbc;
+import org.diagbot.pub.utils.PropertiesUtil;
+import org.diagbot.pub.utils.security.EncrypDES;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+/**
+ * @Description:
+ * @Author: HUJING
+ * @Date: 2019/10/16 13:46
+ */
+public class SimilarCacheFileManager {
+    private String user = "root";
+    private String password = "diagbot@20180822";
+    private String url = "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8";
+
+    private String path = "";
+
+    public static void main(String[] args) {
+        SimilarCacheFileManager similarCacheFileManager = new SimilarCacheFileManager();
+        String resourcePath = similarCacheFileManager.getResourcePath();
+//        PropertiesUtil propertiesUtil = new PropertiesUtil("nlp.properties");
+//        String p = propertiesUtil.getProperty("cache.file.dir");
+        File file = new File(resourcePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        //相似度知识库
+        similarCacheFileManager.createSimilarCacheFile(resourcePath);
+    }
+
+    public String getResourcePath(){
+        return this.getClass().getResource("/").getPath();
+    }
+
+    public SimilarCacheFileManager() {
+//        PropertiesUtil propertiesUtil = new PropertiesUtil("nlp.properties");
+//        String p = propertiesUtil.getProperty("cache.file.dir");
+
+        String resourcePath = getResourcePath();
+        File file = new File(resourcePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        path = resourcePath;
+    }
+
+    public void createCacheFile() {
+        createSimilarCacheFile(path);
+    }
+
+    public void createSimilarCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();
+            //疾病科室
+            String sql = "SELECT similar_1,similar_2 FROM doc_similar";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "bigdata_similar.dict");
+
+            String r1, r2;
+            while (rs.next()) {
+                r1 = rs.getString(1).trim();
+                r2 = rs.getString(2).trim();
+
+                fw.write(encrypDES.encrytor(r1 + "|" + r2));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+}

+ 44 - 0
nlp/src/main/java/org/diagbot/nlp/similar/SimilarCacheUtil.java

@@ -0,0 +1,44 @@
+package org.diagbot.nlp.similar;
+
+import org.diagbot.nlp.participle.cfg.Configuration;
+import org.diagbot.nlp.participle.cfg.DefaultConfig;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author: HUJING
+ * @Date: 2019/10/16 15:30
+ */
+public class SimilarCacheUtil {
+    //相似度知识库
+    public static Map<String, List<String>> similar_dict_map = null;
+
+    public static Map<String, List<String>> getSimilar_dict_map() {
+        if (similar_dict_map == null) {
+            createSimilar_dict_map();
+        }
+        return similar_dict_map;
+    }
+
+    public static Map<String, List<String>> createSimilar_dict_map() {
+        similar_dict_map = new HashMap<>();
+        List<String> similarList = null;
+        Configuration configuration = new DefaultConfig();
+        List<String> fileContents = configuration.readTargetFileContents("bigdata_similar.dict");
+        for (String line:fileContents) {
+            String[] similarPair = line.split("\\|", -1);
+            if (similar_dict_map.get(similarPair[0]) == null){
+                similarList = new ArrayList<>();
+                similarList.add(similarPair[1]);
+                similar_dict_map.put(similarPair[0],similarList);
+            } else {
+                similar_dict_map.get(similarPair[0]).add(similarPair[1]);
+            }
+        }
+        return similar_dict_map;
+    }
+}

+ 21 - 0
nlp/src/main/java/org/diagbot/nlp/similar/SimilarUtil.java

@@ -0,0 +1,21 @@
+package org.diagbot.nlp.similar;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author: HUJING
+ * @Date: 2019/10/16 15:59
+ */
+public class SimilarUtil {
+
+    public static List<String> getSimilarList(String inputWord) {
+        Map<String, List<String>> similarDictMap = SimilarCacheUtil.getSimilar_dict_map();
+        if (similarDictMap.get(inputWord) != null && similarDictMap.get(inputWord).size() > 0){
+            return similarDictMap.get(inputWord);
+        }
+        return new ArrayList<>();
+    }
+}

File diff suppressed because it is too large
+ 57738 - 0
nlp/src/main/resources/bigdata_similar.dict


+ 110 - 0
nlp/src/test/java/org/diagbot/nlp/test/Similar2DBTest.java

@@ -0,0 +1,110 @@
+package org.diagbot.nlp.test;
+
+import org.diagbot.nlp.similar.SimilarUtil;
+import org.diagbot.pub.jdbc.MysqlJdbc;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Description:
+ * @Author: HUJING
+ * @Date: 2019/10/16 10:11
+ */
+public class Similar2DBTest {
+    private String user = "root";
+    private String password = "diagbot@20180822";
+    private String url = "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8";
+
+    public static void main(String[] args) {
+//        String fileName = "D:/大数据小组/相似度知识库.txt";
+//        Similar2DBTest similar2DBTest = new Similar2DBTest();
+//        Map<String, Set<String>> similarFile = similar2DBTest.readSimilarFile(fileName);
+//        similar2DBTest.write2DB(similarFile);
+        List<String> similarList = SimilarUtil.getSimilarList("表情淡漠");
+        System.out.println(similarList);
+        similarList = SimilarUtil.getSimilarList("右侧乳房");
+        System.out.println(similarList);
+//        SimilarCacheFileManager similarCacheFileManager = new SimilarCacheFileManager();
+//        String resourcePath = similarCacheFileManager.getResourcePath();
+//        System.out.println(resourcePath);
+
+    }
+
+    public Map<String, Set<String>> readSimilarFile(String fileName) {
+        BufferedReader reader = null;
+        Map<String, Set<String>> similarMap = new HashMap<>();
+        Set<String> similarSet = null;
+        try {
+            reader = new BufferedReader(new FileReader(new File(fileName)));
+            String line = "";
+            while ((line = reader.readLine()) != null) {
+                line = line.replaceAll("\'|]|\\[", "");
+                String[] words = line.split(",");
+                if (similarMap.get(words[0]) == null) {
+                    similarSet = new HashSet<>();
+                    similarSet.add(words[1]);
+                    similarMap.put(words[0], similarSet);
+                } else {
+                    similarMap.get(words[0]).add(words[1]);
+                }
+                //                System.out.println(line);
+            }
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                reader.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return similarMap;
+    }
+
+    public void write2DB(Map<String, Set<String>> similarMap) {
+        MysqlJdbc jdbc = new MysqlJdbc(user, password, url);
+        Connection conn = jdbc.connect();
+        PreparedStatement pst = null;
+        String sql = "INSERT INTO doc_similar(similar_1,similar_2) VALUES(?,?)";
+        try {
+            pst = conn.prepareStatement(sql);
+
+            String similar1 = "";
+            int i = 1;
+            for (Map.Entry<String, Set<String>> similarFileMap : similarMap.entrySet()) {
+                //            System.out.println(similarFileMap.getKey());
+                similar1 = similarFileMap.getKey();
+                pst.setString(1, similar1);
+                for (String similar2 : similarFileMap.getValue()) {
+                    pst.setString(2, similar2);
+                    System.out.println(i++);
+                    pst.addBatch();
+                    pst.executeBatch();
+                }
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                pst.close();
+                conn.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}

+ 77 - 74
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -151,80 +151,83 @@ public class AlgorithmController extends BaseController {
 
         //大数据推送
 //        searchData.setLength(6);    //模型推送最多6个比较合理
-//        AlgorithmCore core = new AlgorithmCore();
-//        ResponseData bigDataResponseData = core.algorithm(request, searchData, responseData);
-//
-//        GraphCalculate graphCalculate = new GraphCalculate();
-//        ResponseData graphResponseData = graphCalculate.calculate(request, searchData);
-//        if (graphResponseData.getDis().size() > 0) {
-//            List<FeatureRate> disFeatureRates = new ArrayList<>();
-//            List<FeatureRate> bigdis = bigDataResponseData.getDis();
-//            List<FeatureRate> graphdis = graphResponseData.getDis();
-//            for (FeatureRate bg:graphdis) {
-//                Iterator<FeatureRate> iterator = bigdis.iterator();
-//                while (iterator.hasNext()){
-//                    FeatureRate gd = iterator.next();
-//                    if(gd.getFeatureName().equals(bg.getFeatureName()) &&(bg.getDesc().contains("确诊")|| bg.getDesc().contains("拟诊"))){
-//                        iterator.remove();
-//                    }
-//                }
-//            }
-//            disFeatureRates = bigdis;
-//            List<FeatureRate> graphFeatureRates = graphResponseData.getDis();
-//            graphFeatureRates.addAll(disFeatureRates);
-//            bigDataResponseData.setDis(graphFeatureRates);
-//        }
-//        //归一之前诊断信息
-//        bigDataResponseData.setBeforeCombineDis(bigDataResponseData.getDis());
-//        //推送出的诊断信息作为参数传入知识图谱
-//        List<FeatureRate> pushDiags = new ArrayList<>();
-//        pushDiags.addAll(bigDataResponseData.getDis());
-//        searchData.setPushDiags(pushDiags);
-//        bigDataResponseData.setTreat(graphResponseData.getTreat());
-//
-//        //量表和指标推送
-//        Map<String, List<CrisisDetail>> crisisDetails = responseData.getCrisisDetails();
-//        List<MedicalIndication> crisisDetailsList = this.getCrisisDetails(crisisDetails);
-//        List<MedicalIndication> medicalIndications = graphResponseData.getMedicalIndications();
-//        if (medicalIndications == null) {
-//            medicalIndications = new ArrayList<>();
-//        }
-//        medicalIndications.addAll(crisisDetailsList);
-//        if (medicalIndications != null && medicalIndications.size() > 0) {
-//            logger.info("指标推送!!!!!!!!!");
-//            //           bigDataResponseData.getMedicalIndications().addAll(medicalIndications);
-//            bigDataResponseData.setMedicalIndications(medicalIndications);
-//        }
-//
-//        //推送管理评估
-//        bigDataResponseData.setManagementEvaluation(graphResponseData.getManagementEvaluation());
-//
-//        //知识图谱直接替换大数据中的检验检查数据
-//        Map<String, List<FeatureRate>> lisPacs = graphCalculate.getLisPacs(request, searchData);
-//        bigDataResponseData.setLabs(lisPacs.get("lisList"));
-//        bigDataResponseData.setPacs(lisPacs.get("pacsList"));
-//        //体征结果和指标推送
-//        Map<String, String> vitalCache = CacheUtil.getVitalCache();
-//        List<String> featureList = Arrays.asList(searchData.getFeatureTypes());
-//        List<FeatureRate> vitals = lisPacs.get("vitalResultList");
-//        if (featureList.contains(Constants.feature_type_vital_index) && this.getVital(vitalCache, vitals).size() > 0) {
-//            bigDataResponseData.setVitals(this.getVital(vitalCache, vitals));
-//
-//        }
-//        if (featureList.contains(Constants.feature_type_vital) && vitals.size() > 0) {
-//            bigDataResponseData.setVitals(vitals);
-//        }
-//
-//        //把所有的诊断拿出来经过过滤层过滤
-//        ClassifyDiag classifyDiag = new ClassifyDiag();
-//        List<FeatureRate> upfes = classifyDiag.filterDiag(graphResponseData, pushDiags);
-//        List<FeatureRate> classify = classifyDiag.diagClassify(upfes);
-//        List<FeatureRate> featureRates = classifyDiag.sortDiag(classify);
-//        bigDataResponseData.setDis(featureRates);
-//        //返回结果化验、辅检、体征、进行性别年龄过滤
-//        ResultDataProxy resultDataProxy = new ResultDataProxy();
-//        resultDataProxy.resultSexAgeFilter(request, bigDataResponseData, searchData);
-//        response.setData(bigDataResponseData);
+        AlgorithmCore core = new AlgorithmCore();
+        ResponseData bigDataResponseData = core.algorithm(request, searchData, responseData);
+        bigDataResponseData.setVitals(new ArrayList<>());
+        bigDataResponseData.setLabs(new ArrayList<>());
+        bigDataResponseData.setPacs(new ArrayList<>());
+
+        GraphCalculate graphCalculate = new GraphCalculate();
+        ResponseData graphResponseData = graphCalculate.calculate(request, searchData);
+        if (graphResponseData.getDis().size() > 0) {
+            List<FeatureRate> disFeatureRates = new ArrayList<>();
+            List<FeatureRate> bigdis = bigDataResponseData.getDis();
+            List<FeatureRate> graphdis = graphResponseData.getDis();
+            for (FeatureRate bg:graphdis) {
+                Iterator<FeatureRate> iterator = bigdis.iterator();
+                while (iterator.hasNext()){
+                    FeatureRate gd = iterator.next();
+                    if(gd.getFeatureName().equals(bg.getFeatureName()) &&(bg.getDesc().contains("确诊")|| bg.getDesc().contains("拟诊"))){
+                        iterator.remove();
+                    }
+                }
+            }
+            disFeatureRates = bigdis;
+            List<FeatureRate> graphFeatureRates = graphResponseData.getDis();
+            graphFeatureRates.addAll(disFeatureRates);
+            bigDataResponseData.setDis(graphFeatureRates);
+        }
+        //归一之前诊断信息
+        bigDataResponseData.setBeforeCombineDis(bigDataResponseData.getDis());
+        //推送出的诊断信息作为参数传入知识图谱
+        List<FeatureRate> pushDiags = new ArrayList<>();
+        pushDiags.addAll(bigDataResponseData.getDis());
+        searchData.setPushDiags(pushDiags);
+        bigDataResponseData.setTreat(graphResponseData.getTreat());
+
+        //量表和指标推送
+        Map<String, List<CrisisDetail>> crisisDetails = responseData.getCrisisDetails();
+        List<MedicalIndication> crisisDetailsList = this.getCrisisDetails(crisisDetails);
+        List<MedicalIndication> medicalIndications = graphResponseData.getMedicalIndications();
+        if (medicalIndications == null) {
+            medicalIndications = new ArrayList<>();
+        }
+        medicalIndications.addAll(crisisDetailsList);
+        if (medicalIndications != null && medicalIndications.size() > 0) {
+            logger.info("指标推送!!!!!!!!!");
+            //           bigDataResponseData.getMedicalIndications().addAll(medicalIndications);
+            bigDataResponseData.setMedicalIndications(medicalIndications);
+        }
+
+        //推送管理评估
+        bigDataResponseData.setManagementEvaluation(graphResponseData.getManagementEvaluation());
+
+        //知识图谱直接替换大数据中的检验检查数据
+        Map<String, List<FeatureRate>> lisPacs = graphCalculate.getLisPacs(request, searchData);
+        bigDataResponseData.setLabs(lisPacs.get("lisList"));
+        bigDataResponseData.setPacs(lisPacs.get("pacsList"));
+        //体征结果和指标推送
+        Map<String, String> vitalCache = CacheUtil.getVitalCache();
+        List<String> featureList = Arrays.asList(searchData.getFeatureTypes());
+        List<FeatureRate> vitals = lisPacs.get("vitalResultList");
+        if (featureList.contains(Constants.feature_type_vital_index) && this.getVital(vitalCache, vitals).size() > 0) {
+            bigDataResponseData.setVitals(this.getVital(vitalCache, vitals));
+
+        }
+        if (featureList.contains(Constants.feature_type_vital) && vitals.size() > 0) {
+            bigDataResponseData.setVitals(vitals);
+        }
+
+        //把所有的诊断拿出来经过过滤层过滤
+        ClassifyDiag classifyDiag = new ClassifyDiag();
+        List<FeatureRate> upfes = classifyDiag.filterDiag(graphResponseData, pushDiags);
+        List<FeatureRate> classify = classifyDiag.diagClassify(upfes);
+        List<FeatureRate> featureRates = classifyDiag.sortDiag(classify);
+        bigDataResponseData.setDis(featureRates);
+        //返回结果化验、辅检、体征、进行性别年龄过滤
+        ResultDataProxy resultDataProxy = new ResultDataProxy();
+        resultDataProxy.resultSexAgeFilter(request, bigDataResponseData, searchData);
+        response.setData(bigDataResponseData);
         return response;
     }
 

+ 2 - 2
push-web/src/main/resources/static/pages/algorithm/list.html

@@ -400,13 +400,13 @@
             $('#diag_list').html("");
             $('#before_combine_diag_list').html("");
             startDiag('/algorithm/page_neural', '#symptom_list', '1', resourceType, '111', '1');
-            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7', resourceType, '131', '3');
+            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7,42', resourceType, '131', '3');
             startDiag('/algorithm/page_neural', '#lis_list', '4,2,7', resourceType, '141', '4');
             startDiag('/algorithm/page_neural', '#pacs_list', '5,2,7', resourceType, '151', '5');
 
         } else {
             startDiag('/algorithm/page_neural', '#symptom_list', '1', resourceType, '11', '1');
-            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7', resourceType, '31', '3');
+            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7,42', resourceType, '31', '3');
             startDiag('/algorithm/page_neural', '#lis_list', '4,2,7', resourceType, '41', '4');
             startDiag('/algorithm/page_neural', '#pacs_list', '5,2,7', resourceType, '51', '5');