public ApiJsonResultData OutpatientDepartmentCostInput([FromBody] OutpatientPlanBirthSettlementUiParam param) { return(new ApiJsonResultData(ModelState).RunWithTry(y => { var userBase = webServiceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; var json = "{\"发生费用金额\":0.0250,\"生育补助\":500.0,\"基本统筹支付\":0.0,\"补充医疗保险支付金额\":0.0,\"公务员补贴\":0.0,\"公务员补助\":0.0,\"其它支付金额\":0.0,\"账户支付\":0.0,\"现金支付\":0.0,\"起付金额\":0.0}"; //var iniData = JsonConvert.DeserializeObject<WorkerBirthPreSettlementJsonDto>(json); var resultData = JsonConvert.DeserializeObject <WorkerBirthSettlementDto>(json); var ccc = new GetOutpatientPersonParam() { User = userBase, UiParam = param, IdentityMark = param.IdentityMark, AfferentSign = param.AfferentSign, InsuranceType = param.InsuranceType, AccountBalance = param.AccountBalance, SettlementXml = param.SettlementJson, }; //获取门诊病人数据 var outpatientPerson = webServiceBasicService.GetOutpatientPerson(ccc); var accountPayment = resultData.AccountPayment + resultData.CivilServantsSubsidies + resultData.CivilServantsSubsidy + resultData.OtherPaymentAmount + resultData.BirthAllowance + resultData.SupplementPayAmount; var cashPayment = CommonHelp.ValueToDouble((outpatientPerson.MedicalTreatmentTotalCost - accountPayment)); // 回参构建 var xmlData = new OutpatientDepartmentCostXml() { AccountBalance = !string.IsNullOrWhiteSpace(param.AccountBalance) == true ? Convert.ToDecimal(param.AccountBalance) : 0, MedicalInsuranceOutpatientNo = "54901231", CashPayment = cashPayment < 0?0: cashPayment, SettlementNo = "54901231", AllAmount = CommonHelp.ValueToDouble(outpatientPerson.MedicalTreatmentTotalCost), PatientName = "代美玲", AccountAmountPay = 0, MedicalInsuranceType = "1", }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = "zydj", MedicalInsuranceCode = "48", BusinessId = param.BusinessId, BackParam = strXmlBackParam }; ////存基层 webServiceBasic.SaveXmlData(saveXml); })); }
/// <summary> /// 获取门诊计划生育结算参数 /// </summary> /// <returns></returns> public OutpatientPlanBirthSettlementParam GetOutpatientPlanBirthSettlementParam( OutpatientPlanBirthSettlementUiParam param ) { var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; var outpatientParam = new GetOutpatientPersonParam() { User = userBase, UiParam = param, }; var outpatientPerson = _serviceBasicService.GetOutpatientPerson(outpatientParam); if (outpatientPerson == null) { throw new Exception("his中未获取到当前病人!!!"); } var outpatientDetailPerson = _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam() { User = userBase, BusinessId = param.BusinessId, }); //获取主诊断 var diagnosisData = outpatientPerson.DiagnosisList.FirstOrDefault(c => c.IsMainDiagnosis == "是"); var inpatientDiagnosisDataDto = diagnosisData; string mainDiagnosis = null; if (inpatientDiagnosisDataDto != null) { if (!string.IsNullOrWhiteSpace(inpatientDiagnosisDataDto.ProjectCode)) { mainDiagnosis = inpatientDiagnosisDataDto.ProjectCode; } else { throw new Exception("未对码诊断:" + "[" + inpatientDiagnosisDataDto.DiseaseName + "]" + "[" + inpatientDiagnosisDataDto.DiseaseCoding + "]"); } } var resultData = new OutpatientPlanBirthSettlementParam() { OutpatientNo = outpatientPerson.OutpatientNumber, DiagnosisDate = Convert.ToDateTime(outpatientPerson.VisitDate).ToString("yyyyMMddHHmmss"), ProjectNum = outpatientDetailPerson.Count(), TotalAmount = outpatientPerson.MedicalTreatmentTotalCost, AfferentSign = param.AfferentSign, AccountPayment = string.IsNullOrWhiteSpace(param.AccountPayment) == true?0: Convert.ToDecimal(param.AccountPayment), IdentityMark = param.IdentityMark, AdmissionMainDiagnosisIcd10 = mainDiagnosis }; var rowDataList = new List <PlanBirthSettlementRow>(); //升序 var dataSort = outpatientDetailPerson.OrderBy(c => c.BillTime).ToArray(); int num = 0; foreach (var item in dataSort) { if (string.IsNullOrWhiteSpace(item.MedicalInsuranceProjectCode)) { throw new Exception("[" + item + "]名称:" + item.DirectoryName + "未对码!!!"); } if (!string.IsNullOrWhiteSpace(item.MedicalInsuranceProjectCode)) { var row = new PlanBirthSettlementRow() { ColNum = num, ProjectCode = item.MedicalInsuranceProjectCode, ProjectName = item.DirectoryName, UnitPrice = item.UnitPrice, Quantity = item.Quantity, TotalAmount = item.Amount, Formulation = item.Formulation, ManufacturerName = item.DrugProducingArea, Dosage = item.Dosage, Specification = item.Specification, Usage = item.Usage }; rowDataList.Add(row); num++; } } resultData.RowDataList = rowDataList; return(resultData); }
/// <summary> /// 门诊生育结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto OutpatientPlanBirthSettlement( OutpatientPlanBirthSettlementUiParam param) { WorkerHospitalizationPreSettlementDto resultData = null; var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; //门诊病人信息存储 var id = Guid.NewGuid(); var outpatientParam = new GetOutpatientPersonParam() { User = userBase, UiParam = param, Id = id, }; var outpatientPerson = _serviceBasicService.GetOutpatientPerson(outpatientParam); if (outpatientPerson == null) { throw new Exception("his中未获取到当前病人!!!"); } var outpatientDetailPerson = _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam() { User = userBase, BusinessId = param.BusinessId, }); var queryResidentParam = new QueryMedicalInsuranceResidentInfoParam() { BusinessId = param.BusinessId, }; //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); if (residentData.MedicalInsuranceState != MedicalInsuranceState.MedicalInsurancePreSettlement) { throw new Exception("当前病人未办理预结算,不能办理结算!!!"); } if (residentData.MedicalInsuranceState == MedicalInsuranceState.HisSettlement) { throw new Exception("当前病人已办理医保结算,不能办理再次结算!!!"); } //获取数据明细 var iniParam = GetOutpatientPlanBirthSettlementParam (param); iniParam.AfferentSign = param.AfferentSign; iniParam.IdentityMark = param.IdentityMark; iniParam.OutpatientNo = CommonHelp.GuidToStr(param.BusinessId); // 医保执行 resultData = _outpatientDepartmentRepository.OutpatientPlanBirthSettlement(iniParam); _serviceBasicService.GetOutpatientPerson(outpatientParam); var updateData = new UpdateMedicalInsuranceResidentSettlementParam() { UserId = userBase.UserId, ReimbursementExpensesAmount = CommonHelp.ValueToDouble(resultData.ReimbursementExpenses), SelfPayFeeAmount = resultData.CashPayment, OtherInfo = JsonConvert.SerializeObject(resultData), Id = residentData.Id, SettlementNo = resultData.DocumentNo, MedicalInsuranceAllAmount = resultData.TotalAmount, SettlementTransactionId = userBase.UserId, MedicalInsuranceState = MedicalInsuranceState.MedicalInsuranceSettlement }; //存入中间层 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateData); //日志写入 _systemManageRepository.AddHospitalLog(new AddHospitalLogParam() { User = userBase, JoinOrOldJson = JsonConvert.SerializeObject(iniParam), ReturnOrNewJson = JsonConvert.SerializeObject(resultData), RelationId = outpatientParam.Id, BusinessId = param.BusinessId, Remark = "[R][OutpatientDepartment]门诊生育结算" }); //获取病人的基础信息 var userInfoData = _residentMedicalInsuranceRepository.GetUserInfo(new ResidentUserInfoParam() { IdentityMark = param.IdentityMark, AfferentSign = param.AfferentSign, }); // 回参构建 var xmlData = new OutpatientDepartmentCostXml() { AccountBalance = userInfoData.InsuranceType == "342" ? userInfoData.ResidentInsuranceBalance : userInfoData.WorkersInsuranceBalance, MedicalInsuranceOutpatientNo = resultData.DocumentNo, CashPayment = resultData.CashPayment, SettlementNo = resultData.DocumentNo, AllAmount = outpatientPerson.MedicalTreatmentTotalCost, PatientName = outpatientPerson.PatientName, AccountAmountPay = resultData.AccountPayment, MedicalInsuranceType = userInfoData.InsuranceType == "310" ? "1" : userInfoData.InsuranceType, }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = "zydj", MedicalInsuranceCode = "48", BusinessId = param.BusinessId, BackParam = strXmlBackParam }; ////存基层 _webBasicRepository.SaveXmlData(saveXml); var updateParamData = new UpdateMedicalInsuranceResidentSettlementParam() { UserId = param.UserId, Id = residentData.Id, MedicalInsuranceState = MedicalInsuranceState.HisSettlement, IsHisUpdateState = true }; // 更新中间层 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateParamData); return(resultData); }
/// <summary> /// 门诊计划生育结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerBirthSettlementDto OutpatientPlanBirthSettlement( OutpatientPlanBirthSettlementUiParam param) { WorkerBirthSettlementDto resultData; var iniData = JsonConvert.DeserializeObject <WorkerBirthPreSettlementJsonDto>(param.SettlementJson); resultData = AutoMapper.Mapper.Map <WorkerBirthSettlementDto>(iniData); var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; //门诊病人信息存储 var id = Guid.NewGuid(); var outpatientParam = new GetOutpatientPersonParam() { User = userBase, UiParam = param, Id = id, }; var outpatientPerson = _serviceBasicService.GetOutpatientPerson(outpatientParam); if (outpatientPerson == null) { throw new Exception("his中未获取到当前病人!!!"); } var outpatientDetailPerson = _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam() { User = userBase, BusinessId = param.BusinessId, }); var queryResidentParam = new QueryMedicalInsuranceResidentInfoParam() { BusinessId = param.BusinessId, }; //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); if (residentData.MedicalInsuranceState != MedicalInsuranceState.MedicalInsurancePreSettlement) { throw new Exception("当前病人未办理预结算,不能办理结算!!!"); } if (residentData.MedicalInsuranceState == MedicalInsuranceState.HisSettlement) { throw new Exception("当前病人已办理医保结算,不能办理再次结算!!!"); } _serviceBasicService.GetOutpatientPerson(outpatientParam); var accountPayment = resultData.AccountPayment + resultData.CivilServantsSubsidies + resultData.CivilServantsSubsidy + resultData.OtherPaymentAmount + resultData.BirthAallowance + resultData.SupplementPayAmount; var updateData = new UpdateMedicalInsuranceResidentSettlementParam() { UserId = userBase.UserId, ReimbursementExpensesAmount = CommonHelp.ValueToDouble(accountPayment), SelfPayFeeAmount = resultData.CashPayment, OtherInfo = JsonConvert.SerializeObject(resultData), Id = residentData.Id, SettlementNo = resultData.DocumentNo, MedicalInsuranceAllAmount = resultData.TotalAmount, SettlementTransactionId = userBase.UserId, MedicalInsuranceState = MedicalInsuranceState.MedicalInsuranceSettlement }; //存入中间层 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateData); var iniParam = GetOutpatientPlanBirthSettlementParam(param); //日志写入 _systemManageRepository.AddHospitalLog(new AddHospitalLogParam() { User = userBase, JoinOrOldJson = JsonConvert.SerializeObject(iniParam), ReturnOrNewJson = JsonConvert.SerializeObject(resultData), RelationId = outpatientParam.Id, Remark = "[R][OutpatientDepartment]门诊生育结算" }); // 回参构建 var xmlData = new OutpatientDepartmentCostXml() { AccountBalance = !string.IsNullOrWhiteSpace(param.AccountBalance) == true?Convert.ToDecimal(param.AccountBalance) : 0, MedicalInsuranceOutpatientNo = resultData.DocumentNo, CashPayment = resultData.CashPayment, SettlementNo = resultData.DocumentNo, AllAmount = outpatientPerson.MedicalTreatmentTotalCost, PatientName = outpatientPerson.PatientName, AccountAmountPay = resultData.AccountPayment, MedicalInsuranceType = param.InsuranceType == "310" ? "1" : param.InsuranceType, }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = "zydj", MedicalInsuranceCode = "48", BusinessId = param.BusinessId, BackParam = strXmlBackParam }; ////存基层 _webBasicRepository.SaveXmlData(saveXml); var updateParamData = new UpdateMedicalInsuranceResidentSettlementParam() { UserId = param.UserId, Id = residentData.Id, MedicalInsuranceState = MedicalInsuranceState.HisSettlement, IsHisUpdateState = true }; // 更新中间层 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateParamData); return(resultData); }