Prechádzať zdrojové kódy

违规项目为诊断类,则把违规项目设置为诊断编码

0027005599 2 rokov pred
rodič
commit
854c4f364a

+ 4 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/SystemEventAttrConstant.java

@@ -234,5 +234,9 @@ public class SystemEventAttrConstant {
      * his的医生级别
      */
     public static final String HIS_DOCTOR_LEVEL = "doctor_level";
+    /**
+     * his的结算单总金额
+     */
+    public static final String HIS_TOTAL_AMOUNT = "total_amount";
 }
 

+ 28 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/common/CommonUtil.java

@@ -7,6 +7,7 @@ import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.util.SpringContextUtils;
 import org.jeecg.modules.medical.Constant;
 import org.jeecg.modules.medical.SystemEventAttrConstant;
+import org.jeecg.modules.medical.entity.MedicalInsRuleInfo;
 import org.jeecg.modules.medical.ruleengine.SPELUtil;
 import org.jeecg.modules.system.service.ISysDictService;
 import org.quartz.DisallowConcurrentExecution;
@@ -217,6 +218,33 @@ public class CommonUtil {
     }
 
 
+    /**
+     * 违规是诊断类规则,则需要把违规项目设置为诊断
+     * 违规金额设置为总金额
+     * @param dataMap
+     * @param medicalInsRuleInfo
+     */
+    public static void setObjectByRuleType(Map<String,Object> dataMap, MedicalInsRuleInfo medicalInsRuleInfo){
+        String seachField = medicalInsRuleInfo.getSelectedRoles();
+        String[] selectedRolesArr = seachField.split(Constant.SPLIT_STR);
+        boolean diagnoseFlag = Arrays.stream(selectedRolesArr).anyMatch(attr -> attr.equals("medicalDiagnoseCode"));
+        boolean projectCodeFlag = Arrays.stream(selectedRolesArr).anyMatch(attr -> attr.equals("projectCode"));
+        if(diagnoseFlag && !projectCodeFlag){
+            Double totalAmount = (Double) dataMap.get(SystemEventAttrConstant.HIS_TOTAL_AMOUNT);
+            Object diagnoseCode = dataMap.get("diagnoseCodeStr");
+            Object diagnoseName = dataMap.get("diagnoseNameStr");
+            Object medicalDiagnoseCodeStr = dataMap.get("medicalDiagnoseCodeStr");
+            Object medicalDiagnoseNameStr = dataMap.get("medicalDiagnoseNameStr");
+            dataMap.put(Constant.PROJECT_CODE_KEY, diagnoseCode);
+            dataMap.put(Constant.PROJECT_NAME_KEY, diagnoseName);
+            dataMap.put(Constant.MEDICAL_PROJECT_CODE_KEY, medicalDiagnoseCodeStr);
+            dataMap.put(Constant.MEDICAL_PROJECT_NAME_KEY, medicalDiagnoseNameStr);
+            dataMap.put(Constant.PROJECT_TYPE_KEY, "diagnoses");
+            dataMap.put(Constant.AMOUNT_KEY, totalAmount);
+        }
+    }
+
+
 
     public static void main(String[] args) {
 //        String day = "2023-11-09 19:10:11";

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

@@ -233,28 +233,17 @@ public class FactorEnchangeFactory {
 //
 //    }
     public void insertAfterWarningDetail(Map<String, Object> itemMap, MedicalInsRuleInfo medicalInsRuleInfo, AfterwardsAudit afterwardsAudit, List<Map<String, Object>> itemList) {
-
+        CommonUtil.setObjectByRuleType(itemMap, medicalInsRuleInfo);
         if (Constant.VALIDATION_HANDER_METHOD_RETURN.equals(medicalInsRuleInfo.getViolationHandingMethod())) {
-            afterwardsAuditService.lambdaUpdate().set(AfterwardsAudit::getAmount, afterwardsAudit.getAmount()).eq(AfterwardsAudit::getId, afterwardsAudit.getId()).update();
-            List<AfterwardsAuditDetail> afterwardsAuditDetailList = new ArrayList<>();
-            for (Map<String, Object> otherMap : itemList) {
-                AfterwardsAuditDetail afterwardsAuditDetail = getAfterDetailByMap(otherMap, afterwardsAudit, medicalInsRuleInfo);
-                afterwardsAuditDetail.setUseDay((Integer) itemMap.getOrDefault(SystemEventAttrConstant.USE_DAY, 1));
-                afterwardsAuditDetail.setPatientAge(itemMap.getOrDefault(SystemEventAttrConstant.PATIENT_AGE_KEY, "1").toString());
-                afterwardsAuditDetail.setPatientGender(itemMap.getOrDefault(SystemEventAttrConstant.PATIENT_GENDER_KEY, "3").toString());
-                afterwardsAuditDetail.setAfterIncidentDetailLogId((Integer) itemMap.get(SystemEventAttrConstant.ITEMMAP_AFTER_INCIDENT_DETAIL_LOG_ID));
-                afterwardsAuditDetail.setMedicalInsRuleInfoId((Integer) itemMap.get(SystemEventAttrConstant.MEDICAL_INS_RULE_PROJECT_ID));
-                afterwardsAuditDetailList.add(afterwardsAuditDetail);
-
-            }
-            afterwardsAuditDetailService.saveBatch(afterwardsAuditDetailList);
+            Double totalAmount = (Double) itemMap.get(SystemEventAttrConstant.HIS_TOTAL_AMOUNT);
+            afterwardsAuditService.lambdaUpdate().set(AfterwardsAudit::getAmount, totalAmount).eq(AfterwardsAudit::getId, afterwardsAudit.getId()).update();
+            AfterwardsAuditDetail afterwardsAuditDetail = getAfterDetailByMap(itemMap, afterwardsAudit, medicalInsRuleInfo);
+            afterwardsAuditDetailService.save(afterwardsAuditDetail);
         } else {
             AfterwardsAuditDetail afterwardsAuditDetail = getAfterDetailByMap(itemMap, afterwardsAudit, medicalInsRuleInfo);
             afterwardsAuditService.lambdaUpdate().setSql("amount = amount +" + afterwardsAuditDetail.getAmount().doubleValue()).eq(AfterwardsAudit::getId, afterwardsAudit.getId()).update();
             afterwardsAuditDetailService.save(afterwardsAuditDetail);
         }
-
-
     }
 
     public AfterwardsAuditDetail getAfterDetailByMap(Map<String,Object> itemMap,AfterwardsAudit afterwardsAudit, MedicalInsRuleInfo medicalInsRuleInfo){