|
@@ -18,6 +18,10 @@ import java.util.Map;
|
|
|
|
|
|
public class PretreatmentRule {
|
|
public class PretreatmentRule {
|
|
public void rule(SearchData searchData) throws java.io.IOException {
|
|
public void rule(SearchData searchData) throws java.io.IOException {
|
|
|
|
+ //患者基本信息 性别 年龄
|
|
|
|
+ if (!StringUtils.isEmpty(searchData.getNormal())) {
|
|
|
|
+ searchData.setNormal(add2PreResultList(new PretreatmentNormal(), searchData.getNormal(), "normal", searchData));
|
|
|
|
+ }
|
|
//症状数据
|
|
//症状数据
|
|
if (!StringUtils.isEmpty(searchData.getSymptom())) {
|
|
if (!StringUtils.isEmpty(searchData.getSymptom())) {
|
|
searchData.setSymptom(add2PreResultList(new PretreatmentSymptom(), searchData.getSymptom(), "symptom", searchData));
|
|
searchData.setSymptom(add2PreResultList(new PretreatmentSymptom(), searchData.getSymptom(), "symptom", searchData));
|
|
@@ -53,7 +57,7 @@ public class PretreatmentRule {
|
|
private String add2PreResultList(List<PreResult> preResultList, String content, String ruleType, SearchData searchData) throws java.io.IOException {
|
|
private String add2PreResultList(List<PreResult> preResultList, String content, String ruleType, SearchData searchData) throws java.io.IOException {
|
|
Map<String, List<Rule>> kl_rule_filter_map = ApplicationCacheUtil.getKl_rule_filter_map();
|
|
Map<String, List<Rule>> kl_rule_filter_map = ApplicationCacheUtil.getKl_rule_filter_map();
|
|
//符合条件的规则
|
|
//符合条件的规则
|
|
- Map<String, List<Rule>> accord_rule_map = new HashMap<>();
|
|
|
|
|
|
+ Map<String, List<Rule>> accord_rule_map = searchData.getRules();
|
|
List<Rule> accord_rules = null;
|
|
List<Rule> accord_rules = null;
|
|
if (preResultList != null) {
|
|
if (preResultList != null) {
|
|
for (PreResult result : preResultList) {
|
|
for (PreResult result : preResultList) {
|
|
@@ -64,16 +68,20 @@ public class PretreatmentRule {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
for (Rule rule : rules) {
|
|
for (Rule rule : rules) {
|
|
- content = conceptConvert(result, rule, content);
|
|
|
|
- rule.setOriginText(result.getUniqueName() + ":" + result.getValue() + result.getUnits());
|
|
|
|
- if (accord_rule_map.get(ruleType) == null) {
|
|
|
|
- accord_rules = new ArrayList<>();
|
|
|
|
- } else {
|
|
|
|
- accord_rules = accord_rule_map.get(ruleType);
|
|
|
|
|
|
+ boolean isSuit = suitRule(result, rule, content);
|
|
|
|
+ if (isSuit) {
|
|
|
|
+ rule.setOriginText(result.getUniqueName() + ":" + result.getValue() + result.getUnits());
|
|
|
|
+ if (accord_rule_map.get(ruleType) == null) {
|
|
|
|
+ accord_rules = new ArrayList<>();
|
|
|
|
+ } else {
|
|
|
|
+ accord_rules = accord_rule_map.get(ruleType);
|
|
|
|
+ }
|
|
|
|
+ accord_rules.add(rule);
|
|
|
|
+ accord_rule_map.put(ruleType, accord_rules);
|
|
|
|
+ searchData.setRules(accord_rule_map);
|
|
|
|
+
|
|
|
|
+ content = content + rule.getRemind() == null ? "" : rule.getRemind();
|
|
}
|
|
}
|
|
- accord_rules.add(rule);
|
|
|
|
- accord_rule_map.put(ruleType, accord_rules);
|
|
|
|
- searchData.setRules(accord_rule_map);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -82,23 +90,39 @@ public class PretreatmentRule {
|
|
return content;
|
|
return content;
|
|
}
|
|
}
|
|
|
|
|
|
- private String conceptConvert(PreResult result, Rule rule, String content) {
|
|
|
|
|
|
+ private boolean suitRule(PreResult result, Rule rule, String content) {
|
|
//标准值最优先匹配
|
|
//标准值最优先匹配
|
|
- if (compareEqual(result.getValue(), rule.getEq_value())) {
|
|
|
|
- content = content + rule.getRemind() == null ? "" : rule.getRemind();
|
|
|
|
- } else if (compareMin(result.getValue(), rule.getMax_operator(), rule.getMax_operator()) //比最大值小
|
|
|
|
- && compareMax(result.getValue(), rule.getMin_operator(), rule.getMin_operator()) //比最小值大
|
|
|
|
- && result.getUnits().equals(rule.getMin_operator())
|
|
|
|
- && result.getUnits().equals(rule.getMax_operator())) {
|
|
|
|
- content = content + rule.getRemind() == null ? "" : rule.getRemind();
|
|
|
|
- } else if (compareMin(result.getValue(), rule.getMin_value(), rule.getMin_operator()) //比最小值小
|
|
|
|
- && result.getUnits().equals(rule.getMin_operator())) {
|
|
|
|
- content = content + rule.getRemind() == null ? "" : rule.getRemind();
|
|
|
|
- } else if (compareMax(result.getValue(), rule.getMax_value(), rule.getMax_operator()) //比最大值大
|
|
|
|
- && result.getUnits().equals(rule.getMin_operator())) {
|
|
|
|
- content = content + rule.getRemind() == null ? "" : rule.getRemind();
|
|
|
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isNotEmpty(rule.getEq_value())) {
|
|
|
|
+ if (compareEqual(result.getValue(), rule.getEq_value())) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ } else if (org.apache.commons.lang3.StringUtils.isNotEmpty(rule.getMax_value()) && org.apache.commons.lang3.StringUtils.isNotEmpty(rule.getMin_value())) {
|
|
|
|
+ if (compareMin(result.getValue(), rule.getMax_value(), rule.getMax_operator()) //比最大值小
|
|
|
|
+ && compareMax(result.getValue(), rule.getMin_value(), rule.getMin_operator()) //比最小值大
|
|
|
|
+ && result.getUnits().equals(rule.getMin_unit())
|
|
|
|
+ && result.getUnits().equals(rule.getMax_unit())) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ } else if (org.apache.commons.lang3.StringUtils.isNotEmpty(rule.getMin_value())) {
|
|
|
|
+ if (compareMin(result.getValue(), rule.getMin_value(), rule.getMin_operator()) //比最小值小
|
|
|
|
+ && result.getUnits().equals(rule.getMin_unit())) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ } else if(org.apache.commons.lang3.StringUtils.isNotEmpty(rule.getMax_value())) {
|
|
|
|
+ if (compareMax(result.getValue(), rule.getMax_value(), rule.getMax_operator()) //比最大值大
|
|
|
|
+ && result.getUnits().equals(rule.getMin_unit())) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- return content;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -119,7 +143,6 @@ public class PretreatmentRule {
|
|
return Double.valueOf(c1) < Double.valueOf(c2);
|
|
return Double.valueOf(c1) < Double.valueOf(c2);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- e.printStackTrace();
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
return false;
|