|
@@ -1,25 +1,55 @@
|
|
package org.diagbot.common.push.filter.pretreat;
|
|
package org.diagbot.common.push.filter.pretreat;
|
|
|
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
import org.diagbot.common.push.bean.PreResult;
|
|
import org.diagbot.common.push.bean.PreResult;
|
|
|
|
+import org.diagbot.nlp.participle.ParticipleUtil;
|
|
import org.diagbot.nlp.participle.word.Lexeme;
|
|
import org.diagbot.nlp.participle.word.Lexeme;
|
|
import org.diagbot.nlp.participle.word.LexemePath;
|
|
import org.diagbot.nlp.participle.word.LexemePath;
|
|
import org.diagbot.nlp.util.NegativeEnum;
|
|
import org.diagbot.nlp.util.NegativeEnum;
|
|
import org.diagbot.nlp.util.NlpUtil;
|
|
import org.diagbot.nlp.util.NlpUtil;
|
|
|
|
|
|
import java.lang.reflect.Array;
|
|
import java.lang.reflect.Array;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
public class PretreatmentLis extends Pretreatment {
|
|
public class PretreatmentLis extends Pretreatment {
|
|
private String join_symbols = ";:;:";
|
|
private String join_symbols = ";:;:";
|
|
|
|
|
|
- public List<PreResult> analyze(String content) throws java.io.IOException{
|
|
|
|
- return super.analyzeDefault(content);
|
|
|
|
|
|
+ public List<PreResult> analyze(String content) throws java.io.IOException {
|
|
|
|
+ List<PreResult> preResults = super.analyzeDefault(content);
|
|
|
|
+ LexemePath<Lexeme> lexemes = ParticipleUtil.participle(content);
|
|
|
|
+ for (int i = 0; i < lexemes.size(); i++) {
|
|
|
|
+ Lexeme l = lexemes.get(i);
|
|
|
|
+ if (NlpUtil.isFeature(l.getProperty(), lisResult)) {
|
|
|
|
+ PreResult result = createPreResultNoValue(lexemes, i);
|
|
|
|
+ if (result != null) {
|
|
|
|
+ preResults.add(result);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return preResults;
|
|
}
|
|
}
|
|
|
|
|
|
public PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
|
|
public PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
|
|
PreResult result = new PreResult();
|
|
PreResult result = new PreResult();
|
|
double value = findNumberValue(lexemes, lexeme, index);
|
|
double value = findNumberValue(lexemes, lexeme, index);
|
|
if (value == -1) return null;
|
|
if (value == -1) return null;
|
|
|
|
+ result.setValue(String.valueOf(value));
|
|
|
|
+ result.setUnits(lexeme.getText());
|
|
|
|
+ return getPreResultPub(lexemes, result);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public PreResult createPreResultNoValue(LexemePath<Lexeme> lexemes, int index) {
|
|
|
|
+ PreResult result = new PreResult();
|
|
|
|
+ String lisResult = findLisResult(lexemes, index);
|
|
|
|
+ if (StringUtils.isEmpty(lisResult)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ result.setValue(lisResult);
|
|
|
|
+ return getPreResultPub(lexemes, result);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public PreResult getPreResultPub(LexemePath<Lexeme> lexemes, PreResult result) {
|
|
//继续往前找化验明细项
|
|
//继续往前找化验明细项
|
|
if (cursor > 0) cursor--;
|
|
if (cursor > 0) cursor--;
|
|
Lexeme leftLexeme = lexemes.get(cursor);
|
|
Lexeme leftLexeme = lexemes.get(cursor);
|
|
@@ -48,11 +78,33 @@ public class PretreatmentLis extends Pretreatment {
|
|
}
|
|
}
|
|
position--;
|
|
position--;
|
|
}
|
|
}
|
|
- result.setValue(String.valueOf(value));
|
|
|
|
- result.setUnits(lexeme.getText());
|
|
|
|
|
|
+
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ protected String findLisResult(LexemePath<Lexeme> lexemes, int index) {
|
|
|
|
+ if (index < 1) return null;
|
|
|
|
+ cursor = index;
|
|
|
|
+ Lexeme leftLexeme = lexemes.get(cursor);
|
|
|
|
+ if ("×".equals(leftLexeme.getText())) {
|
|
|
|
+ if (cursor <= 0) return null;
|
|
|
|
+ cursor--;
|
|
|
|
+ leftLexeme = lexemes.get(cursor);
|
|
|
|
+ }
|
|
|
|
+ if (isLisResult(leftLexeme)) {
|
|
|
|
+ return leftLexeme.getText();
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static boolean isLisResult(Lexeme l) {
|
|
|
|
+ if (l == null) return false;
|
|
|
|
+ if (NlpUtil.isFeature(l.getProperty(), new NegativeEnum[]{NegativeEnum.LIS_RESULT})) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
|
|
public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|