Browse Source

给症状添加标准词部分添加注释

hujing 6 years ago
parent
commit
678f002a49
1 changed files with 37 additions and 13 deletions
  1. 37 13
      bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java

+ 37 - 13
bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java

@@ -351,6 +351,7 @@ public class ParamsDataProxy {
                 }
             }
         }
+        //血压既满足血压≥140/90mmHg,又满足血压小于90/60mmHg时,只取前者
         String addStandWords = "";
         String smallerStandWord = "";
         boolean flag = true;
@@ -372,7 +373,15 @@ public class ParamsDataProxy {
         return sData;
     }
 
-    //将标准词中体征指标值(数字)与分词结果中体征指标值(数字)比较
+    /**
+     * 将标准词中体征指标值(数字)与分词结果中体征指标值(数字)比较
+     * 除了血压>140/90mmHg类似标准词,其他标准词直接添加在症状后面
+     * @param features
+     * @param standWordMap
+     * @param standWord
+     * @param sData
+     * @return 血压>140/90mmHg或血压小于90/60mmHg或同时返回,在addStandWord()中进一步处理
+     */
     private String judgment(String[] features, Map<String, String> standWordMap, String standWord,SearchData sData) {
         if (hasDigit(features[1])) {
             try {
@@ -402,12 +411,12 @@ public class ParamsDataProxy {
                     if (standWordMap.get("value").contains("/")) {
                         if (features[1].contains("/")) {
                             String[] feature = features[1].split("/");
-                            Integer featuresSBP = Integer.valueOf(feature[0]); //收缩压
-                            Integer featuresDBP = Integer.valueOf(feature[1]); //舒张压
+                            Integer featuresSBP = Integer.valueOf(feature[0]); //分词特征收缩压
+                            Integer featuresDBP = Integer.valueOf(feature[1]); //分词特征舒张压
 
                             String[] values = standWordMap.get("value").split("/");
-                            Integer standWordSBP = Integer.valueOf(values[0]); //收缩压
-                            Integer standWordDBP = Integer.valueOf(values[1]); //舒张压
+                            Integer standWordSBP = Integer.valueOf(values[0]); //标准词收缩压
+                            Integer standWordDBP = Integer.valueOf(values[1]); //标准词舒张压
                             if (featuresSBP < standWordSBP || featuresDBP < standWordDBP) {
                                 standWord += "," + standWordMap.get("standword");
                             }
@@ -423,12 +432,12 @@ public class ParamsDataProxy {
                     if (standWordMap.get("value").contains("/")) {
                         if (features[1].contains("/")) {
                             String[] feature = features[1].split("/");
-                            Integer featuresSBP = Integer.valueOf(feature[0]); //收缩压
-                            Integer featuresDBP = Integer.valueOf(feature[1]); //舒张压
+                            Integer featuresSBP = Integer.valueOf(feature[0]); //分词特征收缩压
+                            Integer featuresDBP = Integer.valueOf(feature[1]); //分词特征舒张压
 
                             String[] values = standWordMap.get("value").split("/");
-                            Integer standWordSBP = Integer.valueOf(values[0]); //收缩压
-                            Integer standWordDBP = Integer.valueOf(values[1]); //舒张压
+                            Integer standWordSBP = Integer.valueOf(values[0]); //标准词收缩压
+                            Integer standWordDBP = Integer.valueOf(values[1]); //标准词舒张压
                             if (featuresSBP >= standWordSBP || featuresDBP >= standWordDBP) {
                                 standWord += "," + standWordMap.get("standword");
                             }
@@ -444,12 +453,12 @@ public class ParamsDataProxy {
                     if (standWordMap.get("value").contains("/")) {
                         if (features[1].contains("/")) {
                             String[] feature = features[1].split("/");
-                            Integer featuresSBP = Integer.valueOf(feature[0]); //收缩压
-                            Integer featuresDBP = Integer.valueOf(feature[1]); //舒张压
+                            Integer featuresSBP = Integer.valueOf(feature[0]); //分词特征收缩压
+                            Integer featuresDBP = Integer.valueOf(feature[1]); //分词特征舒张压
 
                             String[] values = standWordMap.get("value").split("/");
-                            Integer standWordSBP = Integer.valueOf(values[0]); //收缩压
-                            Integer standWordDBP = Integer.valueOf(values[1]); //舒张压
+                            Integer standWordSBP = Integer.valueOf(values[0]); //标准词收缩压
+                            Integer standWordDBP = Integer.valueOf(values[1]); //标准词舒张压
                             if (featuresSBP <= standWordSBP || featuresDBP <= standWordDBP) {
                                 standWord += "," + standWordMap.get("standword");
                             }
@@ -468,6 +477,11 @@ public class ParamsDataProxy {
         return standWord;
     }
 
+    /**
+     * 判断分词后的特征中是否含有数字
+     * @param content
+     * @return
+     */
     private boolean hasDigit(String content) {
         boolean flag = false;
         if (Pattern.compile(".*\\d+.*").matcher(content).matches()) {
@@ -476,6 +490,11 @@ public class ParamsDataProxy {
         return flag;
     }
 
+    /**
+     * 将字符串中的数字提取出来,针对分词结果中"90."类似情况
+     * @param standWord
+     * @return
+     */
     private String getNum(String standWord) {
         StringBuffer sb = new StringBuffer();
         for (String num : standWord.replaceAll("[^0-9]", ",").split(",")) {
@@ -486,6 +505,11 @@ public class ParamsDataProxy {
         return sb.toString();
     }
 
+    /**
+     * 将血压超过标准值的标准词改为血压升高
+     * @param standWord
+     * @return
+     */
     private String proxy(String standWord){
         if (standWord.contains("压") && (standWord.contains("≥") || standWord.contains("大于"))){
             standWord = "血压升高";