Explorar o código

添加性别年龄缓存,过滤诊断的sex条件

kongwz %!s(int64=6) %!d(string=hai) anos
pai
achega
a530d17b6b

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

@@ -18,6 +18,7 @@ import java.util.*;
 
 import org.diagbot.common.javabean.MedicalIndication;
 import org.diagbot.common.javabean.MedicalIndicationDetail;
+import org.diagbot.graph.util.CacheUtil;
 import org.diagbot.graphWeb.util.MapValueComparator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,8 +39,12 @@ public class GraphCalculate {
 //        ParamsDataProxy paramsDataProxy = new ParamsDataProxy();
 //        paramsDataProxy.createSearchData(request, searchData);
         List<String> inputList = new ArrayList<>();
+        int age = searchData.getAge();
+        String sex = searchData.getSex();
+        logger.info("前端传来的年龄为 :"+age+" 前端传来的性别为 :"+sex);
         //获取缓存
-//        Map<String, String> lexionCache = CacheUtil.getLexionCache();
+        Map<String, String> lexionCache = CacheUtil.getLexionCache();
+        Map<String, Map<String, String>> sexAgeCache = CacheUtil.getSexAgeCache();
         Map<String, Map<String, String>> inputs = searchData.getInputs();
         Set<String> ss = new HashSet<>();
         if(inputs.size()>0){
@@ -69,14 +74,21 @@ public class GraphCalculate {
         List<FeatureRate> featureRates = new ArrayList<>();
         if(condition != null){
             for (Map.Entry<String, Map<String,String>> d : condition.entrySet()) {
-                FeatureRate featureRate = new FeatureRate();
-                featureRate.setFeatureName(d.getKey());
-                featureRate.setExtraProperty("");
-                Map<String, String> value = d.getValue();
-                String s = JSON.toJSONString(value);
-                featureRate.setDesc(s);
-                featureRate.setRate("neo4j");
-                featureRates.add(featureRate);
+                String dis = d.getKey();
+                Map<String, String> sexAgeMap = sexAgeCache.get(dis);
+                if(sexAgeMap != null){
+                    String sexType = sexAgeMap.get("sexType");
+                    if(sex.equals(sexType)){
+                        FeatureRate featureRate = new FeatureRate();
+                        featureRate.setFeatureName(dis);
+                        featureRate.setExtraProperty("");
+                        Map<String, String> value = d.getValue();
+                        String s = JSON.toJSONString(value);
+                        featureRate.setDesc(s);
+                        featureRate.setRate("neo4j");
+                        featureRates.add(featureRate);
+                    }
+                }
             }
         }
         Set<String> diseaseSet =null;
@@ -120,8 +132,7 @@ public class GraphCalculate {
                 responseData.setManagementEvaluation(mangementEvaluation1);
             }
         }
-        int age = searchData.getAge();
-        String sex = searchData.getSex();
+
         //指标推送
         if (featureTypeList.contains("22") ) {
             //查找指标

+ 7 - 0
graph/pom.xml

@@ -27,6 +27,13 @@
             <artifactId>common-service</artifactId>
             <version>1.0.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.diagbot</groupId>
+            <artifactId>nlp</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
         <dependency>
             <groupId>org.neo4j</groupId>
             <artifactId>neo4j</artifactId>

+ 47 - 0
graph/src/main/java/org/diagbot/graph/util/CacheUtil.java

@@ -0,0 +1,47 @@
+package org.diagbot.graph.util;
+
+import org.diagbot.nlp.participle.cfg.Configuration;
+import org.diagbot.nlp.participle.cfg.DefaultConfig;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class CacheUtil {
+    public static Map<String,String> lexionMap=null;
+    public static Map<String,Map<String,String>> sexAgeMap=null;
+    public static Map<String,String> getLexionCache(){
+        String path = "lexicon.dict";
+        Configuration configuration = new DefaultConfig();
+        if(lexionMap == null){
+            lexionMap = new HashMap<>();
+            List<String> contentList = configuration.readFileContents(path);
+            for (String s:contentList) {
+                String[] splits = s.split("\\|");
+                lexionMap.put(splits[0],splits[1]);
+            }
+
+        }
+        return lexionMap;
+    }
+    public static Map<String,Map<String,String>> getSexAgeCache(){
+        String path = "sexAge.dict";
+        Configuration configuration = new DefaultConfig();
+        if(sexAgeMap == null){
+            sexAgeMap = new HashMap<>();
+            List<String> contentList = configuration.readFileContents(path);
+            for (String s:contentList) {
+                Map<String,String> contentMap = new HashMap<>();
+                String[] splits = s.split("\\|");
+                String sexTyep = splits[1];
+                String min_age = splits[2];
+                String max_age = splits[3];
+                contentMap.put("sexType",sexTyep);
+                contentMap.put("min_age",min_age);
+                contentMap.put("max_age",max_age);
+                sexAgeMap.put(splits[0],contentMap);
+            }
+        }
+        return sexAgeMap;
+    }
+}

+ 78 - 0
graph/src/test/java/org/diagbot/graph/CacheFile.java

@@ -0,0 +1,78 @@
+package org.diagbot.graph;
+
+import org.diagbot.pub.jdbc.MysqlJdbc;
+import org.diagbot.pub.utils.security.EncrypDES;
+
+import java.io.FileWriter;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+
+public class CacheFile {
+    public static void main(String[] args) {
+        CacheFile cacheFile = new CacheFile();
+        cacheFile.sexAge();
+    }
+    //诊断和性别,年龄的对应
+    public void sexAge(){
+        MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();//加密对象
+            String path = this.getClass().getClassLoader().getResource("").getPath();
+            path = path.substring(0, path.indexOf("target"));
+            String sql = "SELECT k1.lib_name, k1.lib_type, kcc.sex_type, kcc.min_age, kcc.max_age \n" +
+                    "FROM kl_concept_common kcc, kl_concept k1 \n" +
+                    "where kcc.concept_id = k1.id \n" +
+                    "and k1.lib_type in (18)";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "src/main/resources/sexAge.dict");
+            String r1, r2 ,r3,r4;
+            while (rs.next()) {
+                r1 = rs.getString(1);//诊断名
+                r2 = rs.getString(3);//sexType 1:男 2:女 3:都可以
+                r3 = rs.getString(4);//min_age
+                r4 = rs.getString(5);//max_age
+                fw.write(encrypDES.encrytor(r1 + "|" + r2+ "|" + r3+ "|" + r4));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    //标签类型对应
+    public void contentMaping()  {
+        MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();//加密对象
+            String path = this.getClass().getClassLoader().getResource("").getPath();
+            path = path.substring(0, path.indexOf("target"));
+            String sql = "SELECT id,name FROM `kl_lexicon`";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "src/main/resources/lexicon.dict");
+            String r1, r2;
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                fw.write(encrypDES.encrytor(r1 + "|" + r2));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+}