|
@@ -9,12 +9,16 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
+import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
|
|
|
+import static org.diagbot.nlp.util.Constants.app_rule_type_id;
|
|
|
+
|
|
|
/**
|
|
|
* Created by louhr on 2019/9/2.
|
|
|
*/
|
|
@@ -47,7 +51,8 @@ public class CrisisApplication {
|
|
|
String[] fieldRuleIds = app.getValue().getRuleIds().split("\\^");
|
|
|
for (String fieldRuleId : fieldRuleIds) {
|
|
|
String[] ruleIds = fieldRuleId.split(",");
|
|
|
- String standardText = "", originText = "", remind = "";;
|
|
|
+ String standardText = "", originText = "", remind = "";
|
|
|
+ ;
|
|
|
boolean allRuleIdsSuit = true;
|
|
|
for (String ruleId : ruleIds) {
|
|
|
boolean isFindRule = false;
|
|
@@ -93,6 +98,7 @@ public class CrisisApplication {
|
|
|
}
|
|
|
//所有规则都满足
|
|
|
if (hasAppSuit) {
|
|
|
+
|
|
|
CrisisDetail crisisDetail = new CrisisDetail();
|
|
|
crisisDetail.setOriginText(appOriginText);
|
|
|
crisisDetail.setRemindText(app.getValue().getRemind().replace("${remind}", appRemindVar));
|
|
@@ -115,9 +121,41 @@ public class CrisisApplication {
|
|
|
crisisMap.put(key, crisisList);
|
|
|
}
|
|
|
}
|
|
|
+ //针对同时出现"血压:高血压1级"、"血压:高血压3级"...只取等级高的
|
|
|
+ procHypertension(crisisMap);
|
|
|
return crisisMap;
|
|
|
}
|
|
|
|
|
|
+ private void procHypertension(Map<String, List<CrisisDetail>> crisisMap) {
|
|
|
+ List<CrisisDetail> crisisDetails = crisisMap.get(key);
|
|
|
+ if (crisisDetails == null || crisisDetails.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> hypertensionRule = new ArrayList<>();
|
|
|
+ for (CrisisDetail crisisDetail : crisisDetails) {
|
|
|
+ if (crisisDetail.getRemindText().contains("血压:高血压")
|
|
|
+ && crisisDetail.getTypeId().equals(app_rule_type_id)) {
|
|
|
+ hypertensionRule.add(crisisDetail.getRemindText());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (hypertensionRule.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Collections.sort(hypertensionRule); //高血压等级从小到大排序
|
|
|
+ //保留高血压等级最大的值,其他的删除
|
|
|
+ for (int i = 0; i < hypertensionRule.size() - 1; i++) {
|
|
|
+ for (int j = 0; j < crisisDetails.size(); j++) {
|
|
|
+ if (hypertensionRule.get(i).equals(crisisDetails.get(j).getRemindText())) {
|
|
|
+ crisisDetails.remove(j);
|
|
|
+ //删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。
|
|
|
+ //要删除的元素往前面移动了,而你的i保存的值依旧往后走,所以如果让i不往后走,往前走一个,
|
|
|
+ //即可删除本来排在第二个位置的元素现在排在了第一个位置上的元素。
|
|
|
+ j--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private List<String> getAllRuleId(Map<String, RuleApp> ruleApps) {
|
|
|
Set<String> typeIdSet = new HashSet<>();
|
|
|
for (Map.Entry<String, RuleApp> ruleAppEntry : ruleApps.entrySet()) {
|