Browse Source

事中住院接口

0027005599 2 years ago
parent
commit
e6511d9fa2

+ 35 - 5
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/RuleEngine.java

@@ -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) {