///// <summary> ///// 门诊计划生育结算 ///// </summary> ///// <param name="param"></param> ///// <returns></returns> //public void OutpatientPlanBirthSettlement(OutpatientPlanBirthSettlementUiParam param) //{ // var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); // userBase.TransKey = param.TransKey; // //门诊病人信息存储 // var id = Guid.NewGuid(); // var outpatientParam = new GetOutpatientPersonParam() // { // User = userBase, // UiParam = param, // IsSave = true, // 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 iniParam = GetOutpatientPlanBirthSettlementParam(param); // var dataIni = JsonConvert.DeserializeObject<WorkerBirthPreSettlementJsonDto>(param.ResultData); // var resultData = AutoMapper.Mapper.Map<WorkerHospitalizationPreSettlementDto>(dataIni); // var saveData = new MedicalInsuranceDto // { // AdmissionInfoJson = JsonConvert.SerializeObject(param), // BusinessId = param.BusinessId, // Id = Guid.NewGuid(), // IsBirthHospital = 1, // IsModify = false, // InsuranceType = 999, // MedicalInsuranceState = MedicalInsuranceState.HisHospitalized, // MedicalInsuranceHospitalizationNo = outpatientPerson.OutpatientNumber, // AfferentSign = param.AfferentSign, // IdentityMark = param.IdentityMark // }; // //存中间库 // _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData); // //日志写入 // _systemManageRepository.AddHospitalLog(new AddHospitalLogParam() // { // User = userBase, // JoinOrOldJson = JsonConvert.SerializeObject(iniParam), // ReturnOrNewJson = param.ResultData, // RelationId = outpatientParam.Id, // 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 == "342" ? "10" : 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 updateParam = new UpdateMedicalInsuranceResidentSettlementParam() // { // UserId = userBase.UserId, // SelfPayFeeAmount = resultData.CashPayment, // OtherInfo = JsonConvert.SerializeObject(resultData), // Id = saveData.Id, // SettlementNo = resultData.DocumentNo, // MedicalInsuranceAllAmount = outpatientPerson.MedicalTreatmentTotalCost, // SettlementTransactionId = userBase.TransKey, // MedicalInsuranceState = MedicalInsuranceState.HisSettlement // }; // //更新中间层 // _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateParam); // //明细存入 // _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam() // { IsSave = true, // BusinessId = param.BusinessId, // User = userBase // }); //} /// <summary> /// 门诊计划生育结算查询 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto OutpatientPlanBirthSettlementQuery( UiBaseDataParam param) {//OutpatientPlanBirthSettlementQueryParam var resultData = new WorkerHospitalizationPreSettlementDto(); //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(new QueryMedicalInsuranceResidentInfoParam() { BusinessId = param.BusinessId }); if (residentData == null) { throw new Exception("获取当前病人医保信息失败!!!"); } if (residentData.MedicalInsuranceState != MedicalInsuranceState.HisSettlement) { throw new Exception("当前病人未办理结算!!!"); } //医保登录 _residentMedicalInsuranceService.Login(new QueryHospitalOperatorParam() { UserId = param.UserId }); _outpatientDepartmentRepository.OutpatientPlanBirthSettlementQuery( new OutpatientPlanBirthSettlementQueryParam() { }); return(resultData); }
/// <summary> /// 门诊计划生育结算取消 /// </summary> /// <param name="param"></param> /// <returns></returns> public void OutpatientPlanBirthSettlementCancel(OutpatientPlanBirthSettlementCancelParam param) { WorkerHospitalizationPreSettlementDto data = null; var xmlStr = XmlHelp.SaveXml(param); if (!xmlStr) { throw new Exception("门诊计划生育结算取消保存参数出错"); } int result = MedicalInsuranceDll.CallService_cxjb("SYBX006"); if (result != 1) { throw new Exception("门诊计划生育结算取消执行出错!!!"); } var dataIni = XmlHelp.DeSerializerModel(new IniDto(), true); }
/// <summary> /// 门诊计划生育结算查询 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto OutpatientPlanBirthSettlementQuery(OutpatientPlanBirthSettlementQueryParam param) { WorkerHospitalizationPreSettlementDto data = null; var xmlStr = XmlHelp.SaveXml(param); if (!xmlStr) { throw new Exception("门诊计划生育结算查询保存参数出错"); } int result = MedicalInsuranceDll.CallService_cxjb("SYBX007"); if (result != 1) { throw new Exception("门诊计划生育结算查询执行出错!!!"); } var dataIni = XmlHelp.DeSerializerModel(new WorkerBirthPreSettlementJsonDto(), true); if (dataIni != null) { data = AutoMapper.Mapper.Map <WorkerHospitalizationPreSettlementDto>(dataIni); } return(data); }
/// <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 WorkerHospitalizationPreSettlementDto OutpatientPlanBirthPreSettlement(OutpatientPlanBirthPreSettlementUiParam param) { WorkerHospitalizationPreSettlementDto data = null; 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 iniParam = GetOutpatientPlanBirthPreSettlementParam (param); iniParam.AfferentSign = param.AfferentSign; iniParam.IdentityMark = param.IdentityMark; //医保执行 data = _outpatientDepartmentRepository.OutpatientPlanBirthPreSettlement(iniParam); //保存门诊病人 outpatientParam.IsSave = true; outpatientParam.Id = Guid.NewGuid(); _serviceBasicService.GetOutpatientPerson(outpatientParam); var saveData = new MedicalInsuranceDto { AdmissionInfoJson = JsonConvert.SerializeObject(param), BusinessId = param.BusinessId, Id = Guid.NewGuid(), IsModify = false, InsuranceType = 999, MedicalInsuranceState = MedicalInsuranceState.MedicalInsurancePreSettlement, AfferentSign = param.AfferentSign, IdentityMark = param.IdentityMark, IsBirthHospital = 1 }; //存中间库 _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData); //日志写入 _systemManageRepository.AddHospitalLog(new AddHospitalLogParam() { User = userBase, JoinOrOldJson = JsonConvert.SerializeObject(iniParam), ReturnOrNewJson = JsonConvert.SerializeObject(data), RelationId = outpatientParam.Id, BusinessId = param.BusinessId, Remark = "[R][OutpatientDepartment]门诊计划生育预结算" }); //明细存入 _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam() { IsSave = true, BusinessId = param.BusinessId, User = userBase }); return(data); }
/// <summary> /// 职工结算 /// </summary> /// <param name="paramc"></param> /// <param name="baseParam"></param> /// <returns></returns> public ApiJsonResultData WorkerHospitalizationSettlement(string paramc, HisBaseParam baseParam) { var resultValue = new ApiJsonResultData { Success = true }; try { Logs.LogWrite(new LogParam() { Params = paramc, Msg = JsonConvert.SerializeObject(baseParam) }); var loginData = MedicalInsuranceDll.ConnectAppServer_cxjb(baseParam.Account, baseParam.Pwd); var param = JsonConvert.DeserializeObject <WorkerHospitalizationSettlementParam>(paramc); //社保住院号 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]; MedicalInsuranceDll.WorkerHospitalizationSettlement (param.OrganizationCode, param.MedicalInsuranceHospitalizationNo, param.AdministrativeArea, param.IsHospitalizationFrequency, param.Operators, param.LeaveHospitalDate, param.LeaveHospitalState, param.AdmissionMainDiagnosisIcd10, param.DiagnosisIcd10Two, param.DiagnosisIcd10Three, param.LeaveHospitalMainDiagnosis, 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), }; var infoEntity = GetUserInfoEntity(baseParam); resultValue.OtherInfo = infoEntity.WorkersInsuranceBalance.ToString(); Logs.LogWriteData(new LogWriteDataParam() { JoinJson = JsonConvert.SerializeObject(param), ReturnJson = JsonConvert.SerializeObject(resultData), OperatorId = baseParam.OperatorId }); resultValue.Data = JsonConvert.SerializeObject(resultData); } catch (Exception e) { resultValue.Success = false; resultValue.Message = e.Message; } return(resultValue); }
/// <summary> /// 职工住院结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto WorkerHospitalizationSettlement(WorkerHospitalizationSettlementParam 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.WorkerHospitalizationSettlement (param.OrganizationCode, param.MedicalInsuranceHospitalizationNo, param.AdministrativeArea, param.IsHospitalizationFrequency, param.Operators, param.LeaveHospitalDate, param.LeaveHospitalState, param.AdmissionMainDiagnosisIcd10, param.DiagnosisIcd10Two, param.DiagnosisIcd10Three, param.LeaveHospitalMainDiagnosis, 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); }