|
|
@@ -135,7 +135,7 @@ public class RuleEngine {
|
|
|
* 根据规则id加载规则并初始化到redis里
|
|
|
* 后续提醒通过redis加载id,把id传入规则引擎,迅速调用对应规则
|
|
|
*/
|
|
|
- List<Integer> medicalInsRuleInfoIdList = new ArrayList<>();
|
|
|
+ List<MedicalInsRuleInfo> midMedicalInsRuleInfoList = new ArrayList<>();
|
|
|
Map<Integer, MedicalInsRuleInfo> medicalMap = new HashMap<>();
|
|
|
// redisTemplate.delete(Constant.MEDICAL_RULE_CACHE_KEY + "_" + Constant.TREATMEN_TYPE_ADVANCE_WARNING);
|
|
|
for (MedicalInsRuleInfo medicalInsRuleInfo : medicalInsRuleInfoList) {
|
|
|
@@ -146,18 +146,37 @@ public class RuleEngine {
|
|
|
advanceWaringRuleIdList.add(medicalInsRuleInfo.getId());
|
|
|
} else if (Constant.TREATMEN_TYPE_MID_INCIDENT_WARNING.equals(medicalInsRuleInfo.getCallScenario())
|
|
|
|| Constant.TREATMEN_TYPE_MID_EX_POST_SUPERVISION.equals(medicalInsRuleInfo.getCallScenario())) {
|
|
|
- medicalInsRuleInfoIdList.add(medicalInsRuleInfo.getId());
|
|
|
+ midMedicalInsRuleInfoList.add(medicalInsRuleInfo);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ genItemCodeAndRuleIdMap(midMedicalInsRuleInfoList);
|
|
|
+ List<RuleAttr> ruleAttrList = ruleAttrService.list();
|
|
|
+ interfRuleAttrList = ruleAttrList.stream().collect(Collectors.groupingBy(RuleAttr::getInterfName));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void genItemCodeAndRuleIdMap(List<MedicalInsRuleInfo> medicalInsRuleInfoList){
|
|
|
try {
|
|
|
|
|
|
- MemeryPageUtil.batchDeal(medicalInsRuleInfoIdList, 1000, pageDataList -> {
|
|
|
- List<MedicalInsRuleProject> medicalInsRuleProjectList = medicalInsRuleProjectService.lambdaQuery().in(MedicalInsRuleProject::getMedicalInsRuleInfoId, pageDataList).list();
|
|
|
+ MemeryPageUtil.batchDeal(medicalInsRuleInfoList, 1000, pageDataList -> {
|
|
|
+ List<Integer> ruleIdList = pageDataList.stream().map(MedicalInsRuleInfo::getId).collect(Collectors.toList());
|
|
|
+ List<MedicalInsRuleProject> medicalInsRuleProjectList = medicalInsRuleProjectService.lambdaQuery().in(MedicalInsRuleProject::getMedicalInsRuleInfoId, ruleIdList).list();
|
|
|
if (CollectionUtil.isNotEmpty(medicalInsRuleProjectList)) {
|
|
|
MedicalInsRuleProject medicalInsRuleProject = null;
|
|
|
for (int index = 0; index < medicalInsRuleProjectList.size(); index++) {
|
|
|
medicalInsRuleProject = medicalInsRuleProjectList.get(index);
|
|
|
if (StringUtils.isNotBlank(medicalInsRuleProject.getProjectCode())) {
|
|
|
+ if(medicalInsRuleProject.getProjectCode().startsWith(Constant.CONSUMABLE_START_KEY)){
|
|
|
+
|
|
|
+ }else if(medicalInsRuleProject.getProjectCode().startsWith(Constant.RESTORATIVES_T_START_KEY) ||
|
|
|
+ medicalInsRuleProject.getProjectCode().startsWith(Constant.RESTORATIVES_X_START_KEY) ||
|
|
|
+ medicalInsRuleProject.getProjectCode().startsWith(Constant.RESTORATIVES_Z_START_KEY)){
|
|
|
+
|
|
|
+ //耗材都是字母c开头, 药品是X或Z T, 医疗服务是数字开头
|
|
|
+ }else if(SPELUtil.isNumeric(medicalInsRuleProject.getProjectCode())){
|
|
|
+
|
|
|
+ }
|
|
|
if (itemCodeAndRuleIdMap.containsKey(medicalInsRuleProject.getProjectCode())) {
|
|
|
itemCodeAndRuleIdMap.get(medicalInsRuleProject.getProjectCode()).add(medicalInsRuleProject.getMedicalInsRuleInfoId());
|
|
|
} else {
|
|
|
@@ -175,15 +194,26 @@ public class RuleEngine {
|
|
|
itemCodeAndRuleIdMap.put(medicalInsRuleProject.getCorrelationProjectCode(), ruleIdSet);
|
|
|
}
|
|
|
}
|
|
|
- List<MedicalInsRuleProjectDiagnose> medicalInsRuleProjectDiagnoseList = medicalInsRuleProjectDiagnoseService.lambdaQuery().eq(MedicalInsRuleProjectDiagnose::getMedicalInsRuleInfoId, medicalInsRuleProject.getMedicalInsRuleInfoId()).list();
|
|
|
- if (CollectionUtil.isNotEmpty(medicalInsRuleProjectDiagnoseList)) {
|
|
|
- for (MedicalInsRuleProjectDiagnose medicalInsRuleProjectDiagnose : medicalInsRuleProjectDiagnoseList) {
|
|
|
- if (itemCodeAndRuleIdMap.containsKey(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode())) {
|
|
|
- itemCodeAndRuleIdMap.get(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode()).add(medicalInsRuleProject.getMedicalInsRuleInfoId());
|
|
|
- } else {
|
|
|
- Set<Integer> ruleIdSet = new HashSet<>();
|
|
|
- ruleIdSet.add(medicalInsRuleProject.getMedicalInsRuleInfoId());
|
|
|
- itemCodeAndRuleIdMap.put(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode(), ruleIdSet);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for(MedicalInsRuleInfo medicalInsRuleInfo : medicalInsRuleInfoList) {
|
|
|
+ if(StringUtils.isNotBlank(medicalInsRuleInfo.getSelectedRoles())) {
|
|
|
+ String[] rolesArr = medicalInsRuleInfo.getSelectedRoles().split(",");
|
|
|
+ boolean medicalDiagnoseCodeFlag = Arrays.stream(rolesArr).allMatch(role -> role.equals("medicalDiagnoseCode"));
|
|
|
+ if(medicalDiagnoseCodeFlag) {
|
|
|
+ List<MedicalInsRuleProjectDiagnose> medicalInsRuleProjectDiagnoseList = medicalInsRuleProjectDiagnoseService.lambdaQuery().eq(MedicalInsRuleProjectDiagnose::getMedicalInsRuleInfoId, medicalInsRuleInfo.getId()).list();
|
|
|
+ if (CollectionUtil.isNotEmpty(medicalInsRuleProjectDiagnoseList)) {
|
|
|
+ for (MedicalInsRuleProjectDiagnose medicalInsRuleProjectDiagnose : medicalInsRuleProjectDiagnoseList) {
|
|
|
+ if (itemCodeAndRuleIdMap.containsKey(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode())) {
|
|
|
+ itemCodeAndRuleIdMap.get(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode()).add(medicalInsRuleInfo.getId());
|
|
|
+ } else {
|
|
|
+ Set<Integer> ruleIdSet = new HashSet<>();
|
|
|
+ ruleIdSet.add(medicalInsRuleInfo.getId());
|
|
|
+ itemCodeAndRuleIdMap.put(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode(), ruleIdSet);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -193,10 +223,6 @@ public class RuleEngine {
|
|
|
} catch (Exception e) {
|
|
|
log.error(e.getMessage(), e);
|
|
|
}
|
|
|
-
|
|
|
- List<RuleAttr> ruleAttrList = ruleAttrService.list();
|
|
|
- interfRuleAttrList = ruleAttrList.stream().collect(Collectors.groupingBy(RuleAttr::getInterfName));
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -302,6 +328,9 @@ public class RuleEngine {
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 事后明细
|
|
|
*
|