|
|
@@ -18,6 +18,7 @@ import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
|
|
|
import org.jeecg.modules.medical.entity.AfterIncidentLog;
|
|
|
import org.jeecg.modules.medical.entity.AfterwardsAudit;
|
|
|
import org.jeecg.modules.medical.entity.AfterwardsIncidentAuditDiagnose;
|
|
|
+import org.jeecg.modules.medical.entity.DiagnoseItems;
|
|
|
import org.jeecg.modules.medical.entity.DiagnosesVO;
|
|
|
import org.jeecg.modules.medical.entity.FactorEnchance;
|
|
|
import org.jeecg.modules.medical.entity.MaterialItems;
|
|
|
@@ -40,6 +41,7 @@ import org.jeecg.modules.medical.service.IAdvanceWarningAuditService;
|
|
|
import org.jeecg.modules.medical.service.IAfterwardsAuditDetailService;
|
|
|
import org.jeecg.modules.medical.service.IAfterwardsAuditService;
|
|
|
import org.jeecg.modules.medical.service.IAfterwardsIncidentAuditDiagnoseService;
|
|
|
+import org.jeecg.modules.medical.service.IDiagnoseItemsService;
|
|
|
import org.jeecg.modules.medical.service.IFactorEnchanceService;
|
|
|
import org.jeecg.modules.medical.service.IMaterialItemsService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleInfoService;
|
|
|
@@ -129,6 +131,8 @@ public class RuleEngine {
|
|
|
ITreatmentItemsService treatmentItemsService;
|
|
|
@Autowired
|
|
|
IMedicalInsuranceDrugsService medicalInsuranceDrugsService;
|
|
|
+ @Autowired
|
|
|
+ IDiagnoseItemsService diagnoseItemsService;
|
|
|
|
|
|
public static ThreadLocal<MidIncidentWarningVO> midIncidentWarningVOThreadLocal = new ThreadLocal<>();
|
|
|
|
|
|
@@ -153,8 +157,10 @@ public class RuleEngine {
|
|
|
medicalMap.put(medicalInsRuleInfo.getId(), medicalInsRuleInfo);
|
|
|
if (Constant.TREATMEN_TYPE_ADVANCE_WARNING.equals(medicalInsRuleInfo.getCallScenario())) {
|
|
|
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())) {
|
|
|
+ } else
|
|
|
+// if (Constant.TREATMEN_TYPE_MID_INCIDENT_WARNING.equals(medicalInsRuleInfo.getCallScenario())
|
|
|
+// || Constant.TREATMEN_TYPE_MID_EX_POST_SUPERVISION.equals(medicalInsRuleInfo.getCallScenario()))
|
|
|
+ {
|
|
|
midMedicalInsRuleInfoList.add(medicalInsRuleInfo);
|
|
|
}
|
|
|
}
|
|
|
@@ -177,11 +183,15 @@ public class RuleEngine {
|
|
|
Set<String> consumableProjectCodeList = new HashSet<>();
|
|
|
Set<String> restorativesProjectCodeList = new HashSet<>();
|
|
|
Set<String> treatmentProjectCodeList = new HashSet<>();
|
|
|
+ Map<String, String> ruleIdAndCodeMap = new HashMap<>();
|
|
|
for (int index = 0; index < medicalInsRuleProjectList.size(); index++) {
|
|
|
medicalInsRuleProject = medicalInsRuleProjectList.get(index);
|
|
|
String projectCode = medicalInsRuleProject.getProjectCode();
|
|
|
String correlationProjectCode = medicalInsRuleProject.getCorrelationProjectCode();
|
|
|
if (StringUtils.isNotBlank(projectCode)) {
|
|
|
+ if(StringUtils.isNotBlank(medicalInsRuleProject.getViolationDesc())) {
|
|
|
+ ruleIdAndCodeMap.put(medicalInsInfoId + "_" + projectCode, medicalInsRuleProject.getViolationDesc());
|
|
|
+ }
|
|
|
if (projectCode.startsWith(Constant.CONSUMABLE_START_KEY)) {
|
|
|
consumableProjectCodeList.add(projectCode);
|
|
|
} else if (projectCode.startsWith(Constant.RESTORATIVES_T_START_KEY) ||
|
|
|
@@ -222,9 +232,9 @@ public class RuleEngine {
|
|
|
|
|
|
|
|
|
}
|
|
|
- setCache(consumableProjectCodeList, ruleItemCodeAndRuleIdMap, Constant.PROJECT_TYPE_CONSUMABLE_METERIAL);
|
|
|
- setCache(restorativesProjectCodeList, ruleItemCodeAndRuleIdMap, Constant.PROJECT_TYPE_MEDICINE);
|
|
|
- setCache(treatmentProjectCodeList, ruleItemCodeAndRuleIdMap, Constant.PROJECT_TYPE_DIAGNOSIS_TREATMENT);
|
|
|
+ setCache(consumableProjectCodeList, ruleItemCodeAndRuleIdMap, ruleIdAndCodeMap, Constant.PROJECT_TYPE_CONSUMABLE_METERIAL);
|
|
|
+ setCache(restorativesProjectCodeList, ruleItemCodeAndRuleIdMap, ruleIdAndCodeMap, Constant.PROJECT_TYPE_MEDICINE);
|
|
|
+ setCache(treatmentProjectCodeList, ruleItemCodeAndRuleIdMap, ruleIdAndCodeMap, Constant.PROJECT_TYPE_DIAGNOSIS_TREATMENT);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
@@ -238,15 +248,18 @@ public class RuleEngine {
|
|
|
if (medicalDiagnoseCodeFlag || cMedicalDiagnoseCodeFlag) {
|
|
|
List<MedicalInsRuleProjectDiagnose> medicalInsRuleProjectDiagnoseList = medicalInsRuleProjectDiagnoseService.lambdaQuery().eq(MedicalInsRuleProjectDiagnose::getMedicalInsRuleInfoId, medicalInsRuleInfo.getId()).list();
|
|
|
if (CollectionUtil.isNotEmpty(medicalInsRuleProjectDiagnoseList)) {
|
|
|
+ Set<String> treatmentProjectCodeList = new HashSet<>();
|
|
|
for (MedicalInsRuleProjectDiagnose medicalInsRuleProjectDiagnose : medicalInsRuleProjectDiagnoseList) {
|
|
|
- if (itemCodeAndRuleIdMap.containsKey(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode())) {
|
|
|
- itemCodeAndRuleIdMap.get(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode()).add(medicalInsRuleInfo.getId());
|
|
|
+ if (ruleItemCodeAndRuleIdMap.containsKey(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode())) {
|
|
|
+ ruleItemCodeAndRuleIdMap.get(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode()).add(medicalInsRuleInfo.getId());
|
|
|
} else {
|
|
|
Set<Integer> ruleIdSet = new HashSet<>();
|
|
|
ruleIdSet.add(medicalInsRuleInfo.getId());
|
|
|
- itemCodeAndRuleIdMap.put(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode(), ruleIdSet);
|
|
|
+ ruleItemCodeAndRuleIdMap.put(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode(), ruleIdSet);
|
|
|
}
|
|
|
+ treatmentProjectCodeList.add(medicalInsRuleProjectDiagnose.getMedicalDiagnoseCode());
|
|
|
}
|
|
|
+ setCache(treatmentProjectCodeList, ruleItemCodeAndRuleIdMap, null, Constant.PROJECT_TYPE_DIAG_CODE);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -256,10 +269,21 @@ public class RuleEngine {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void setCache(Set<String> projectCodeList, Map<String, Set<Integer>> ruleItemCodeAndRuleIdMap, String projectType) {
|
|
|
+ public void setDesc(Map<String,String> ruleIdAndCodeMap, String medicineCode, String projectCode, Set<Integer> medicalRuleInfoIdSet){
|
|
|
+ if(CollectionUtil.isNotEmpty(ruleIdAndCodeMap)) {
|
|
|
+ for (Integer medicalRuleInfoId : medicalRuleInfoIdSet) {
|
|
|
+ if (ruleIdAndCodeMap.containsKey(medicalRuleInfoId+"_"+projectCode)) {
|
|
|
+ String desc = ruleIdAndCodeMap.get(medicalRuleInfoId+"_"+projectCode);
|
|
|
+ redisTemplate.opsForHash().put(Constant.PROJECT_VOLIDATION_DESC_KEY + medicalRuleInfoId, medicineCode, desc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setCache(Set<String> projectCodeList, Map<String, Set<Integer>> ruleItemCodeAndRuleIdMap, Map<String,String> ruleIdAndCodeMap, String projectType) {
|
|
|
if (Constant.PROJECT_TYPE_MEDICINE.equals(projectType) && CollectionUtil.isNotEmpty(ruleItemCodeAndRuleIdMap)) {
|
|
|
List<MedicalInsuranceDrugs> medicalInsuranceDrugsList = medicalInsuranceDrugsService.lambdaQuery().isNotNull(MedicalInsuranceDrugs::getItemIdHosp).isNotNull(MedicalInsuranceDrugs::getMedicineCode).list();
|
|
|
- if(CollectionUtil.isNotEmpty(medicalInsuranceDrugsList)) {
|
|
|
+ if (CollectionUtil.isNotEmpty(medicalInsuranceDrugsList)) {
|
|
|
for (MedicalInsuranceDrugs medicalInsuranceDrugs : medicalInsuranceDrugsList) {
|
|
|
for (String projectCode : projectCodeList) {
|
|
|
boolean startFlag = SPELUtil.startWithKey(medicalInsuranceDrugs.getMedicineCode(), projectCode);
|
|
|
@@ -267,6 +291,7 @@ public class RuleEngine {
|
|
|
Set<Integer> medicalRuleInfoIdSet = ruleItemCodeAndRuleIdMap.get(projectCode);
|
|
|
if (CollectionUtil.isNotEmpty(medicalRuleInfoIdSet)) {
|
|
|
itemCodeAndRuleIdMap.put(medicalInsuranceDrugs.getMedicineCode(), medicalRuleInfoIdSet);
|
|
|
+ setDesc(ruleIdAndCodeMap, medicalInsuranceDrugs.getMedicineCode(), projectCode, medicalRuleInfoIdSet);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -274,7 +299,7 @@ public class RuleEngine {
|
|
|
}
|
|
|
} else if (Constant.PROJECT_TYPE_CONSUMABLE_METERIAL.equals(projectType) && CollectionUtil.isNotEmpty(ruleItemCodeAndRuleIdMap)) {
|
|
|
List<MaterialItems> materialItemsList = materialItemsService.lambdaQuery().isNotNull(MaterialItems::getItemIdHosp).isNotNull(MaterialItems::getItemId).list();
|
|
|
- if(CollectionUtil.isNotEmpty(materialItemsList)) {
|
|
|
+ if (CollectionUtil.isNotEmpty(materialItemsList)) {
|
|
|
for (MaterialItems materialItems : materialItemsList) {
|
|
|
for (String projectCode : projectCodeList) {
|
|
|
boolean startFlag = SPELUtil.startWithKey(materialItems.getItemId(), projectCode);
|
|
|
@@ -282,6 +307,7 @@ public class RuleEngine {
|
|
|
Set<Integer> medicalRuleInfoIdSet = ruleItemCodeAndRuleIdMap.get(projectCode);
|
|
|
if (CollectionUtil.isNotEmpty(medicalRuleInfoIdSet)) {
|
|
|
itemCodeAndRuleIdMap.put(materialItems.getItemId(), medicalRuleInfoIdSet);
|
|
|
+ setDesc(ruleIdAndCodeMap, materialItems.getItemId(), projectCode, medicalRuleInfoIdSet);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -289,7 +315,7 @@ public class RuleEngine {
|
|
|
}
|
|
|
} else if (Constant.PROJECT_TYPE_DIAGNOSIS_TREATMENT.equals(projectType) && CollectionUtil.isNotEmpty(ruleItemCodeAndRuleIdMap)) {
|
|
|
List<TreatmentItems> treatmentItemsList = treatmentItemsService.lambdaQuery().isNotNull(TreatmentItems::getItemIdHosp).isNotNull(TreatmentItems::getItemId).list();
|
|
|
- if(CollectionUtil.isNotEmpty(treatmentItemsList)) {
|
|
|
+ if (CollectionUtil.isNotEmpty(treatmentItemsList)) {
|
|
|
for (TreatmentItems treatmentItems : treatmentItemsList) {
|
|
|
for (String projectCode : projectCodeList) {
|
|
|
boolean startFlag = SPELUtil.startWithKey(treatmentItems.getItemId(), projectCode);
|
|
|
@@ -297,6 +323,22 @@ public class RuleEngine {
|
|
|
Set<Integer> medicalRuleInfoIdSet = ruleItemCodeAndRuleIdMap.get(projectCode);
|
|
|
if (CollectionUtil.isNotEmpty(medicalRuleInfoIdSet)) {
|
|
|
itemCodeAndRuleIdMap.put(treatmentItems.getItemId(), medicalRuleInfoIdSet);
|
|
|
+ setDesc(ruleIdAndCodeMap, treatmentItems.getItemId(), projectCode, medicalRuleInfoIdSet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (Constant.PROJECT_TYPE_DIAG_CODE.equals(projectType) && CollectionUtil.isNotEmpty(ruleItemCodeAndRuleIdMap)) {
|
|
|
+ List<DiagnoseItems> diagnoseItemsList = diagnoseItemsService.lambdaQuery().isNotNull(DiagnoseItems::getDiagnoseCode).isNotNull(DiagnoseItems::getMedicalDiagnoseCode).list();
|
|
|
+ if (CollectionUtil.isNotEmpty(diagnoseItemsList)) {
|
|
|
+ for (DiagnoseItems diagnoseItems : diagnoseItemsList) {
|
|
|
+ for (String projectCode : projectCodeList) {
|
|
|
+ boolean startFlag = SPELUtil.startWithKey(diagnoseItems.getDiagnoseCode(), projectCode);
|
|
|
+ if (startFlag) {
|
|
|
+ Set<Integer> medicalRuleInfoIdSet = ruleItemCodeAndRuleIdMap.get(projectCode);
|
|
|
+ if (CollectionUtil.isNotEmpty(medicalRuleInfoIdSet)) {
|
|
|
+ itemCodeAndRuleIdMap.put(diagnoseItems.getDiagnoseCode(), medicalRuleInfoIdSet);
|
|
|
}
|
|
|
}
|
|
|
}
|