|
|
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
@@ -31,11 +32,13 @@ import org.jeecg.modules.medical.entity.MedicalInsRuleProject;
|
|
|
import org.jeecg.modules.medical.entity.MedicalInsRuleProjectDiagnose;
|
|
|
import org.jeecg.modules.medical.entity.MedicalInsuranceDrugs;
|
|
|
import org.jeecg.modules.medical.entity.MidIncidentAudit;
|
|
|
+import org.jeecg.modules.medical.entity.MidIncidentAuditDetail;
|
|
|
import org.jeecg.modules.medical.entity.MidIncidentAuditDiagnose;
|
|
|
import org.jeecg.modules.medical.entity.MidIncidentVisitDetailLog;
|
|
|
import org.jeecg.modules.medical.entity.MidIncidentVisitLog;
|
|
|
import org.jeecg.modules.medical.entity.MidIncidentWarningVO;
|
|
|
import org.jeecg.modules.medical.entity.MidResult;
|
|
|
+import org.jeecg.modules.medical.entity.MidRule;
|
|
|
import org.jeecg.modules.medical.entity.RuleAttr;
|
|
|
import org.jeecg.modules.medical.entity.RuleFactorRela;
|
|
|
import org.jeecg.modules.medical.entity.TreatmentItems;
|
|
|
@@ -54,6 +57,7 @@ import org.jeecg.modules.medical.service.IMedicalInsRuleInfoService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleProjectDiagnoseService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleProjectService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsuranceDrugsService;
|
|
|
+import org.jeecg.modules.medical.service.IMidIncidentAuditDetailService;
|
|
|
import org.jeecg.modules.medical.service.IMidIncidentAuditDiagnoseService;
|
|
|
import org.jeecg.modules.medical.service.IMidIncidentAuditService;
|
|
|
import org.jeecg.modules.medical.service.IMidIncidentVisitDetailLogService;
|
|
|
@@ -112,6 +116,8 @@ public class RuleEngine {
|
|
|
@Autowired
|
|
|
IMidIncidentAuditDiagnoseService midIncidentAuditDiagnoseService;
|
|
|
@Autowired
|
|
|
+ IMidIncidentAuditDetailService midIncidentAuditDetailService;
|
|
|
+ @Autowired
|
|
|
IMidIncidentVisitLogService midIncidentVisitLogService;
|
|
|
@Autowired
|
|
|
IMidIncidentVisitDetailLogService midIncidentVisitDetailLogService;
|
|
|
@@ -594,6 +600,8 @@ public class RuleEngine {
|
|
|
}
|
|
|
|
|
|
public MidResult dealMidInterfaceEngin(MidIncidentWarningVO midIncidentWarningVO) {
|
|
|
+ Map<String,String> validationLevelMap = sysDictService.queryValueMapByCode("violation_level");
|
|
|
+ Map<String,String> treatmentMap = sysDictService.queryValueMapByCode("treatment_type");
|
|
|
MidResult midResult = new MidResult();
|
|
|
try {
|
|
|
dictUtil.transferMidIncidentWarningVO(midIncidentWarningVO);
|
|
|
@@ -604,7 +612,7 @@ public class RuleEngine {
|
|
|
//callScenario 1=事前 2=事后 3=事前/事后 4=事中 5=事后/事中
|
|
|
List<String> callScenarioList = Arrays.asList("4", "5");
|
|
|
boolean sendFlag = false;
|
|
|
- MidRunRuleEngineCallable midRunRuleEngineCallable = null;
|
|
|
+
|
|
|
|
|
|
List<Map<String,Object>> detailMapList = new ArrayList<>();
|
|
|
for(AdviceDetailsVO adviceDetailsVO : midIncidentWarningVO.getAdvice_details()){
|
|
|
@@ -640,7 +648,7 @@ public class RuleEngine {
|
|
|
setItemCodeListToItemMap(detailMapList, itemMap);
|
|
|
|
|
|
try {
|
|
|
- midRunRuleEngineCallable = new MidRunRuleEngineCallable(itemMap, medicalInsRuleInfoId, midIncidentAudit, detailMapList);
|
|
|
+ MidRunRuleEngineCallable midRunRuleEngineCallable = new MidRunRuleEngineCallable(itemMap, medicalInsRuleInfoId, midIncidentAudit, detailMapList);
|
|
|
Future future = threadPoolTaskExecutor.submit(midRunRuleEngineCallable);
|
|
|
futureList.add(future);
|
|
|
} catch (Exception e) {
|
|
|
@@ -657,12 +665,34 @@ public class RuleEngine {
|
|
|
log.error(e.getMessage(), e);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ midResult.setId(midIncidentAudit.getId());
|
|
|
+ midResult.setViolationFlag(sendFlag);
|
|
|
+ if(sendFlag){
|
|
|
+ QueryWrapper<MidIncidentAuditDetail> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.select("medical_ins_rule_info_code as medicalInsRuleInfoCode,medical_ins_rule_info_name as medicalInsRuleInfoName," +
|
|
|
+ "treatment_type as treatmentType,violation_level as violationLevel,amount,description");
|
|
|
+ queryWrapper.groupBy("medical_ins_rule_info_code");
|
|
|
+ queryWrapper.eq("mid_incident_audit_id", midIncidentAudit.getId());
|
|
|
+ List<MidIncidentAuditDetail> midIncidentAuditDetailList = midIncidentAuditDetailService.list(queryWrapper);
|
|
|
+// List<MidIncidentAuditDetail> midIncidentAuditDetailList = midIncidentAuditDetailService.lambdaQuery().eq(MidIncidentAuditDetail::getMidIncidentAuditId, midIncidentAudit.getId()).list();
|
|
|
+ List<MidRule> midRuleList = new ArrayList<>();
|
|
|
+ for(MidIncidentAuditDetail midIncidentAuditDetail : midIncidentAuditDetailList){
|
|
|
+ MidRule midRule = new MidRule();
|
|
|
+ midRule.setRuleCode(midIncidentAuditDetail.getMedicalInsRuleInfoCode());
|
|
|
+ midRule.setRuleName(midIncidentAuditDetail.getMedicalInsRuleInfoName());
|
|
|
+ midRule.setDescription(midIncidentAuditDetail.getDescription());
|
|
|
+ midRule.setAbnormalAmount(midIncidentAuditDetail.getAmount());
|
|
|
+ String validationLevelStr = validationLevelMap.get(midIncidentAuditDetail.getViolationLevel().toString());
|
|
|
+ midRule.setViolationLevel(validationLevelStr);
|
|
|
+ String treatmentTypeName = treatmentMap.get(midIncidentAuditDetail.getTreatmentType());
|
|
|
+ midRule.setTreatmentType(treatmentTypeName);
|
|
|
+ midRuleList.add(midRule);
|
|
|
+ }
|
|
|
+ midResult.setRuleCodeList(midRuleList);
|
|
|
+ }
|
|
|
|
|
|
if (!sendFlag) {
|
|
|
log.error("无违规,事中审核无需提醒 门诊/住院号:{}", midIncidentWarningVO.getVisit_no());
|
|
|
- } else {
|
|
|
-
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|