Explorar o código

化验辅检体征,性别年龄过滤

wangyu %!s(int64=5) %!d(string=hai) anos
pai
achega
3ccbb6b96c

+ 49 - 0
common-push/src/main/java/org/diagbot/common/push/cache/ApplicationCacheUtil.java

@@ -20,6 +20,8 @@ public class ApplicationCacheUtil {
     public static Map<String, String> doc_result_mapping_diag_map = null;
     //特征性别 年龄过滤等
     public static Map<String, Map<String, ResultMappingFilter>> doc_result_mapping_filter_map = null;
+    //化验辅检体征 性别 年龄过滤等
+    public static Map<String, Map<String, ResultMappingFilter>> doc_result_mapping_lpvSex_filter_map = null;
     // 规则
     public static Map<String, List<Rule>> kl_rule_filter_map = null;
     //危险值提醒
@@ -45,6 +47,13 @@ public class ApplicationCacheUtil {
         return doc_result_mapping_diag_map;
     }
 
+    public static Map<String, Map<String, ResultMappingFilter>> getDoc_result_mapping_lpvSex_filter_map() {
+        if (doc_result_mapping_lpvSex_filter_map == null) {
+            createDoc_result_mapping_lpvSex_filter_map();
+        }
+        return doc_result_mapping_lpvSex_filter_map;
+    }
+
     public static Map<String, Map<String, ResultMappingFilter>> getDoc_result_mapping_filter_map() {
         if (doc_result_mapping_filter_map == null) {
             createDoc_result_mapping_filter_map();
@@ -87,6 +96,46 @@ public class ApplicationCacheUtil {
         return doc_result_mapping_filter_map;
     }
 
+    /**
+     * 化验辅检体征年龄性别过滤
+     *
+     * @return
+     */
+    public static Map<String, Map<String, ResultMappingFilter>> createDoc_result_mapping_lpvSex_filter_map() {
+        Configuration configuration = new DefaultConfig();
+        List<String> fileContents = configuration.readFileContents("bigdata_lpv_sex_age_filter.dict");
+        String[] line_string;
+        List<ResultMappingFilter> resultMappingFilters = new ArrayList<>();
+        try {
+            for (int i = 0; i < fileContents.size(); i++) {
+                line_string = org.apache.commons.lang3.StringUtils.split(fileContents.get(i), "\\|");
+                if (line_string.length == 5) {
+                    ResultMappingFilter resultMappingFilter = new ResultMappingFilter();
+                    resultMappingFilter.setFeatureName(line_string[0]);
+                    resultMappingFilter.setFeatureType(line_string[1]);
+                    resultMappingFilter.setSex(line_string[2]);
+                    resultMappingFilter.setAgeStart(Integer.parseInt(line_string[3]));
+                    resultMappingFilter.setAgeEnd(Integer.parseInt(line_string[4]));
+                    resultMappingFilters.add(resultMappingFilter);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        doc_result_mapping_lpvSex_filter_map = new HashMap<>();
+        Map<String, ResultMappingFilter> filterMap = null;
+        for (ResultMappingFilter resultMappingFilter : resultMappingFilters) {
+            filterMap = doc_result_mapping_lpvSex_filter_map.get(resultMappingFilter.getFeatureType());
+            if (filterMap == null) {
+                filterMap = new HashMap<>();
+            }
+            filterMap.put(resultMappingFilter.getFeatureName(), resultMappingFilter);
+            doc_result_mapping_lpvSex_filter_map.put(resultMappingFilter.getFeatureType(), filterMap);
+        }
+        return doc_result_mapping_lpvSex_filter_map;
+    }
+
 
     public static Map<String, List<Rule>> getKl_rule_filter_map() {
         if (kl_rule_filter_map == null) {

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

@@ -386,6 +386,38 @@ public class CacheFileManager {
                 fw.write("\n");
             }
             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)";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "bigdata_lpv_sex_age_filter.dict");//化验辅检体征相关文件
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                r4 = rs.getString(4);
+                r5 = rs.getString(5);
+                if ("18".equals(r2)) {//诊断
+                    r2 = "2";
+                }
+                if ("12".equals(r2)) {//化验
+                    r2 = "4";
+                }
+                if ("16".equals(r2)) {//辅检
+                    r2 = "5";
+                }
+                if ("33".equals(r2) | "35".equals(r2)) {//体征
+                    r2 = "3";
+                }
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3 + "|" + r4 + "|" + r5));
+                fw.write("\n");
+            }
+            fw.close();
+
         } catch (IOException ioe) {
             ioe.printStackTrace();
         } catch (SQLException sqle) {

+ 84 - 0
common-push/src/main/java/org/diagbot/common/push/work/ResultDataProxys.java

@@ -0,0 +1,84 @@
+package org.diagbot.common.push.work;
+
+import com.alibaba.fastjson.JSON;
+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.bean.ResultMappingFilter;
+import org.diagbot.common.push.bean.SearchData;
+import org.diagbot.common.push.cache.ApplicationCacheUtil;
+import org.diagbot.nlp.util.Constants;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/9/24 13:11
+ */
+public class ResultDataProxys {
+
+    /**
+     * 化验辅检体征,年龄性别过滤
+     *
+     * @param responseData
+     * @param searchData
+     * @return
+     */
+    public ResponseData proxy(HttpServletRequest request ,ResponseData responseData, SearchData searchData) {
+       if (responseData.getLabs().size() > 0){//化验
+           responseData.setLabs(sexFilter(request,responseData.getLabs(),searchData, Constants.feature_type_lis));
+       }
+       if (responseData.getPacs().size() > 0){//辅检
+            responseData.setPacs(sexFilter(request,responseData.getPacs(),searchData, Constants.feature_type_pacs));
+       }
+       if (responseData.getVitals().size() > 0){//查体
+            responseData.setVitals(sexFilter(request,responseData.getVitals(),searchData, Constants.feature_type_vital));
+       }
+        return responseData;
+    }
+
+    public List<FeatureRate> sexFilter(HttpServletRequest request ,List<FeatureRate> featureList , SearchData searchData , String featureType){
+        List<FeatureRate> featureRates = new ArrayList<>(10);//用来存放传入的数据结果
+        List<FeatureRate> featureRateList = new ArrayList<>(10);//用来存放返回结果
+        Map<String, Map<String, ResultMappingFilter>> resultMappingFilterMap = ApplicationCacheUtil.getDoc_result_mapping_lpvSex_filter_map();
+        boolean isFirst = false;
+        for(int i = 0;i<featureList.size();i++){
+            FeatureRate entity = JSON.parseObject(JSON.toJSONString(featureList.get(i)),FeatureRate.class);
+            featureRates.add(entity);
+        }
+        for (FeatureRate featureRate: featureRates) {
+            //性别年龄过滤
+            Map<String, ResultMappingFilter> filterMap = resultMappingFilterMap.get(featureType);
+            if (filterMap != null) {
+                ResultMappingFilter filter = filterMap.get(featureRate.getFeatureName());
+                if (filter != null) {
+                    if (filter.getSex() != null && !StringUtils.isEmpty(searchData.getSex())
+                            && !filter.getSex().equals(searchData.getSex())) {      //性别过滤
+                        isFirst = true;
+                    }else {
+                        isFirst = false;
+                    }
+                    //年龄过滤
+                    if (filter.getAgeStart() > -1 && searchData.getAge() != 0 && searchData.getAge() < filter.getAgeEnd()) {
+                        isFirst = true;
+                    }else {
+                        isFirst = false;
+                    }
+                    if (filter.getAgeEnd() > -1 && searchData.getAge() != 0 && searchData.getAge() > filter.getAgeStart()) {
+                        isFirst = true;
+                    }else {
+                        isFirst = false;
+                    }
+                }
+                if (isFirst){
+                    featureRateList.add(featureRate);
+                }
+            }
+        }
+        return featureRateList;
+    }
+}

+ 18 - 2
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -7,11 +7,16 @@ import org.diagbot.common.push.bean.CrisisDetail;
 import org.diagbot.common.push.bean.FeatureRate;
 import org.diagbot.common.push.bean.ResponseData;
 import org.diagbot.common.push.bean.SearchData;
-import org.diagbot.common.push.bean.neo4j.*;
+import org.diagbot.common.push.bean.neo4j.Drugs;
+import org.diagbot.common.push.bean.neo4j.Filnlly;
+import org.diagbot.common.push.bean.neo4j.MedicalIndication;
+import org.diagbot.common.push.bean.neo4j.MedicalIndicationDetail;
+import org.diagbot.common.push.bean.neo4j.Medicition;
 import org.diagbot.common.push.cache.CacheUtil;
 import org.diagbot.common.push.filter.ClassifyDiag;
 import org.diagbot.common.push.filter.rule.PretreatmentRule;
 import org.diagbot.common.push.work.ParamsDataProxy;
+import org.diagbot.common.push.work.ResultDataProxys;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.nlp.util.Constants;
@@ -31,7 +36,15 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @ClassName org.diagbot.push.controller.AlgorithmController
@@ -121,6 +134,7 @@ public class AlgorithmController extends BaseController {
 
     public Response<ResponseData> combine(HttpServletRequest request, SearchData searchData) throws Exception {
         ResponseData responseData = new ResponseData();
+        ResultDataProxys resultDataProxys = new ResultDataProxys();
         logger.info("开始推送服务......");
         Response<ResponseData> response = new Response();
         //一些基本信息预处理 如年龄 性别
@@ -205,6 +219,8 @@ public class AlgorithmController extends BaseController {
         List<FeatureRate> classify = classifyDiag.diagClassify(upfes);
         List<FeatureRate> featureRates = classifyDiag.sortDiag(classify);
         bigDataResponseData.setDis(featureRates);
+        //返回结果化验、辅检、体征、进行性别年龄过滤
+        resultDataProxys.proxy(request ,bigDataResponseData,searchData);
         response.setData(bigDataResponseData);
         return response;
     }