Browse Source

开单合理性接口重定义修改,规则已测试

louhr 5 years ago
parent
commit
60bb7ffbdf

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

@@ -33,7 +33,7 @@ public class BigDataParamsProxy {
     public AlgorithmClassify[] createAlgorithmClassify(String sysCode, String[] featureTypes, SearchData searchData) {
         AlgorithmClassify[] classifies = new AlgorithmClassify[featureTypes.length];
         //下了诊断且其他信息全为空 反推标识
-        boolean reverse = !StringUtils.isEmpty(searchData.getDiag()) && StringUtils.isEmpty(searchData.getSymptom());
+        boolean reverse = searchData.getDiagOrder() != null && searchData.getDiagOrder().size() > 0 && StringUtils.isEmpty(searchData.getSymptom());
         for (int i = 0; i < featureTypes.length; i++) {
             if (featureTypes[i] != null) {
                 //模型

+ 16 - 12
bigdata-web/src/test/java/org/diagbot/RuleTest.java

@@ -26,7 +26,7 @@ public class RuleTest {
     }
 
     private void validatePub() throws Exception {
-        MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
+        MysqlJdbc nlpJdbc = new MysqlJdbc("root", "lantone", "jdbc:mysql://192.168.2.236:3306/med?useUnicode=true&characterEncoding=UTF-8");
         List<Map<String, String>> data = nlpJdbc.query("kl_rule_pub",
                 new String[]{"id", "pub_name", "min_operator", "min_value", "min_unit",
                         "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, "");
@@ -64,7 +64,7 @@ public class RuleTest {
         MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
         List<Map<String, String>> data = nlpJdbc.query("kl_rule_pub",
                 new String[]{"id", "pub_name", "min_operator", "min_value", "min_unit",
-                        "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, "");
+                        "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, " where pub_name like '%体征%'");
 
         Map<String, Map<String, String>> rulesMap = new HashMap<>();
         for (Map<String, String> map : data) {
@@ -84,32 +84,36 @@ public class RuleTest {
         double value = 0.0;
         if (!StringUtils.isEmpty(map.get("eq_operator")) && "=".equals(map.get("eq_operator"))) {
             if ("诊断--".equals(map.get("pub_name"))) {
-                searchData.setDiag(map.get("eq_value"));
+                searchData.setDiagString(map.get("eq_value"));
             }
             if ("体征--".equals(map.get("pub_name"))) {
                 searchData.setVital(map.get("eq_value"));
             }
             if ("开单--".equals(map.get("pub_name"))) {
-                searchData.setLisOrder(map.get("eq_value"));
-                searchData.setPacsOrder(map.get("eq_value"));
+                List<PreResult> results = new ArrayList<>();
+                PreResult preResult = new PreResult();
+                preResult.setValue(map.get("eq_value"));
+                results.add(preResult);
+                searchData.setLisOrder(results);
+                searchData.setPacsOrder(results);
             }
             if ("症状--".equals(map.get("pub_name"))) {
-                searchData.setSymptom(map.get("eq_value"));
+                searchData.setChief(map.get("eq_value"));
             }
             if ("药品--".equals(map.get("pub_name"))) {
-                searchData.setPasts(map.get("eq_value"));
+                searchData.setDrugString(map.get("eq_value"));
             }
             if ("既往--".equals(map.get("pub_name"))) {
                 searchData.setPasts(map.get("eq_value"));
             }
             if ("过敏--".equals(map.get("pub_name"))) {
-                searchData.setPasts(map.get("eq_value"));
+                searchData.setAllergy(map.get("eq_value"));
             }
             if (map.get("pub_name").indexOf("其他--") > -1) {
                 searchData.setOther(map.get("pub_name") + map.get("eq_value"));
             }
             if (map.get("pub_name").indexOf("检查--") > -1) {
-                searchData.setPacs(map.get("pub_name") + map.get("eq_value"));
+                searchData.setPacsString(map.get("pub_name") + map.get("eq_value"));
             }
         } else if (!StringUtils.isEmpty(map.get("min_operator")) && !StringUtils.isEmpty(map.get("max_operator"))) {
             if (map.get("pub_name").indexOf("体征--") > -1) {
@@ -128,7 +132,7 @@ public class RuleTest {
                 preResult.setValue(String.valueOf(value));
                 preResult.setUnits(map.get("min_unit"));
                 list.add(preResult);
-                searchData.setLisArr(list);
+                searchData.setLis(list);
             }
             if (map.get("pub_name").indexOf("年龄--") > -1) {
                 int v = Integer.valueOf(map.get("min_value")) + 1;
@@ -151,7 +155,7 @@ public class RuleTest {
                 preResult.setValue(String.valueOf(value));
                 preResult.setUnits(map.get("min_unit"));
                 list.add(preResult);
-                searchData.setLisArr(list);
+                searchData.setLis(list);
             }
             if (map.get("pub_name").indexOf("年龄--") > -1) {
                 int v = Integer.valueOf(map.get("min_value")) - 1;
@@ -174,7 +178,7 @@ public class RuleTest {
                 preResult.setValue(String.valueOf(value));
                 preResult.setUnits(map.get("max_unit"));
                 list.add(preResult);
-                searchData.setLisArr(list);
+                searchData.setLis(list);
             }
             if (map.get("pub_name").indexOf("年龄--") > -1) {
                 int v = Integer.valueOf(map.get("max_value")) + 1;

+ 53 - 53
common-push/src/main/java/org/diagbot/common/push/bean/SearchData.java

@@ -67,21 +67,21 @@ public class SearchData {
     //drug结构化数据
     private List<PreResult> drug = new ArrayList<>();
     //当前开单lis项目
-    protected String lisOrder = "";
+    protected List<PreResult> lisOrder = new ArrayList<>();
     //当前开单pacs项目
-    protected String pacsOrder = "";
+    protected List<PreResult> pacsOrder = new ArrayList<>();
     //当前开单诊断项目
-    protected String diagOrder = "";
+    protected List<PreResult> diagOrder = new ArrayList<>();
     //当前开单药品项目
-    protected String drugOrder = "";
+    protected List<PreResult> drugOrder = new ArrayList<>();
     //当前开单手术项目
-    protected String operationOrder = "";
+    protected List<PreResult> operationOrder = new ArrayList<>();
     //当前开单其他 预留
-    protected String otherOrder = "";
+    protected List<PreResult> otherOrder = new ArrayList<>();
     //大数据推送诊断结果信息
     protected List<FeatureRate> pushDiags = new ArrayList<>();
     //选中诊断
-    private String diseaseName;
+    private PreResult diseaseName = new PreResult();;
     //量表
     protected String scaleName = "";
     //指标结果
@@ -291,30 +291,6 @@ public class SearchData {
         this.graphInputs = graphInputs;
     }
 
-    public String getLisOrder() {
-        return lisOrder;
-    }
-
-    public void setLisOrder(String lisOrder) {
-        this.lisOrder = lisOrder;
-    }
-
-    public String getPacsOrder() {
-        return pacsOrder;
-    }
-
-    public void setPacsOrder(String pacsOrder) {
-        this.pacsOrder = pacsOrder;
-    }
-
-    public String getOtherOrder() {
-        return otherOrder;
-    }
-
-    public void setOtherOrder(String otherOrder) {
-        this.otherOrder = otherOrder;
-    }
-
     public Map<String, List<Rule>> getRules() {
         return rules;
     }
@@ -331,14 +307,6 @@ public class SearchData {
         this.algorithmType = algorithmType;
     }
 
-    public String getDiseaseName() {
-        return diseaseName;
-    }
-
-    public void setDiseaseName(String diseaseName) {
-        this.diseaseName = diseaseName;
-    }
-
     public String getRuleType() {
         return ruleType;
     }
@@ -467,43 +435,75 @@ public class SearchData {
         this.drug = drug;
     }
 
-    public String getDiagOrder() {
+    public String getDiagString() {
+        return diagString;
+    }
+
+    public void setDiagString(String diagString) {
+        this.diagString = diagString;
+    }
+
+    public String getDrugString() {
+        return drugString;
+    }
+
+    public void setDrugString(String drugString) {
+        this.drugString = drugString;
+    }
+
+    public List<PreResult> getLisOrder() {
+        return lisOrder;
+    }
+
+    public void setLisOrder(List<PreResult> lisOrder) {
+        this.lisOrder = lisOrder;
+    }
+
+    public List<PreResult> getPacsOrder() {
+        return pacsOrder;
+    }
+
+    public void setPacsOrder(List<PreResult> pacsOrder) {
+        this.pacsOrder = pacsOrder;
+    }
+
+    public List<PreResult> getDiagOrder() {
         return diagOrder;
     }
 
-    public void setDiagOrder(String diagOrder) {
+    public void setDiagOrder(List<PreResult> diagOrder) {
         this.diagOrder = diagOrder;
     }
 
-    public String getDrugOrder() {
+    public List<PreResult> getDrugOrder() {
         return drugOrder;
     }
 
-    public void setDrugOrder(String drugOrder) {
+    public void setDrugOrder(List<PreResult> drugOrder) {
         this.drugOrder = drugOrder;
     }
 
-    public String getOperationOrder() {
+    public List<PreResult> getOperationOrder() {
         return operationOrder;
     }
 
-    public void setOperationOrder(String operationOrder) {
+    public void setOperationOrder(List<PreResult> operationOrder) {
         this.operationOrder = operationOrder;
     }
 
-    public String getDiagString() {
-        return diagString;
+    public List<PreResult> getOtherOrder() {
+        return otherOrder;
     }
 
-    public void setDiagString(String diagString) {
-        this.diagString = diagString;
+    public void setOtherOrder(List<PreResult> otherOrder) {
+        this.otherOrder = otherOrder;
     }
 
-    public String getDrugString() {
-        return drugString;
+    public PreResult getDiseaseName() {
+        return diseaseName;
     }
 
-    public void setDrugString(String drugString) {
-        this.drugString = drugString;
+    public void setDiseaseName(PreResult diseaseName) {
+        this.diseaseName = diseaseName;
     }
 }

+ 35 - 16
common-push/src/main/java/org/diagbot/common/push/filter/rule/PretreatmentRule.java

@@ -22,11 +22,16 @@ public class PretreatmentRule {
         if (!StringUtils.isEmpty(searchData.getChief())) {
             searchData.setChief(add2PreResultList(new PretreatmentSymptom(), searchData.getChief(), "symptom", searchData));
         }
+        //现病史 提取手术史和过敏史
+        if (!StringUtils.isEmpty(searchData.getSymptom())) {
+            add2PreResultList(new PretreatmentOperation(), searchData.getSymptom(), "operation", searchData);
+            add2PreResultList(new PretreatmentAllergy(), searchData.getSymptom(), "allergy", searchData);
+        }
         //体征数据 体征、现病史提取
         if (!StringUtils.isEmpty(searchData.getVital())) {
             searchData.setVital(add2PreResultList(new PretreatmentVital(), searchData.getVital(), "vital", searchData));
         }
-        //诊断数据  诊断信息(历史)、现病史、既往史(重要疾病史)
+        //历史诊断数据  诊断信息(历史)、现病史、既往史(重要疾病史)
         if (searchData.getDiag() != null && searchData.getDiag().size() > 0) {
             List<PreResult> preResults = searchData.getDiag();
             for (PreResult result : preResults) {
@@ -55,19 +60,13 @@ public class PretreatmentRule {
             add2PreResultList(new PretreatmentPast(), searchData.getPasts(), "pasts", searchData);
         }
         //手术外伤史 现病史、手术史
-        if (!StringUtils.isEmpty(searchData.getPasts())) {
+        if (!StringUtils.isEmpty(searchData.getOperation())) {
             add2PreResultList(new PretreatmentOperation(), searchData.getOperation(), "operation", searchData);
-            add2PreResultList(new PretreatmentOperation(), searchData.getSymptom(), "operation", searchData);
+            add2PreResultList(new PretreatmentWound(), searchData.getOperation(), "wound", searchData);
         }
         //过敏 现病史、过敏史
-        if (!StringUtils.isEmpty(searchData.getPasts())) {
+        if (!StringUtils.isEmpty(searchData.getAllergy())) {
             add2PreResultList(new PretreatmentAllergy(), searchData.getAllergy(), "allergy", searchData);
-            add2PreResultList(new PretreatmentAllergy(), searchData.getSymptom(), "allergy", searchData);
-        }
-        //外伤   现病史、手术外伤史
-        if (!StringUtils.isEmpty(searchData.getPasts())) {
-            add2PreResultList(new PretreatmentWound(), searchData.getOperation(), "wound", searchData);
-            add2PreResultList(new PretreatmentWound(), searchData.getSymptom(), "wound", searchData);
         }
         //传染病   现病史、传染病史
         if (!StringUtils.isEmpty(searchData.getPasts())) {
@@ -96,24 +95,44 @@ public class PretreatmentRule {
         }
 
         //开具 化验
-        if (!StringUtils.isEmpty(searchData.getLisOrder())) {
-            add2PreResultList(new PretreatmentMakeList(), searchData.getLisOrder(), "lisOrder", searchData);
+        if (searchData.getLisOrder() != null && searchData.getLisOrder().size() > 0) {
+            List<PreResult> preResults = searchData.getLisOrder();
+            for (PreResult result : preResults) {
+                result.setUniqueName("开单--" + result.getUniqueName());
+            }
+            add2PreResultList(searchData.getLisOrder(), "", "lisOrder", searchData);
         }
         //开具 检查
         if (!StringUtils.isEmpty(searchData.getPacsOrder())) {
-            add2PreResultList(new PretreatmentMakeList(), searchData.getPacsOrder(), "pacsOrder", searchData);
+            List<PreResult> preResults = searchData.getPacsOrder();
+            for (PreResult result : preResults) {
+                result.setUniqueName("开单--" + result.getUniqueName());
+            }
+            add2PreResultList(searchData.getPacsOrder(), "", "pacsOrder", searchData);
         }
         //开具 诊断
         if (!StringUtils.isEmpty(searchData.getDiagOrder())) {
-            add2PreResultList(new PretreatmentMakeList(), searchData.getDiagOrder(), "diagOrder", searchData);
+            List<PreResult> preResults = searchData.getDiagOrder();
+            for (PreResult result : preResults) {
+                result.setUniqueName("开单--" + result.getUniqueName());
+            }
+            add2PreResultList(searchData.getDiagOrder(), "", "diagOrder", searchData);
         }
         //开具 药品
         if (!StringUtils.isEmpty(searchData.getDrugOrder())) {
-            add2PreResultList(new PretreatmentMakeList(), searchData.getDrugOrder(), "drugOrder", searchData);
+            List<PreResult> preResults = searchData.getDrugOrder();
+            for (PreResult result : preResults) {
+                result.setUniqueName("开单--" + result.getUniqueName());
+            }
+            add2PreResultList(searchData.getDrugOrder(), "", "drugOrder", searchData);
         }
         //开具 手术
         if (!StringUtils.isEmpty(searchData.getOperationOrder())) {
-            add2PreResultList(new PretreatmentMakeList(), searchData.getOperationOrder(), "operationOrder", searchData);
+            List<PreResult> preResults = searchData.getOperationOrder();
+            for (PreResult result : preResults) {
+                result.setUniqueName("开单--" + result.getUniqueName());
+            }
+            add2PreResultList(searchData.getOperationOrder(), "", "operationOrder", searchData);
         }
 
 //        Map<String, List<Rule>> ruleMap = searchData.getRules();

+ 25 - 20
common-push/src/main/java/org/diagbot/common/push/work/ParamsDataProxy.java

@@ -1,22 +1,17 @@
 package org.diagbot.common.push.work;
 
-import org.algorithm.core.cnn.AlgorithmCNNExecutorPacs;
-import org.algorithm.factory.RelationExtractionFactory;
 import org.apache.commons.lang3.StringUtils;
 import org.diagbot.common.push.bean.SearchData;
 import org.diagbot.common.push.util.PushConstants;
 import org.diagbot.nlp.feature.FeatureAnalyze;
 import org.diagbot.nlp.feature.FeatureType;
+import org.diagbot.nlp.rule.module.PreResult;
 import org.diagbot.nlp.util.Constants;
 import org.diagbot.pub.utils.PropertiesUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @ClassName org.diagbot.bigdata.work.ParamsDataProxy
@@ -52,6 +47,15 @@ public class ParamsDataProxy {
         } else {
             searchData.setSex("3");
         }
+        //婚姻情况
+        if (!StringUtils.isEmpty(searchData.getMarriage())) {
+            if ("1".equals(searchData.getMarriage())) {
+                searchData.setNormal(searchData.getNormal() + "婚姻己婚");
+            }
+            if ("2".equals(searchData.getMarriage())) {
+                searchData.setNormal(searchData.getNormal() + "婚姻未婚");
+            }
+        }
     }
 
     public void createSearchData(SearchData searchData) throws Exception {
@@ -59,9 +63,6 @@ public class ParamsDataProxy {
         if (searchData.getSymptom() != null) {
             searchData.setSymptom(searchData.getSymptom().trim());
         }
-        if (searchData.getDiag() != null) {
-            searchData.setDiag(searchData.getDiag().trim());
-        }
         //默认查询门诊数据
         if (StringUtils.isEmpty(searchData.getResourceType())) {
             searchData.setResourceType(PushConstants.resource_type_o);
@@ -109,23 +110,27 @@ public class ParamsDataProxy {
             featuresList = fa.start((searchData.getOther() == null ? "" : searchData.getOther()) + (searchData.getIndications() == null ? "" : searchData.getIndications()), FeatureType.FEATURE);
             paramFeatureInit(searchData, featuresList);
         }
-        if (!StringUtils.isEmpty(searchData.getPacs())) {
-            featuresList = fa.start(searchData.getPacs(), FeatureType.PACS);
+        if (!StringUtils.isEmpty(searchData.getPacsString())) {
+            featuresList = fa.start(searchData.getPacsString(), FeatureType.PACS);
             paramFeatureInit(searchData, featuresList);
         }
-        if (!StringUtils.isEmpty(searchData.getLis())) {
-            featuresList = fa.start(searchData.getLis(), FeatureType.LIS);
+        if (!StringUtils.isEmpty(searchData.getLisString())) {
+            featuresList = fa.start(searchData.getLisString(), FeatureType.LIS);
             paramFeatureInit(searchData, featuresList);
         }
         // 清洗特征词,去除词性不匹配的词
         searchData = cleanFeature(featuresList, fa, searchData);
-        if (!StringUtils.isEmpty(searchData.getOther())) {
+        if (!StringUtils.isEmpty(searchData.getPasts())) {
             //如果既往史中诊断信息,需要提取这个特征
-            featuresList = fa.start(searchData.getOther(), FeatureType.DIAG);
+            featuresList = fa.start(searchData.getPasts(), FeatureType.DIAG);
             paramFeatureInit(searchData, featuresList);
         }
-        if (!StringUtils.isEmpty(searchData.getDiag()) && StringUtils.isEmpty(searchData.getSymptom())) {
-            featuresList = fa.start(searchData.getDiag(), FeatureType.DIAG);
+        if (searchData.getDiagOrder() != null && searchData.getDiagOrder().size() > 0 && StringUtils.isEmpty(searchData.getSymptom())) {
+            String d = "";
+            for (PreResult preResult : searchData.getDiagOrder()) {
+                d = preResult.getUniqueName() + "," + d;
+            }
+            featuresList = fa.start(d, FeatureType.DIAG);
             paramFeatureInit(searchData, featuresList);
         }
 //        if (!StringUtils.isEmpty(searchData.getPacs())) {
@@ -194,12 +199,12 @@ public class ParamsDataProxy {
         // 在输入的辅检文本中,只提取辅检信息
         String[] PACS_Feature = { Constants.word_property_PACS,
                 Constants.word_property_PACS_Detail, Constants.word_property_PACS_Result };
-        searchData = removeFeature(searchData.getLis(), fa, searchData, PACS_Feature, FeatureType.PACS);
+        searchData = removeFeature(searchData.getLisString(), fa, searchData, PACS_Feature, FeatureType.PACS);
 
         // 在输入的化验文本中,只提取化验信息
         String[] LIS_Feature = { Constants.word_property_LIS,
                 Constants.word_property_LIS_Detail, Constants.word_property_LIS_Result };
-        searchData = removeFeature(searchData.getPacs(), fa, searchData, LIS_Feature, FeatureType.LIS);
+        searchData = removeFeature(searchData.getPacsString(), fa, searchData, LIS_Feature, FeatureType.LIS);
 
         return searchData;
     }

+ 10 - 3
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -51,7 +51,7 @@ public class GraphCalculate {
         List<String> inputList = new ArrayList<>();
         int age = searchData.getAge();
         String sex = searchData.getSex();
-        String diseaseName = searchData.getDiseaseName();
+        String diseaseName = searchData.getDiseaseName().getUniqueName();
         logger.info("前端传来的年龄为 :"+age+" 前端传来的性别为 :"+sex);
         Map<String, Map<String, String>> sexAgeCache = CacheUtil.getSexAgeCache();
         Map<String, Map<String, String>> inputs = searchData.getGraphInputs();
@@ -68,11 +68,18 @@ public class GraphCalculate {
             neo4jAPI = new Neo4jAPI(driver);
         }
         logger.info("图谱开始推送诊断!!!!!!!!!!!");
-        String webDiag = searchData.getDiag();
+        String webDiag = "";
+        for (PreResult preResult : searchData.getDiagOrder()) {
+            if (StringUtils.isEmpty(webDiag)) {
+                webDiag = preResult.getUniqueName();
+            } else {
+                webDiag = webDiag + "," + preResult.getUniqueName();
+            }
+        }
         logger.info("页面诊断为 :"+webDiag);
         String[] webDiagList = webDiag.split(",|,|、|;|:|;");
         //处理血肌酐
-        List<PreResult> lisArr = searchData.getLisArr();
+        List<PreResult> lisArr = searchData.getLis();
         String serumCreatinine = processSerumcreatinine(lisArr);
 
         //计算诊断

+ 9 - 1
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -9,6 +9,7 @@ import org.diagbot.common.push.bean.CrisisDetail;
 import org.diagbot.common.push.bean.FeatureRate;
 import org.diagbot.common.push.bean.SearchData;
 import org.diagbot.common.push.bean.neo4j.*;
+import org.diagbot.nlp.rule.module.PreResult;
 import org.diagbot.pub.utils.PropertiesUtil;
 import org.neo4j.driver.v1.*;
 import org.neo4j.driver.v1.types.Node;
@@ -2066,7 +2067,14 @@ public class Neo4jAPI {
     public Map<String, List<FeatureRate>> getLisPacs(SearchData searchData) {
         Map<String, List<FeatureRate>> lisPacsFeature = new HashMap<>();
         List<String> featureList = Arrays.asList(searchData.getFeatureTypes());
-        String webDiag = searchData.getDiag();
+        String webDiag = "";
+        for (PreResult preResult : searchData.getDiagOrder()) {
+            if (StringUtils.isEmpty(webDiag)) {
+                webDiag = preResult.getUniqueName();
+            } else {
+                webDiag = webDiag + "," + preResult.getUniqueName();
+            }
+        }
         List<String> webDiagList = null;
         if (webDiag != null && webDiag != "") {
             webDiagList = Arrays.asList(webDiag.split(",|,|、"));

+ 1 - 1
nlp/src/main/java/org/diagbot/nlp/rule/pretreat/PretreatmentAllergy.java

@@ -25,7 +25,7 @@ public class PretreatmentAllergy extends Pretreatment {
                 PreResult result = new PreResult();
                 result.setUniqueName("过敏--");
                 result.setDetailName("过敏--");
-                result.setValue(NlpUtil.concept(l, NegativeEnum.ALLERGY));
+                result.setValue(NlpUtil.concept(l, NegativeEnum.ALLERGY) + "过敏");
                 preResults.add(result);
             }
         }

+ 1 - 36
nlp/src/main/java/org/diagbot/nlp/rule/pretreat/PretreatmentPast.java

@@ -12,10 +12,6 @@ import java.util.List;
 
 public class PretreatmentPast extends Pretreatment {
     protected NegativeEnum[] nees_past_desc = new NegativeEnum[]{NegativeEnum.PAST_DESC};
-    protected NegativeEnum[] nees_disease = new NegativeEnum[]{NegativeEnum.DISEASE};
-    protected NegativeEnum[] nees_operation = new NegativeEnum[]{NegativeEnum.OPERATION};
-    protected NegativeEnum[] nees_allergy = new NegativeEnum[]{NegativeEnum.ALLERGY};
-    protected NegativeEnum[] nees_med = new NegativeEnum[]{NegativeEnum.MEDICINE, NegativeEnum.MEDICINE_NAME, NegativeEnum.MEDICINE_PRD};
 
     public List<PreResult> analyze(String content) throws java.io.IOException{
         List<PreResult> preResults = new ArrayList<>();
@@ -23,42 +19,11 @@ public class PretreatmentPast extends Pretreatment {
         for (int i = 0; i < lexemes.size(); i++) {
             Lexeme l = lexemes.get(i);
             PreResult result = new PreResult();
-            if (NlpUtil.isFeature(l.getProperty(), nees_disease)) {
-                result.setUniqueName("诊断--");
-                result.setDetailName("诊断--");
-                result.setValue(NlpUtil.concept(l, NegativeEnum.DISEASE));
-                preResults.add(result);
-            } else if (NlpUtil.isFeature(l.getProperty(), nees_past_desc)) {
+            if (NlpUtil.isFeature(l.getProperty(), nees_past_desc)) {
                 result.setUniqueName("既往--");
                 result.setDetailName("既往--");
                 result.setValue(NlpUtil.concept(l, NegativeEnum.PAST_DESC));
                 preResults.add(result);
-            } else if (NlpUtil.isFeature(l.getProperty(), nees_operation)) {
-                result.setUniqueName("手术--");
-                result.setDetailName("手术--");
-                result.setValue(NlpUtil.concept(l, NegativeEnum.OPERATION));
-                preResults.add(result);
-            } else if (NlpUtil.isFeature(l.getProperty(), nees_med)) {
-                result.setUniqueName("药品--");
-                result.setDetailName("药品--");
-                result.setValue(NlpUtil.concept(l, NegativeEnum.MEDICINE));
-                preResults.add(result);
-            }
-            if (l.getText().indexOf("过敏") > -1) {
-                int max_find_step = 10;
-                int position = i - 1;
-                Lexeme leftLexeme;
-                while (i - position < max_find_step && position > -1) {
-                    leftLexeme = lexemes.get(position);
-                    //遇上过敏史信息
-                    if (NlpUtil.isFeature(leftLexeme.getProperty(), nees_allergy)) {
-                        result.setUniqueName("过敏--");
-                        result.setDetailName("过敏--");
-                        result.setValue(NlpUtil.concept(leftLexeme, NegativeEnum.ALLERGY) + "过敏");
-                        preResults.add(result);
-                    }
-                    position--;
-                }
             }
         }
         return preResults;

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

@@ -131,12 +131,12 @@ public class AlgorithmController extends BaseController {
         ResponseData responseData = new ResponseData();
         logger.info("开始推送服务......");
         LisApplication lisApplication = new LisApplication();
-        if ((searchData.getLisArr() == null || searchData.getLisArr().size() == 0)
-                && StringUtils.isNotEmpty(searchData.getLis())) {
+        if ((searchData.getLis() == null || searchData.getLis().size() == 0)
+                && StringUtils.isNotEmpty(searchData.getLisString())) {
             Pretreatment pretreatment = new PretreatmentLis();
-            searchData.setLisArr(pretreatment.analyze(searchData.getLis()));
+            searchData.setLis(pretreatment.analyze(searchData.getLisString()));
         }
-        lisApplication.lisConvertToInputs(searchData.getLisArr(),searchData);
+        lisApplication.lisConvertToInputs(searchData.getLis(),searchData);
 
         Response<ResponseData> response = new Response();
         //一些基本信息预处理 如年龄 性别