|
@@ -3,14 +3,17 @@ package com.diagbot.rule;
|
|
|
import com.diagbot.biz.push.entity.Pacs;
|
|
|
import com.diagbot.dto.BaseDiagnoseDTO;
|
|
|
import com.diagbot.dto.BillMsg;
|
|
|
+import com.diagbot.dto.DictionaryInfoDTO;
|
|
|
import com.diagbot.dto.RuleBaseDTO;
|
|
|
import com.diagbot.dto.RuleSimpleDTO;
|
|
|
import com.diagbot.dto.WordCrfDTO;
|
|
|
import com.diagbot.enums.BaseDiagnoseTypeEnum;
|
|
|
import com.diagbot.enums.ConEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
|
+import com.diagbot.enums.RedisEnum;
|
|
|
import com.diagbot.enums.TypeEnum;
|
|
|
import com.diagbot.facade.CommonFacade;
|
|
|
+import com.diagbot.facade.KlDictionaryInfoFacade;
|
|
|
import com.diagbot.model.entity.Clinical;
|
|
|
import com.diagbot.model.entity.Negative;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
@@ -19,6 +22,8 @@ import com.diagbot.util.CoreUtil;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.MsgUtil;
|
|
|
+import com.diagbot.util.RedisUtil;
|
|
|
+import com.diagbot.util.ReflectUtil;
|
|
|
import com.diagbot.util.RegexUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -53,6 +58,10 @@ public class CommonRule {
|
|
|
AgeRule ageRule;
|
|
|
@Autowired
|
|
|
LisRule lisRule;
|
|
|
+ @Autowired
|
|
|
+ KlDictionaryInfoFacade klDictionaryInfoFacade;
|
|
|
+ @Autowired
|
|
|
+ RedisUtil redisUtil;
|
|
|
|
|
|
/**
|
|
|
* 比较阳性属性是否匹配
|
|
@@ -346,6 +355,25 @@ public class CommonRule {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取频次分组
|
|
|
+ *
|
|
|
+ * @param frequency
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getFrquenceType(String frequency) {
|
|
|
+ if (StringUtil.isEmpty(frequency)) {
|
|
|
+ frequency = "空";
|
|
|
+ }
|
|
|
+ List<DictionaryInfoDTO> listByGroupType = redisUtil.get(RedisEnum.frequency.getName());
|
|
|
+ for (DictionaryInfoDTO dic : listByGroupType) {
|
|
|
+ if (RegexUtil.getRegexRes(frequency, dic.getVal())) {
|
|
|
+ return dic.getName();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 24小时重复开单入口
|
|
|
*
|
|
@@ -359,49 +387,31 @@ public class CommonRule {
|
|
|
if (ListUtil.isEmpty(itemList)) {
|
|
|
return;
|
|
|
}
|
|
|
- // Map<String, List<T>> map = EntityUtil.makeEntityListMap(itemList, "name");
|
|
|
Map<String, List<T>> map = CoreUtil.makeEntityListMap(itemList, "name", "uniqueName");
|
|
|
for (String key : map.keySet()) {
|
|
|
List<T> items = map.get(key);
|
|
|
|
|
|
- // 个数大于2个才比较
|
|
|
if (ListUtil.isNotEmpty(items) && items.size() > 1) {
|
|
|
- // items 按照时间排序
|
|
|
- Collections.sort(items, new Comparator<T>() {
|
|
|
- @Override
|
|
|
- public int compare(T o1, T o2) {
|
|
|
- String o1Str = (String) CoreUtil.getFieldValue(o1, "dateValue");
|
|
|
- String o2Str = (String) CoreUtil.getFieldValue(o2, "dateValue");
|
|
|
- if (StringUtil.isBlank(o1Str) || StringUtil.isBlank(o2Str)) {
|
|
|
- return -1;
|
|
|
- } else {
|
|
|
- return o1Str.compareTo(o2Str);
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- // 比较时间是否在24小时内
|
|
|
- List<Date> dateList = new ArrayList<>();
|
|
|
- for (T it : items) {
|
|
|
- String dateValue = (String) CoreUtil.getFieldValue(it, "dateValue");
|
|
|
- if (StringUtil.isNotBlank(dateValue)) {
|
|
|
- Date cur = CatalogueUtil.parseStringDate(dateValue);
|
|
|
- // 如果为null,说明日期格式出错,不比较
|
|
|
- if (cur != null) {
|
|
|
- if (ListUtil.isNotEmpty(dateList)) {
|
|
|
- Date last = dateList.get(dateList.size() - 1);
|
|
|
- if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
|
|
|
+ for (int i = 0; i < items.size(); i++) {
|
|
|
+ T it = items.get(i);
|
|
|
+ String curDateValue = ReflectUtil.getProperty(it, "dateValue");
|
|
|
+ if (StringUtil.isNotBlank(curDateValue)) {
|
|
|
+ Date curDate = CatalogueUtil.parseStringDate(curDateValue);
|
|
|
+ for (int j = i + 1; j < itemList.size(); j++) {
|
|
|
+ T itNext = items.get(j);
|
|
|
+ String nextDateValue = ReflectUtil.getProperty(itNext, "dateValue");
|
|
|
+ if (StringUtil.isNotBlank(nextDateValue)) {
|
|
|
+ Date netDate = CatalogueUtil.parseStringDate(nextDateValue);
|
|
|
+ if (!CatalogueUtil.compareTime(netDate, curDate, 60L * 24, true)
|
|
|
+ && getFrquenceType(ReflectUtil.getProperty(it, "frequency"))
|
|
|
+ .equals(getFrquenceType(ReflectUtil.getProperty(itNext, "frequency")))) {
|
|
|
String name = (String) CoreUtil.getFieldValue(it, "name");
|
|
|
String uniqueName = (String) CoreUtil.getFieldValue(it, "uniqueName");
|
|
|
BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(
|
|
|
name, uniqueName, name, ConEnum.repeat24.getName(), type);
|
|
|
billMsgList.add(commonBillMsg);
|
|
|
break;
|
|
|
- } else {
|
|
|
- dateList.add(cur);
|
|
|
}
|
|
|
- } else {
|
|
|
- dateList.add(cur);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -498,4 +508,9 @@ public class CommonRule {
|
|
|
Collections.sort(baseIdList); // id排序,方便调试查看
|
|
|
return baseIdList;
|
|
|
}
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ CommonRule commonRule = new CommonRule();
|
|
|
+ System.out.println(commonRule.getFrquenceType(null));
|
|
|
+ }
|
|
|
}
|