ソースを参照

事后稽核引擎

0027005599 2 年 前
コミット
0e2be34f12

+ 7 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AfterwardsAudit.java

@@ -74,6 +74,10 @@ public class AfterwardsAudit implements Serializable {
 	@Excel(name = "医嘱号/处方号", width = 15)
     @ApiModelProperty(value = "医嘱号/处方号")
     private java.lang.String prescriptionNumber;
+    /**违规金额*/
+    @Excel(name = "违规金额", width = 15)
+    @ApiModelProperty(value = "违规金额")
+    private java.lang.Double amount;
 	/**反馈结果*/
 	@Excel(name = "反馈结果", width = 15)
     @ApiModelProperty(value = "反馈结果")
@@ -115,4 +119,7 @@ public class AfterwardsAudit implements Serializable {
     private Date startTime;
     @TableField(exist = false)
     private Date endTime;
+
+    @TableField(exist = false)
+    private java.lang.String interfName;
 }

+ 94 - 36
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/FactorEnchangeFactory.java

@@ -11,6 +11,9 @@ import org.jeecg.common.util.dynamic.db.DynamicDBUtil;
 import org.jeecg.modules.medical.ColumnTypeEnum;
 import org.jeecg.modules.medical.Constant;
 import org.jeecg.modules.medical.EnchanceTypeEnum;
+import org.jeecg.modules.medical.entity.AfterIncidentLog;
+import org.jeecg.modules.medical.entity.AfterwardsAudit;
+import org.jeecg.modules.medical.entity.AfterwardsAuditDetail;
 import org.jeecg.modules.medical.entity.EventAttr;
 import org.jeecg.modules.medical.entity.FactorAttrRela;
 import org.jeecg.modules.medical.entity.FactorCondRela;
@@ -21,6 +24,8 @@ import org.jeecg.modules.medical.entity.MidIncidentAuditDetail;
 import org.jeecg.modules.medical.entity.MidIncidentWarningVO;
 import org.jeecg.modules.medical.entity.RuleFactorRela;
 import org.jeecg.modules.medical.ruleengine.dict.DictUtil;
+import org.jeecg.modules.medical.service.IAfterwardsAuditDetailService;
+import org.jeecg.modules.medical.service.IAfterwardsAuditService;
 import org.jeecg.modules.medical.service.IEventAttrService;
 import org.jeecg.modules.medical.service.IFactorAttrRelaService;
 import org.jeecg.modules.medical.service.IFactorCondRelaService;
@@ -32,6 +37,7 @@ import org.springframework.jdbc.support.rowset.SqlRowSet;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -63,6 +69,10 @@ public class FactorEnchangeFactory {
     IMidIncidentAuditService midIncidentAuditService;
     @Autowired
     IMidIncidentAuditDetailService midIncidentAuditDetailService;
+    @Autowired
+    IAfterwardsAuditService afterwardsAuditService;
+    @Autowired
+    IAfterwardsAuditDetailService afterwardsAuditDetailService;
 
     public static Map<Integer, EventAttr> enchanceAttrMap = new HashMap<>();
 
@@ -112,7 +122,7 @@ public class FactorEnchangeFactory {
                     result = setLogicalExpressionResultByFactorEnchance(localMap, factorEnchance);
                     if (Constant.WARING_EVENT_ATTR_ID == factorEnchance.getEventAttrId()) {
                         if (result) {
-                            insertMidWarningDetail(localMap, medicalInsRuleInfo, audit);
+                            insertWarningDetail(localMap, medicalInsRuleInfo, audit);
                         }
                     } else {
                         localMap.put(getParamName(factorEnchance.getEventAttrId()), result);
@@ -146,45 +156,93 @@ public class FactorEnchangeFactory {
         return ioTypeMap;
     }
 
-    public void insertMidWarningDetail(Map<String, Object> itemMap, MedicalInsRuleInfo medicalInsRuleInfo, Object audit) {
+    public void insertWarningDetail(Map<String, Object> itemMap, MedicalInsRuleInfo medicalInsRuleInfo, Object audit){
         if(audit instanceof MidIncidentAudit) {
             MidIncidentAudit midIncidentAudit = (MidIncidentAudit) audit;
-            Double amount = (Double) itemMap.get(Constant.AMOUNT_KEY);
-            if(Constant.VALIDATION_HANDER_METHOD_RETURN.equals(medicalInsRuleInfo.getViolationHandingMethod())) {
-                midIncidentAuditService.lambdaUpdate().set(MidIncidentAudit::getAmount, midIncidentAudit.getAmount()).eq(MidIncidentAudit::getId, midIncidentAudit.getId()).update();
-            }else {
-                MidIncidentWarningVO midIncidentWarningVO = RuleEngine.midIncidentWarningVOThreadLocal.get();
-                MidIncidentAuditDetail midIncidentAuditDetail = new MidIncidentAuditDetail();
-                midIncidentAuditDetail.setMedicalDeptCode(midIncidentWarningVO.getMedical_dept_code());
-                midIncidentAuditDetail.setMedicalDeptName(midIncidentWarningVO.getMedical_dept_name());
-                Date date = new Date(System.currentTimeMillis());
-                midIncidentAuditDetail.setCreateTime(date);
-                midIncidentAuditDetail.setDoctorName(midIncidentWarningVO.getDoctor_name());
-                midIncidentAuditDetail.setDoctorId(midIncidentWarningVO.getDoctor_code());
-                midIncidentAuditDetail.setPatientId(midIncidentWarningVO.getPatient_id());
-                midIncidentAuditDetail.setPatientName(midIncidentWarningVO.getPatient_name());
-                midIncidentAuditDetail.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
-                midIncidentAuditDetail.setNoticeType("事中预警");
-                midIncidentAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
-                midIncidentAuditDetail.setMedicalInsRuleInfoId(medicalInsRuleInfo.getId());
-                midIncidentAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
-                midIncidentAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
-                midIncidentAuditDetail.setProejctCode(itemMap.get(Constant.PROJECT_CODE_KEY).toString());
-                midIncidentAuditDetail.setProejctName(itemMap.get(Constant.PROJECT_NAME_KEY).toString());
-                midIncidentAuditDetail.setMedicalProjectCode(itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY).toString());
-                midIncidentAuditDetail.setMedicalProjectName(itemMap.get(Constant.MEDICAL_PROJECT_NAME_KEY).toString());
-                midIncidentAuditDetail.setOutpatientNumber(midIncidentAudit.getOutpatientNumber());
-                midIncidentAuditDetail.setPrescriptionNumber(midIncidentAudit.getPrescriptionNumber());
-                midIncidentAuditDetail.setProjectType(itemMap.getOrDefault(Constant.PROJECT_TYPE_KEY, "default").toString());
-                midIncidentAuditDetail.setViolationLevel(medicalInsRuleInfo.getViolationLevel());
-                midIncidentAuditDetail.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
-                midIncidentAuditDetail.setMidIncidentAuditId(midIncidentAudit.getId());
-                midIncidentAuditDetail.setAmount(amount);
-                midIncidentAuditService.lambdaUpdate().setSql("amount +"+amount).eq(MidIncidentAudit::getId, midIncidentAudit.getId()).update();
-                midIncidentAuditDetailService.save(midIncidentAuditDetail);
-            }
+            insertMidWarningDetail(itemMap, medicalInsRuleInfo, midIncidentAudit);
+        }else{
+            AfterwardsAudit afterwardsAudit = (AfterwardsAudit) audit;
+            insertAfterWarningDetail(itemMap, medicalInsRuleInfo, afterwardsAudit);
+        }
+    }
 
+    public void insertAfterWarningDetail(Map<String, Object> itemMap, MedicalInsRuleInfo medicalInsRuleInfo, AfterwardsAudit afterwardsAudit) {
+        Double amount = (Double) itemMap.get(Constant.AMOUNT_KEY);
+        if(Constant.VALIDATION_HANDER_METHOD_RETURN.equals(medicalInsRuleInfo.getViolationHandingMethod())) {
+            afterwardsAuditService.lambdaUpdate().set(AfterwardsAudit::getAmount, afterwardsAudit.getAmount()).eq(AfterwardsAudit::getId, afterwardsAudit.getId()).update();
+        }else {
+//            MidIncidentWarningVO midIncidentWarningVO = RuleEngine.midIncidentWarningVOThreadLocal.get();
+            AfterwardsAuditDetail afterwardsAuditDetail = new AfterwardsAuditDetail();
+            afterwardsAuditDetail.setMedicalDeptCode(afterwardsAudit.getMedicalDeptCode());
+            afterwardsAuditDetail.setMedicalDeptName(afterwardsAudit.getMedicalDeptName());
+            Date date = new Date(System.currentTimeMillis());
+            afterwardsAuditDetail.setCreateTime(date);
+            afterwardsAuditDetail.setDoctorName(afterwardsAudit.getDoctorName());
+            afterwardsAuditDetail.setDoctorId(afterwardsAudit.getDoctorId());
+            afterwardsAuditDetail.setPatientId(afterwardsAudit.getPatientId());
+            afterwardsAuditDetail.setPatientName(afterwardsAudit.getPatientName());
+            afterwardsAuditDetail.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
+            afterwardsAuditDetail.setNoticeType("事后预警");
+            afterwardsAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
+            afterwardsAuditDetail.setMedicalInsRuleInfoId(medicalInsRuleInfo.getId());
+            afterwardsAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
+            afterwardsAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
+            afterwardsAuditDetail.setProejctCode(itemMap.get(Constant.PROJECT_CODE_KEY).toString());
+            afterwardsAuditDetail.setProejctName(itemMap.get(Constant.PROJECT_NAME_KEY).toString());
+            afterwardsAuditDetail.setMedicalProjectCode(itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY).toString());
+            afterwardsAuditDetail.setMedicalProjectName(itemMap.get(Constant.MEDICAL_PROJECT_NAME_KEY).toString());
+            afterwardsAuditDetail.setOutpatientNumber(afterwardsAudit.getOutpatientNumber());
+            afterwardsAuditDetail.setPrescriptionNumber(afterwardsAudit.getPrescriptionNumber());
+            afterwardsAuditDetail.setProjectType(itemMap.getOrDefault(Constant.PROJECT_TYPE_KEY, "default").toString());
+            afterwardsAuditDetail.setViolationLevel(medicalInsRuleInfo.getViolationLevel());
+            afterwardsAuditDetail.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
+            afterwardsAuditDetail.setAfterwardsAuditId(afterwardsAudit.getId());
+            afterwardsAuditDetail.setAmount(new BigDecimal(amount));
+            afterwardsAuditService.lambdaUpdate().setSql("amount +"+amount).eq(AfterwardsAudit::getId, afterwardsAudit.getId()).update();
+            afterwardsAuditDetailService.save(afterwardsAuditDetail);
         }
+
+
+    }
+
+    public void insertMidWarningDetail(Map<String, Object> itemMap, MedicalInsRuleInfo medicalInsRuleInfo, MidIncidentAudit midIncidentAudit) {
+
+        Double amount = (Double) itemMap.get(Constant.AMOUNT_KEY);
+        if(Constant.VALIDATION_HANDER_METHOD_RETURN.equals(medicalInsRuleInfo.getViolationHandingMethod())) {
+            midIncidentAuditService.lambdaUpdate().set(MidIncidentAudit::getAmount, midIncidentAudit.getAmount()).eq(MidIncidentAudit::getId, midIncidentAudit.getId()).update();
+        }else {
+            MidIncidentWarningVO midIncidentWarningVO = RuleEngine.midIncidentWarningVOThreadLocal.get();
+            MidIncidentAuditDetail midIncidentAuditDetail = new MidIncidentAuditDetail();
+            midIncidentAuditDetail.setMedicalDeptCode(midIncidentWarningVO.getMedical_dept_code());
+            midIncidentAuditDetail.setMedicalDeptName(midIncidentWarningVO.getMedical_dept_name());
+            Date date = new Date(System.currentTimeMillis());
+            midIncidentAuditDetail.setCreateTime(date);
+            midIncidentAuditDetail.setDoctorName(midIncidentWarningVO.getDoctor_name());
+            midIncidentAuditDetail.setDoctorId(midIncidentWarningVO.getDoctor_code());
+            midIncidentAuditDetail.setPatientId(midIncidentWarningVO.getPatient_id());
+            midIncidentAuditDetail.setPatientName(midIncidentWarningVO.getPatient_name());
+            midIncidentAuditDetail.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
+            midIncidentAuditDetail.setNoticeType("事中预警");
+            midIncidentAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
+            midIncidentAuditDetail.setMedicalInsRuleInfoId(medicalInsRuleInfo.getId());
+            midIncidentAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
+            midIncidentAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
+            midIncidentAuditDetail.setProejctCode(itemMap.get(Constant.PROJECT_CODE_KEY).toString());
+            midIncidentAuditDetail.setProejctName(itemMap.get(Constant.PROJECT_NAME_KEY).toString());
+            midIncidentAuditDetail.setMedicalProjectCode(itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY).toString());
+            midIncidentAuditDetail.setMedicalProjectName(itemMap.get(Constant.MEDICAL_PROJECT_NAME_KEY).toString());
+            midIncidentAuditDetail.setOutpatientNumber(midIncidentAudit.getOutpatientNumber());
+            midIncidentAuditDetail.setPrescriptionNumber(midIncidentAudit.getPrescriptionNumber());
+            midIncidentAuditDetail.setProjectType(itemMap.getOrDefault(Constant.PROJECT_TYPE_KEY, "default").toString());
+            midIncidentAuditDetail.setViolationLevel(medicalInsRuleInfo.getViolationLevel());
+            midIncidentAuditDetail.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
+            midIncidentAuditDetail.setMidIncidentAuditId(midIncidentAudit.getId());
+            midIncidentAuditDetail.setAmount(amount);
+            midIncidentAuditService.lambdaUpdate().setSql("amount +"+amount).eq(MidIncidentAudit::getId, midIncidentAudit.getId()).update();
+            midIncidentAuditDetailService.save(midIncidentAuditDetail);
+        }
+
+
     }