/// <summary> /// 职工住院预结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto WorkerHospitalizationPreSettlement(UiBaseDataParam param) { //获取操作人员信息 var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; var queryResidentParam = new QueryMedicalInsuranceResidentInfoParam() { BusinessId = param.BusinessId, OrganizationCode = userBase.OrganizationCode }; var infoData = new GetInpatientInfoParam() { User = userBase, BusinessId = param.BusinessId, }; //获取his预结算 var hisPreSettlementData = _serviceBasicService.GetHisHospitalizationPreSettlement(infoData); var preSettlementData = hisPreSettlementData.PreSettlementData.FirstOrDefault(); //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); //获取医院等级 var gradeData = _systemManageRepository.QueryHospitalOrganizationGrade(userBase.OrganizationCode); if (string.IsNullOrWhiteSpace(preSettlementData.EndDate)) { throw new Exception("当前病人在基层中未办理出院,不能办理医保预结算!!!"); } //获取医保账号 var userData = _systemManageRepository.QueryHospitalOperator( new QueryHospitalOperatorParam() { UserId = param.UserId }); var preSettlement = new WorkerHospitalizationPreSettlementParam() { User = userBase, Id = residentData.Id, BusinessId = param.BusinessId, MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, LeaveHospitalDate = Convert.ToDateTime(preSettlementData.EndDate).ToString("yyyyMMdd"), AdministrativeArea = gradeData.AdministrativeArea, Operators = preSettlementData.Operator, IsHospitalizationFrequency = "0", OrganizationCode = gradeData.MedicalInsuranceAccount, }; //医保结算 var resultData = _workerMedicalInsuranceRepository.WorkerHospitalizationPreSettlement(preSettlement); //报销金额 =统筹支付+补充医疗保险支付金额+专项基金支付金额+ //公务员补贴+公务员补助+其它支付金额 decimal reimbursementExpenses = resultData.BasicOverallPay + resultData.SupplementPayAmount + resultData.SpecialFundPayAmount + resultData.CivilServantsSubsidies + resultData.CivilServantsSubsidy + resultData.OtherPaymentAmount; var updateParam = new UpdateMedicalInsuranceResidentSettlementParam() { ReimbursementExpensesAmount = CommonHelp.ValueToDouble(reimbursementExpenses), SelfPayFeeAmount = resultData.CashPayment, OtherInfo = JsonConvert.SerializeObject(resultData), Id = residentData.Id, UserId = userBase.UserId, SettlementNo = resultData.DocumentNo, MedicalInsuranceAllAmount = resultData.TotalAmount, PreSettlementTransactionId = userBase.TransKey, MedicalInsuranceState = MedicalInsuranceState.MedicalInsurancePreSettlement }; //存入中间库 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateParam); var logParam = new AddHospitalLogParam() { JoinOrOldJson = JsonConvert.SerializeObject(param), ReturnOrNewJson = JsonConvert.SerializeObject(resultData), User = userBase, Remark = "职工住院病人预结算" }; _systemManageRepository.AddHospitalLog(logParam); return(resultData); }
/// <summary> /// 职工住院预结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto WorkerHospitalizationPreSettlement(WorkerHospitalizationPreSettlementParam param) { //社保住院号 var documentNo = new byte[1024]; //发生费用金额 var totalAmount = new byte[1024]; //基本统筹支付 var basicOverallPay = new byte[1024]; //补充医疗保险支付金额 var supplementPayAmount = new byte[1024]; //专项基金支付金额 var specialFundPayAmount = new byte[1024]; //公务员补贴 var civilServantsSubsidies = new byte[1024]; //公务员补助 var civilServantsSubsidy = new byte[1024]; //其它支付金额 var otherPaymentAmount = new byte[1024]; //账户支付 var accountPayment = new byte[1024]; //现金支付 var cashPayment = new byte[1024]; //起付金额 var paidAmount = new byte[1024]; // 备注 var remark = new byte[1024]; //返回状态 var resultState = new byte[1024]; //消息 var msg = new byte[1024]; WorkerMedicalInsurance.WorkerHospitalizationPreSettlement (param.OrganizationCode, param.MedicalInsuranceHospitalizationNo, param.AdministrativeArea, param.IsHospitalizationFrequency, param.Operators, param.LeaveHospitalDate, totalAmount, basicOverallPay, supplementPayAmount, specialFundPayAmount, civilServantsSubsidies, civilServantsSubsidy, otherPaymentAmount, accountPayment, cashPayment, paidAmount, documentNo, remark, resultState, msg ); if (CommonHelp.StrToTransCoding(resultState) != "1") { throw new Exception(CommonHelp.StrToTransCoding(msg)); } var resultData = new WorkerHospitalizationPreSettlementDto() { DocumentNo = CommonHelp.StrToTransCoding(documentNo), TotalAmount = Convert.ToDecimal(CommonHelp.StrToTransCoding(totalAmount)), BasicOverallPay = Convert.ToDecimal(CommonHelp.StrToTransCoding(basicOverallPay)), SupplementPayAmount = Convert.ToDecimal(CommonHelp.StrToTransCoding(supplementPayAmount)), SpecialFundPayAmount = Convert.ToDecimal(CommonHelp.StrToTransCoding(specialFundPayAmount)), CivilServantsSubsidies = Convert.ToDecimal(CommonHelp.StrToTransCoding(civilServantsSubsidies)), CivilServantsSubsidy = Convert.ToDecimal(CommonHelp.StrToTransCoding(civilServantsSubsidy)), OtherPaymentAmount = Convert.ToDecimal(CommonHelp.StrToTransCoding(otherPaymentAmount)), AccountPayment = Convert.ToDecimal(CommonHelp.StrToTransCoding(accountPayment)), CashPayment = Convert.ToDecimal(CommonHelp.StrToTransCoding(cashPayment)), PaidAmount = Convert.ToDecimal(CommonHelp.StrToTransCoding(paidAmount)), Remark = CommonHelp.StrToTransCoding(cashPayment), }; return(resultData); }