Procházet zdrojové kódy

添加抽取症状接口、整理代码

louhr před 6 roky
rodič
revize
a21e8b2bac
17 změnil soubory, kde provedl 57229 přidání a 333525 odebrání
  1. 1 6
      bigdata-web/src/main/java/org/diagbot/bigdata/common/ApplicationCacheUtil.java
  2. 8 11
      bigdata-web/src/main/java/org/diagbot/bigdata/common/InitListener.java
  3. 3 3
      bigdata-web/src/main/java/org/diagbot/bigdata/dao/mapper/FeatureMappingMapper.java
  4. 1 1
      bigdata-web/src/main/java/org/diagbot/bigdata/dao/model/FeatureMapping.java
  5. 0 7
      bigdata-web/src/main/java/org/diagbot/bigdata/dao/model/wrapper/FeatureMappingWrapper.java
  6. 7 0
      bigdata-web/src/main/java/org/diagbot/bigdata/dao/model/wrapper/ResultMappingVitalWrapper.java
  7. 7 7
      bigdata-web/src/main/java/org/diagbot/bigdata/dao/xml/FeatureMappingMapper.xml
  8. 0 8
      bigdata-web/src/main/java/org/diagbot/bigdata/service/FeatureMappingService.java
  9. 8 0
      bigdata-web/src/main/java/org/diagbot/bigdata/service/ResultMappingVitalService.java
  10. 0 21
      bigdata-web/src/main/java/org/diagbot/bigdata/service/impl/FeatureMappingServiceImpl.java
  11. 21 0
      bigdata-web/src/main/java/org/diagbot/bigdata/service/impl/ResultMappingVitalServiceImpl.java
  12. 1 1
      bigdata-web/src/main/java/org/diagbot/bigdata/util/BigDataConstants.java
  13. 36 24
      bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java
  14. 3 3
      bigdata-web/src/main/java/org/diagbot/bigdata/work/ResultDataProxy.java
  15. 17 1
      nlp-web/src/main/java/org/diagbot/nlp/controller/FeatureController.java
  16. 57114 333432
      nlp/src/main/resources/push-tc.dict
  17. 2 0
      nlp/src/main/resources/tc.dict

+ 1 - 6
bigdata-web/src/main/java/org/diagbot/bigdata/common/ApplicationCacheUtil.java

@@ -1,11 +1,6 @@
 package org.diagbot.bigdata.common;
 
-import org.apache.commons.lang3.StringUtils;
 import org.diagbot.bigdata.util.BigDataConstants;
-import org.diagbot.common.dao.model.StandardInfo;
-import org.diagbot.common.service.StandardInfoService;
-import org.diagbot.nlp.util.Constants;
-import org.diagbot.nlp.util.NegativeEnum;
 import org.diagbot.nlp.util.NlpCache;
 
 import javax.servlet.ServletContext;
@@ -13,7 +8,7 @@ import java.util.*;
 
 public class ApplicationCacheUtil {
 
-    public void putStandardInfoContext(ServletContext servletContext, StandardInfoService standardInfoService) {
+    public void putStandardInfoContext(ServletContext servletContext) {
         Map<String, Object> map = new HashMap<>(10, 0.8f);
         //同义词缓存
         servletContext.setAttribute(BigDataConstants.standard_info_synonym_cache, NlpCache.getStandard_info_synonym_map());

+ 8 - 11
bigdata-web/src/main/java/org/diagbot/bigdata/common/InitListener.java

@@ -1,14 +1,13 @@
 package org.diagbot.bigdata.common;
 
 
-import org.diagbot.bigdata.dao.model.FeatureMapping;
 import org.diagbot.bigdata.dao.model.ResultMappingDiag;
 import org.diagbot.bigdata.dao.model.ResultMappingFilter;
-import org.diagbot.bigdata.service.FeatureMappingService;
+import org.diagbot.bigdata.dao.model.ResultMappingVital;
 import org.diagbot.bigdata.service.ResultMappingDiagService;
 import org.diagbot.bigdata.service.ResultMappingFilterService;
+import org.diagbot.bigdata.service.ResultMappingVitalService;
 import org.diagbot.bigdata.util.BigDataConstants;
-import org.diagbot.common.service.StandardInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.servlet.ServletContextEvent;
@@ -19,9 +18,7 @@ import java.util.*;
 @WebListener
 public class InitListener implements ServletContextListener {
     @Autowired
-    StandardInfoService standardInfoService;
-    @Autowired
-    FeatureMappingService featureMappingService;
+    ResultMappingVitalService resultMappingVitalService;
     @Autowired
     ResultMappingDiagService resultMappingDiagService;
     @Autowired
@@ -45,16 +42,16 @@ public class InitListener implements ServletContextListener {
 
     public void contextStandardLibraryInitialized(ServletContextEvent event) {
         ApplicationCacheUtil applicationCacheUtil = new ApplicationCacheUtil();
-        applicationCacheUtil.putStandardInfoContext(event.getServletContext(), standardInfoService);
+        applicationCacheUtil.putStandardInfoContext(event.getServletContext());
     }
 
     public void contextFeatureMappingInitialized(ServletContextEvent event) {
-        List<FeatureMapping> featureMappings = featureMappingService.selectList(new HashMap<>());
+        List<ResultMappingVital> resultMappingVitals = resultMappingVitalService.selectList(new HashMap<>());
         Map<String, String> mapping = new HashMap<>();
-        for (FeatureMapping featureMapping : featureMappings) {
-            mapping.put(featureMapping.getName(), featureMapping.getNameMapping());
+        for (ResultMappingVital resultMappingVital : resultMappingVitals) {
+            mapping.put(resultMappingVital.getName(), resultMappingVital.getNameMapping());
         }
-        event.getServletContext().setAttribute(BigDataConstants.feature_name_mapping, mapping);
+        event.getServletContext().setAttribute(BigDataConstants.result_mapping_vital, mapping);
     }
 
     public void contextResultMappingDiagInitialized(ServletContextEvent event) {

+ 3 - 3
bigdata-web/src/main/java/org/diagbot/bigdata/dao/mapper/FeatureMappingMapper.java

@@ -6,8 +6,8 @@
 */
 package org.diagbot.bigdata.dao.mapper;
 
-import org.diagbot.bigdata.dao.model.FeatureMapping;
-import org.diagbot.bigdata.dao.model.wrapper.FeatureMappingWrapper;
+import org.diagbot.bigdata.dao.model.ResultMappingVital;
+import org.diagbot.bigdata.dao.model.wrapper.ResultMappingVitalWrapper;
 import org.diagbot.pub.orm.EntityMapper;
 
 /**
@@ -18,5 +18,5 @@ import org.diagbot.pub.orm.EntityMapper;
 * @date: 2016年8月8日 下午17:16:23
 * @version: V1.0
 */
-public interface FeatureMappingMapper extends EntityMapper<FeatureMapping, FeatureMappingWrapper, Long> {
+public interface ResultMappingVitalMapper extends EntityMapper<ResultMappingVital, ResultMappingVitalWrapper, Long> {
 }

+ 1 - 1
bigdata-web/src/main/java/org/diagbot/bigdata/dao/model/FeatureMapping.java

@@ -7,7 +7,7 @@ import java.io.Serializable;
  * @Date: 2018/9/10/010 14:30
  * @Description:
  */
-public class FeatureMapping implements Serializable {
+public class ResultMappingVital implements Serializable {
     private Long id;
     private String name;
     private String nameMapping;

+ 0 - 7
bigdata-web/src/main/java/org/diagbot/bigdata/dao/model/wrapper/FeatureMappingWrapper.java

@@ -1,7 +0,0 @@
-package org.diagbot.bigdata.dao.model.wrapper;
-
-
-import org.diagbot.bigdata.dao.model.FeatureMapping;
-
-public class FeatureMappingWrapper extends FeatureMapping {
-}

+ 7 - 0
bigdata-web/src/main/java/org/diagbot/bigdata/dao/model/wrapper/ResultMappingVitalWrapper.java

@@ -0,0 +1,7 @@
+package org.diagbot.bigdata.dao.model.wrapper;
+
+
+import org.diagbot.bigdata.dao.model.ResultMappingVital;
+
+public class ResultMappingVitalWrapper extends ResultMappingVital {
+}

+ 7 - 7
bigdata-web/src/main/java/org/diagbot/bigdata/dao/xml/FeatureMappingMapper.xml

@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.diagbot.bigdata.dao.mapper.FeatureMappingMapper">
+<mapper namespace="org.diagbot.bigdata.dao.mapper.ResultMappingVitalMapper">
     <!-- 映射定义列-->
-    <resultMap type="org.diagbot.bigdata.dao.model.FeatureMapping" id="featureMappingMap">
+    <resultMap type="org.diagbot.bigdata.dao.model.ResultMappingVital" id="resultMappingVitalMap">
         <id property="id" column="id"/>
         <result property="name" column="name"/>
         <result property="nameMapping" column="name_mapping"/>
     </resultMap>
 
     <!-- 映射定义列-->
-    <resultMap type="org.diagbot.bigdata.dao.model.wrapper.FeatureMappingWrapper" id="featureMappingWrapperMap">
+    <resultMap type="org.diagbot.bigdata.dao.model.wrapper.ResultMappingVitalWrapper" id="resultMappingVitalWrapperMap">
         <id property="id" column="id"/>
         <result property="name" column="name"/>
         <result property="nameMapping" column="name_mapping"/>
@@ -22,7 +22,7 @@
 	</sql>
 
     <!-- 查询(根据主键ID查询) -->
-    <select id="selectByPrimaryKey" resultMap="featureMappingMap" parameterType="java.lang.Integer">
+    <select id="selectByPrimaryKey" resultMap="resultMappingVitalMap" parameterType="java.lang.Integer">
         SELECT
         <include refid="Base_Column_List"/>
         FROM doc_result_mapping_vital t
@@ -30,7 +30,7 @@
     </select>
 
     <!-- 查询(根据主键ID查询) -->
-    <select id="selectWrapperByPrimaryKey" resultMap="featureMappingWrapperMap" parameterType="java.lang.Integer">
+    <select id="selectWrapperByPrimaryKey" resultMap="resultMappingVitalWrapperMap" parameterType="java.lang.Integer">
         SELECT
         <include refid="Base_Column_List"/>
         FROM doc_result_mapping_vital t
@@ -38,7 +38,7 @@
     </select>
 
     <!-- 依据Map查询条件返回结果集-->
-    <select id="selectList" resultMap="featureMappingMap" parameterType="java.util.Map">
+    <select id="selectList" resultMap="resultMappingVitalMap" parameterType="java.util.Map">
         SELECT
         <include refid="Base_Column_List"/>
         FROM doc_result_mapping_vital t WHERE 1=1
@@ -54,7 +54,7 @@
     </select>
 
     <!-- 依据Map查询条件返回扩展属性结果集-->
-    <select id="selectListWrapper" resultMap="featureMappingWrapperMap" parameterType="java.util.Map">
+    <select id="selectListWrapper" resultMap="resultMappingVitalWrapperMap" parameterType="java.util.Map">
         SELECT
         <include refid="Base_Column_List"/>
         FROM doc_result_mapping_vital t WHERE 1=1

+ 0 - 8
bigdata-web/src/main/java/org/diagbot/bigdata/service/FeatureMappingService.java

@@ -1,8 +0,0 @@
-package org.diagbot.bigdata.service;
-
-import org.diagbot.bigdata.dao.model.FeatureMapping;
-import org.diagbot.bigdata.dao.model.wrapper.FeatureMappingWrapper;
-import org.diagbot.pub.service.BaseService;
-
-public interface FeatureMappingService extends BaseService<FeatureMapping, FeatureMappingWrapper, Long> {
-}

+ 8 - 0
bigdata-web/src/main/java/org/diagbot/bigdata/service/ResultMappingVitalService.java

@@ -0,0 +1,8 @@
+package org.diagbot.bigdata.service;
+
+import org.diagbot.bigdata.dao.model.ResultMappingVital;
+import org.diagbot.bigdata.dao.model.wrapper.ResultMappingVitalWrapper;
+import org.diagbot.pub.service.BaseService;
+
+public interface ResultMappingVitalService extends BaseService<ResultMappingVital, ResultMappingVitalWrapper, Long> {
+}

+ 0 - 21
bigdata-web/src/main/java/org/diagbot/bigdata/service/impl/FeatureMappingServiceImpl.java

@@ -1,21 +0,0 @@
-package org.diagbot.bigdata.service.impl;
-
-import org.diagbot.bigdata.dao.mapper.FeatureMappingMapper;
-import org.diagbot.bigdata.dao.model.FeatureMapping;
-import org.diagbot.bigdata.dao.model.wrapper.FeatureMappingWrapper;
-import org.diagbot.bigdata.service.FeatureMappingService;
-import org.diagbot.pub.service.BaseServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class FeatureMappingServiceImpl extends BaseServiceImpl<FeatureMapping, FeatureMappingWrapper, Long> implements FeatureMappingService {
-    @Autowired
-    FeatureMappingMapper featureMappingMapper;
-
-    @Autowired
-    private void setEntityMapper() {
-        super.setEntityMapper(featureMappingMapper);
-    }
-
-}

+ 21 - 0
bigdata-web/src/main/java/org/diagbot/bigdata/service/impl/ResultMappingVitalServiceImpl.java

@@ -0,0 +1,21 @@
+package org.diagbot.bigdata.service.impl;
+
+import org.diagbot.bigdata.dao.mapper.ResultMappingVitalMapper;
+import org.diagbot.bigdata.dao.model.ResultMappingVital;
+import org.diagbot.bigdata.dao.model.wrapper.ResultMappingVitalWrapper;
+import org.diagbot.bigdata.service.ResultMappingVitalService;
+import org.diagbot.pub.service.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ResultMappingVitalServiceImpl extends BaseServiceImpl<ResultMappingVital, ResultMappingVitalWrapper, Long> implements ResultMappingVitalService {
+    @Autowired
+    ResultMappingVitalMapper resultMappingVitalMapper;
+
+    @Autowired
+    private void setEntityMapper() {
+        super.setEntityMapper(resultMappingVitalMapper);
+    }
+
+}

+ 1 - 1
bigdata-web/src/main/java/org/diagbot/bigdata/util/BigDataConstants.java

@@ -32,7 +32,7 @@ public class BigDataConstants {
     public final static String standard_info_relation_type_2 = "2";    //同义词
     public final static String standard_info_relation_type_3 = "3";    //大小类
 
-    public final static String feature_name_mapping = "featureNameMappingMap";          //推送体征结果名称映射
+    public final static String result_mapping_vital = "resultMappingVitalMap";          //推送体征结果名称映射
     public final static String result_mapping_diag = "resultMappingDiagMap";          //推送疾病科室名称映射
     public final static String result_mapping_filter = "resultMappingFilterMap";          //推送结果年龄 性别过滤
 }

+ 36 - 24
bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java

@@ -37,11 +37,16 @@ public class ParamsDataProxy {
         if (StringUtils.isEmpty(searchData.getResourceType())) {
             searchData.setResourceType(BigDataConstants.resource_type_o);
         }
+
+        //所有信息参与推送
+        searchData.setSymptom(searchData.getSymptom() + searchData.getVital()
+                + searchData.getLis() + searchData.getPacs() + searchData.getPast() + searchData.getOther());
+        searchData.setSymptom(searchData.getSymptom().trim());
         //一次推送多个类别信息
         String[] featureTypes = searchData.getFeatureType().split(",");
         searchData.setFeatureTypes(featureTypes);
         //featureType转算法模型类别
-        searchData.setAlgorithmClassify(createAlgorithmClassify(searchData.getSysCode(), featureTypes, searchData.getDiag()));
+        searchData.setAlgorithmClassify(createAlgorithmClassify(searchData.getSysCode(), featureTypes, searchData));
         //获取入参中的特征信息
         FeatureAnalyze fa = new FeatureAnalyze();
 
@@ -49,68 +54,75 @@ public class ParamsDataProxy {
             List<Map<String, Object>> featuresList = fa.start(searchData.getSymptom(), FeatureType.FEATURE);
             paramFeatureInit(searchData, featuresList, "symptomFeatureList", FeatureType.FEATURE);
         }
+
+        if (!StringUtils.isEmpty(searchData.getDiag())) {
+            List<Map<String, Object>> featuresList = fa.start(searchData.getDiag(), FeatureType.DIAG);
+            paramFeatureInit(searchData, featuresList, "diagFeatureList", FeatureType.DIAG);
+        }
     }
 
     /**
      * featureType转算法模型类型
      * @param sysCode
      * @param featureTypes
-     * @param diag
+     * @param searchData
      */
-    private AlgorithmClassify[] createAlgorithmClassify(String sysCode, String[] featureTypes, String diag) {
+    private AlgorithmClassify[] createAlgorithmClassify(String sysCode, String[] featureTypes, BigDataSearchData searchData) {
         AlgorithmClassify[] classifies = new AlgorithmClassify[featureTypes.length];
+        //下了诊断且其他信息全为空 反推标识
+        boolean reverse = !StringUtils.isEmpty(searchData.getDiag()) && StringUtils.isEmpty(searchData.getSymptom());
         for (int i = 0; i < featureTypes.length; i++) {
             featureTypes[i] = convertFeatureType(sysCode, featureTypes[i]);
             if (featureTypes[i] != null) {
                 //模型
                 switch (FeatureType.parse(featureTypes[i])) {
                     case SYMPTOM:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_SYMPTOM;
-                        } else {
+                        if (reverse) {
                             classifies[i] = AlgorithmClassify.NEURAL_DIAG_SYMPTOM;
+                        } else {
+                            classifies[i] = AlgorithmClassify.NEURAL_SYMPTOM;
                         }
                         break;
                     case DIAG:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_DIAG;
-                        }  else {
+                        if (reverse) {
                             classifies[i] = null;
+                        }  else {
+                            classifies[i] = AlgorithmClassify.NEURAL_DIAG;
                         }
                         break;
                     case VITAL:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_VITAL;
-                        } else {
+                        if (reverse) {
                             classifies[i] = AlgorithmClassify.NEURAL_DIAG_VITAL;
+                        } else {
+                            classifies[i] = AlgorithmClassify.NEURAL_VITAL;
                         }
                         break;
                     case LIS:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_LIS;
-                        } else {
+                        if (reverse) {
                             classifies[i] = AlgorithmClassify.NEURAL_DIAG_LIS;
+                        } else {
+                            classifies[i] = AlgorithmClassify.NEURAL_LIS;
                         }
                         break;
                     case PACS:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_PACS;
-                        } else {
+                        if (reverse) {
                             classifies[i] = AlgorithmClassify.NEURAL_DIAG_PACS;
+                        } else {
+                            classifies[i] = AlgorithmClassify.NEURAL_PACS;
                         }
                         break;
                     case TREAT:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_TREAT;
-                        } else {
+                        if (reverse) {
                             classifies[i] = AlgorithmClassify.NEURAL_DIAG_TREAT;
+                        } else {
+                            classifies[i] = AlgorithmClassify.NEURAL_TREAT;
                         }
                         break;
                     case HISTORY:
-                        if (StringUtils.isEmpty(diag)) {
-                            classifies[i] = AlgorithmClassify.NEURAL_HISTORY;
-                        } else {
+                        if (reverse) {
                             classifies[i] = AlgorithmClassify.NEURAL_DIAG_HISTORY;
+                        } else {
+                            classifies[i] = AlgorithmClassify.NEURAL_HISTORY;
                         }
                         break;
                 }

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

@@ -28,7 +28,7 @@ public class ResultDataProxy {
         DecimalFormat df = new DecimalFormat("0.####");
         List<FeatureRate> featureList = new ArrayList<>(10);
 
-        Map<String, String> featureNameMappingMap = (Map<String, String>) request.getServletContext().getAttribute(BigDataConstants.feature_name_mapping);
+        Map<String, String> resultMappingVitalMap = (Map<String, String>) request.getServletContext().getAttribute(BigDataConstants.result_mapping_vital);
         Map<String, String> resultMappingDiagMap = (Map<String, String>) request.getServletContext().getAttribute(BigDataConstants.result_mapping_diag);
         Map<String, Map<String, ResultMappingFilter>> resultMappingFilterMap = (Map<String, Map<String, ResultMappingFilter>>) request.getServletContext().getAttribute(BigDataConstants.result_mapping_filter);
         for (Map.Entry<String, Float> entry : featuresOrderList) {
@@ -57,10 +57,10 @@ public class ResultDataProxy {
             FeatureRate featureRate = new FeatureRate();
             featureRate.setRate(df.format(entry.getValue()));
             if (FeatureType.parse(featureType) == FeatureType.VITAL) {
-                if (StringUtils.isEmpty(featureNameMappingMap.get(entry.getKey()))) {
+                if (StringUtils.isEmpty(resultMappingVitalMap.get(entry.getKey()))) {
                     continue;
                 } else {
-                    featureRate.setFeatureName(featureNameMappingMap.get(entry.getKey()));
+                    featureRate.setFeatureName(resultMappingVitalMap.get(entry.getKey()));
                 }
             } else {
                 featureRate.setFeatureName(entry.getKey());

+ 17 - 1
nlp-web/src/main/java/org/diagbot/nlp/controller/FeatureController.java

@@ -54,7 +54,23 @@ public class FeatureController extends BaseController<Feature, FeatureWrapper, L
     }
 
     /**
-     * 提取症状特征信息
+     * 提取症状信息
+     *
+     * @return
+     */
+    @RequestMapping({"/generate"})
+    @ResponseBody
+    public Response findSymptomFeature(HttpServletRequest request, String text) throws Exception {
+        Response response = new Response();
+        //获取入参中的特征信息
+        FeatureAnalyze fa = new FeatureAnalyze();
+        List<Map<String, Object>> symptomsList = fa.start(text, FeatureType.SYMPTOM);
+        response.setData(symptomsList);
+        return response;
+    }
+
+    /**
+     * 提取特征信息
      *
      * @return
      */

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 57114 - 333432
nlp/src/main/resources/push-tc.dict


+ 2 - 0
nlp/src/main/resources/tc.dict

@@ -99442,6 +99442,7 @@ C4kMf0n6VOs4IT7XrXjnZQ==
 Zp7CabSJmNHFAie75NZiyQ==
 Zp7CabSJmNE98r5P66+JACyrN35xm8Fe
 IgCz6+FpSQ5qQjanXsrwMw==
+dmqstrudxOtKYBGd+lGX+w==
 8BDG//TCDd2odl1sBCHbzA==
 Qe1JATp0m5Uobfyj1VVwew==
 BPkuP8wDjzM//g9ZOJ56eA==
@@ -217801,6 +217802,7 @@ sPmquKFzAnJqQjanXsrwMw==
 K5lSxBVgSUFqQjanXsrwMw==
 eKatyEELtCxqQjanXsrwMw==
 BDHRdnIFvBxqQjanXsrwMw==
+hNo9bqu2Tx1KYBGd+lGX+w==
 YYca0JOLyzOodl1sBCHbzA==
 AGjmWp5yxJJqQjanXsrwMw==
 xKBfJCWBRIgobfyj1VVwew==