瀏覽代碼

规则做统一过滤

louhr 5 年之前
父節點
當前提交
cfd61c01a3

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

@@ -237,20 +237,20 @@ public class ApplicationCacheUtil {
             String[] content = line.split("\\|");
             Rule rule = new Rule();
             if (content.length == 14) {
-                rule.setIdx_name(content[0]);
-                rule.setSet_name(content[1]);
-                rule.setSet_status(content[2]);
-                rule.setMin_value(content[3]);
-                rule.setMin_concept_text(content[4]);
-                rule.setMax_value(content[5]);
-                rule.setMax_concept_text(content[6]);
-                rule.setSet_value(content[7]);
-                rule.setSet_concept_text(content[8]);
-                rule.setUnit(content[9]);
-                rule.setType_value(content[10]);
-                rule.setMinRemind(content[11]);
-                rule.setMaxRemind(content[12]);
-                rule.setSetRemind(content[13]);
+                rule.setIdx_name(content[0]==null?"":content[0]);
+                rule.setSet_name(content[1]==null?"":content[1]);
+                rule.setSet_status(content[2]==null?"":content[2]);
+                rule.setMin_value(content[3]==null?"":content[3]);
+                rule.setMin_concept_text(content[4]==null?"":content[4]);
+                rule.setMax_value(content[5]==null?"":content[5]);
+                rule.setMax_concept_text(content[6]==null?"":content[6]);
+                rule.setSet_value(content[7]==null?"":content[7]);
+                rule.setSet_concept_text(content[8]==null?"":content[8]);
+                rule.setUnit(content[9]==null?"":content[9]);
+                rule.setType_value(content[10]==null?"":content[10]);
+                rule.setMinRemind(content[11]==null?"":content[11]);
+                rule.setMaxRemind(content[12]==null?"":content[12]);
+                rule.setSetRemind(content[13]==null?"":content[13]);
                 if (kl_rule_filter_map.get(rule.getIdx_name()) == null) {
                     rules = new ArrayList<>();
                 } else {

+ 8 - 9
bigdata-web/src/main/java/org/diagbot/bigdata/work/PretreatmentFilter.java

@@ -5,6 +5,7 @@ import org.diagbot.bigdata.common.ApplicationCacheUtil;
 import org.diagbot.common.javabean.Rule;
 import org.diagbot.common.push.filter.PreResult;
 import org.diagbot.common.push.filter.pretreat.Pretreatment;
+import org.diagbot.common.push.filter.pretreat.PretreatmentPacs;
 import org.diagbot.common.push.filter.pretreat.PretreatmentSymptom;
 import org.diagbot.common.push.filter.pretreat.PretreatmentVital;
 import org.diagbot.common.work.CrisisDetail;
@@ -54,7 +55,7 @@ public class PretreatmentFilter {
         }
         //pacs数据
         if (!StringUtils.isEmpty(searchData.getPacs())) {
-            searchData.setPacs(add2PreResultList(new PretreatmentVital(), searchData.getPacs(), allCrisisDetailList));
+            searchData.setPacs(add2PreResultList(new PretreatmentPacs(), searchData.getPacs(), allCrisisDetailList));
         }
         responseData.setCrisisDetails(allCrisisDetailList);
     }
@@ -96,13 +97,13 @@ public class PretreatmentFilter {
     private String conceptConvert(PreResult result, Rule rule, String content) {
         //标准值最优先匹配 暂时忽略单位
         if (compareEqual(result.getValue(), rule.getSet_value())) {
-            content = content + rule.getSet_concept_text();
+            content = content + rule.getSet_concept_text()==null?"":rule.getSet_concept_text();
         }
         if (compareMin(result.getValue(), rule.getMin_value())) {
-            content = content + rule.getMin_concept_text();
+            content = content + rule.getMin_concept_text()==null?"":rule.getMin_concept_text();
         }
         if (compareMax(result.getValue(), rule.getMax_value())) {
-            content = content + rule.getMax_concept_text();
+            content = content + rule.getMax_concept_text()==null?"":rule.getMax_concept_text();
         }
         return content;
     }
@@ -110,9 +111,9 @@ public class PretreatmentFilter {
     private void conceptCrisis(PreResult result, Rule rule, List<CrisisDetail> allCrisisDetailList) {
         boolean crisis = false;
         CrisisDetail crisisDetail = new CrisisDetail();
-        crisisDetail.setOriginText(result.getDetailName() + " = " + result.getValue() + result.getUnits());
+        crisisDetail.setOriginText(result.getDetailName() + " : " + result.getValue() + result.getUnits());
         if (compareEqual(result.getValue(), rule.getSet_value())) {
-            crisisDetail.setStandardText(result.getDetailName() + " = " + rule.getSet_value() + rule.getUnit());
+            crisisDetail.setStandardText(result.getDetailName() + " : " + rule.getSet_value() + rule.getUnit());
             crisisDetail.setRemindText(rule.getSetRemind());
             crisis = true;
         }
@@ -154,9 +155,7 @@ public class PretreatmentFilter {
         if (!StringUtils.isEmpty(c1) && !StringUtils.isEmpty(c2)) {
             try {
                 return Double.valueOf(c1) > Double.valueOf(c2);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+            } catch (Exception e) {}
         }
         return false;
     }

+ 13 - 13
common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java

@@ -353,19 +353,19 @@ public class CacheFileManager {
                 r13 = rs.getString(13);
                 r14 = rs.getString(14);
                 r1 = StringUtils.isEmpty(r1)?"":r1;
-                r2 = StringUtils.isEmpty(r1)?"":r2;
-                r3 = StringUtils.isEmpty(r1)?"":r3;
-                r4 = StringUtils.isEmpty(r1)?"":r4;
-                r5 = StringUtils.isEmpty(r1)?"":r5;
-                r6 = StringUtils.isEmpty(r1)?"":r6;
-                r7 = StringUtils.isEmpty(r1)?"":r7;
-                r8 = StringUtils.isEmpty(r1)?"":r8;
-                r9 = StringUtils.isEmpty(r1)?"":r9;
-                r10 = StringUtils.isEmpty(r1)?"":r10;
-                r11 = StringUtils.isEmpty(r1)?"":r11;
-                r12 = StringUtils.isEmpty(r1)?"":r12;
-                r13 = StringUtils.isEmpty(r1)?"":r13;
-                r14 = StringUtils.isEmpty(r1)?"":r14;
+                r2 = StringUtils.isEmpty(r2)?"":r2;
+                r3 = StringUtils.isEmpty(r3)?"":r3;
+                r4 = StringUtils.isEmpty(r4)?"":r4;
+                r5 = StringUtils.isEmpty(r5)?"":r5;
+                r6 = StringUtils.isEmpty(r6)?"":r6;
+                r7 = StringUtils.isEmpty(r7)?"":r7;
+                r8 = StringUtils.isEmpty(r8)?"":r8;
+                r9 = StringUtils.isEmpty(r9)?"":r9;
+                r10 = StringUtils.isEmpty(r10)?"":r10;
+                r11 = StringUtils.isEmpty(r11)?"":r11;
+                r12 = StringUtils.isEmpty(r12)?"":r12;
+                r13 = StringUtils.isEmpty(r13)?"":r13;
+                r14 = StringUtils.isEmpty(r14)?"":r14;
                 fw.write(encrypDES.encrytor(r1+ "|" + r2 + "|" + r3 + "|" + r4 + "|" + r5
                         + "|" + r6 + "|" + r7 + "|" + r8 + "|" + r9 + "|" + r10 + "|" + r11 + "|" + r12 + "|" + r13 + "|" + r14));
                 fw.write("\n");

+ 47 - 0
common-push/src/main/java/org/diagbot/common/push/filter/pretreat/PretreatmentPacs.java

@@ -0,0 +1,47 @@
+package org.diagbot.common.push.filter.pretreat;
+
+import org.diagbot.common.push.filter.PreResult;
+import org.diagbot.nlp.participle.ParticipleUtil;
+import org.diagbot.nlp.participle.word.Lexeme;
+import org.diagbot.nlp.participle.word.LexemePath;
+import org.diagbot.nlp.util.NegativeEnum;
+import org.diagbot.nlp.util.NlpUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PretreatmentPacs extends Pretreatment {
+    protected NegativeEnum[] nees_pacs_result = new NegativeEnum[]{NegativeEnum.PACS_RESULT, NegativeEnum.DISEASE};
+    protected NegativeEnum[] nees_pacs_name = new NegativeEnum[]{NegativeEnum.PACS_NAME};
+    public List<PreResult> analyze(String content) throws java.io.IOException{
+        List<PreResult> preResultList = super.analyzeDefault(content);
+        //pacs除了数值型需要转, 还需要对部分检查结果提取,以便做危机警示
+        LexemePath<Lexeme> lexemes = ParticipleUtil.participle(content);
+
+        Lexeme leftLexeme;
+        for (int i = 0; i < lexemes.size(); i++) {
+            Lexeme l = lexemes.get(i);
+            if (NlpUtil.isFeature(l.getProperty(), nees_pacs_result) && i > 0) {
+                int c = i - 1;
+                while (c > -1) {
+                    leftLexeme = lexemes.get(c);
+                    if (NlpUtil.isFeature(leftLexeme.getProperty(), nees_pacs_name)) {
+                        PreResult result = new PreResult();
+                        result.setValue(l.getText());
+                        result.setDetailName(leftLexeme.getText());
+                        preResultList.add(result);
+                        break;
+                    }
+                    c--;
+                }
+
+            }
+        }
+
+        return preResultList;
+    }
+
+    public PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
+        return super.createDefaultPreResult(lexemes, lexeme, index);
+    }
+}

+ 14 - 14
common-service/src/main/java/org/diagbot/common/javabean/Rule.java

@@ -12,33 +12,33 @@ import lombok.Setter;
 @Setter
 public class Rule {
     // 大类名称
-    private String set_name;
+    private String set_name = "";
     // 小类名称
-    private String idx_name;
+    private String idx_name = "";
     // 大类名称是否参与比较 1-参与
-    private String set_status;
+    private String set_status = "";
     // 最小值
-    private String min_value;
+    private String min_value = "";
     // 最小值对应的标准文本
-    private String min_concept_text;
+    private String min_concept_text = "";
     // 最大值
-    private String max_value;
+    private String max_value = "";
     // 最小值对应的标准文本
-    private String max_concept_text;
+    private String max_concept_text = "";
     // 标准值 用作等于
-    private String set_value;
+    private String set_value = "";
     //转后标准术语
-    private String set_concept_text;
+    private String set_concept_text = "";
     // 单位
-    private String unit;
+    private String unit = "";
     //危机标识 用作危机值提醒
-    private String type_value;
+    private String type_value = "";
     //提醒信息
-    private String minRemind;
+    private String minRemind = "";
     //提醒信息
-    private String maxRemind;
+    private String maxRemind = "";
     //提醒信息
-    private String setRemind;
+    private String setRemind = "";
 
     public String getSet_name() {
         return set_name;