Jelajahi Sumber

规则判断添加血压数字/数字mmHg特殊处理

hujing 5 tahun lalu
induk
melakukan
7fdf46bddb

+ 26 - 6
nlp/src/main/java/org/diagbot/nlp/rule/pretreat/PretreatmentVital.java

@@ -10,10 +10,11 @@ import org.diagbot.nlp.util.NlpUtil;
 import java.util.List;
 
 public class PretreatmentVital extends Pretreatment {
-    protected NegativeEnum[] nees_vital_result = new NegativeEnum[]{NegativeEnum.VITAL_RESULT};
-    protected NegativeEnum[] nees_vital_index = new NegativeEnum[]{NegativeEnum.VITAL_INDEX};
+    protected NegativeEnum[] nees_vital_result = new NegativeEnum[] { NegativeEnum.VITAL_RESULT };
+    protected NegativeEnum[] nees_vital_index = new NegativeEnum[] { NegativeEnum.VITAL_INDEX };
+    protected NegativeEnum[] nees_digit = new NegativeEnum[] { NegativeEnum.DIGITS };
 
-    public List<PreResult> analyze(String content) throws java.io.IOException{
+    public List<PreResult> analyze(String content) throws java.io.IOException {
         List<PreResult> preResults = super.analyzeDefault(content);
         for (PreResult result : preResults) {
             result.setUniqueName("体征--" + result.getUniqueName());
@@ -27,12 +28,29 @@ public class PretreatmentVital extends Pretreatment {
                 result.setDetailName("体征--");
                 result.setValue(NlpUtil.concept(l, NegativeEnum.VITAL_RESULT));
                 preResults.add(result);
-            }else if (NlpUtil.isFeature(l.getProperty(), nees_vital_index)) {
+            } else if (NlpUtil.isFeature(l.getProperty(), nees_vital_index)) {
                 PreResult result = new PreResult();
                 result.setUniqueName("体征--");
                 result.setDetailName("体征--");
                 result.setValue(NlpUtil.concept(l, NegativeEnum.VITAL_INDEX));
                 preResults.add(result);
+            } else if (NlpUtil.isFeature(l.getProperty(), nees_digit) && l.getText().contains("/")) {
+                String[] digits = l.getText().split("/");
+                if (digits.length != 2) {
+                    continue;
+                }
+                PreResult result = new PreResult();
+                result.setUniqueName("体征--收缩压");
+                result.setDetailName("收缩压");
+                result.setValue(digits[0]);
+                result.setUnits("mmHg");
+                preResults.add(result);
+                result = new PreResult();
+                result.setUniqueName("体征--舒张压");
+                result.setDetailName("舒张压");
+                result.setValue(digits[1]);
+                result.setUnits("mmHg");
+                preResults.add(result);
             }
         }
         return preResults;
@@ -44,12 +62,14 @@ public class PretreatmentVital extends Pretreatment {
 
 
     public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
-        if (cursor > 0) cursor--;
+        if (cursor > 0) {
+            cursor--;
+        }
         int search_len = 0;
         Lexeme leftLexeme = null;
         while (search_len < max_back_search && cursor > -1) {
             leftLexeme = lexemes.get(cursor);
-            if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[]{NegativeEnum.VITAL_INDEX})) {
+            if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[] { NegativeEnum.VITAL_INDEX })) {
                 return NlpUtil.concept(leftLexeme, NegativeEnum.VITAL_INDEX);
             }
             search_len++;