/// <summary> /// 住院医保查询 /// </summary> /// <param name="param"></param> /// <returns></returns> public QueryMedicalInsuranceDetailInfoDto QueryMedicalInsuranceDetail( QueryMedicalInsuranceUiParam param) { var resultData = new QueryMedicalInsuranceDetailInfoDto(); var userBase = GetUserBaseInfo(param.UserId); var queryData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo( new QueryMedicalInsuranceResidentInfoParam() { OrganizationCode = userBase.OrganizationCode, BusinessId = param.BusinessId }); if (queryData == null) { throw new Exception("当前病人未办理医保入院!!!"); } if (string.IsNullOrWhiteSpace(queryData.AdmissionInfoJson)) { throw new Exception("当前病人没有入参参数记录!!!"); } if (queryData.InsuranceType == "310") { resultData = QueryWorkerMedicalInsuranceDetail(queryData.AdmissionInfoJson); } if (queryData.InsuranceType == "342") { resultData = QueryResidentMedicalInsuranceDetail(queryData.AdmissionInfoJson); } resultData.Id = queryData.Id; resultData.MedicalInsuranceHospitalizationNo = queryData.MedicalInsuranceHospitalizationNo; resultData.InsuranceType = queryData.InsuranceType; userBase.TransKey = param.TransKey; var infoData = new GetInpatientInfoParam() { User = userBase, BusinessId = param.BusinessId, }; //获取住院病人信息 var inpatientData = GetInpatientInfo(infoData); resultData.DiagnosisList = inpatientData.DiagnosisList; return(resultData); }
/// <summary> /// 获取his住院结算 /// </summary> /// <param name="param"></param> public PatientLeaveHospitalInfoDto GetHisHospitalizationSettlement(GetInpatientInfoParam param) { var resultData = new PatientLeaveHospitalInfoDto(); var xmlData = new MedicalInsuranceXmlDto(); xmlData.BusinessId = param.BusinessId; xmlData.HealthInsuranceNo = "41"; xmlData.TransactionId = param.User.TransKey; xmlData.AuthCode = param.User.AuthCode; xmlData.UserId = param.User.UserId; xmlData.OrganizationCode = param.User.OrganizationCode; var jsonParam = JsonConvert.SerializeObject(xmlData); var data = _webServiceBasic.HIS_Interface("39", jsonParam); HisHospitalizationSettlementJsonDto dataValue = JsonConvert.DeserializeObject <HisHospitalizationSettlementJsonDto>(data.Msg); var dataValueFirst = dataValue.LeaveHospitalInfoData.FirstOrDefault(); //实体转换 if (dataValueFirst != null) { resultData.LeaveHospitalBedNumber = dataValueFirst.LeaveHospitalBedNumber; resultData.LeaveHospitalDate = dataValueFirst.LeaveHospitalDate; resultData.LeaveHospitalDepartmentId = dataValueFirst.LeaveHospitalDepartmentId; resultData.LeaveHospitalDepartmentName = dataValueFirst.LeaveHospitalDepartmentName; resultData.LeaveHospitalDiagnosticDoctor = dataValueFirst.LeaveHospitalDiagnosticDoctor; resultData.LeaveHospitalOperator = dataValueFirst.LeaveHospitalOperator; } var diagnosisList = dataValue.DiagnosisJson.Select(c => new InpatientDiagnosisDto() { DiseaseCoding = c.DiseaseCoding, DiseaseName = c.DiagnosisName, ProjectCode = c.DiagnosisMedicalInsuranceCode, IsMainDiagnosis = c.IsMainDiagnosis == "是" ? true : false, }).ToList(); resultData.DiagnosisList = diagnosisList; return(resultData); }
/// <summary> /// 职工生育结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto WorkerBirthSettlement(WorkerBirthSettlementUiParam param) { //获取操作人员信息 var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; var infoData = new GetInpatientInfoParam() { User = userBase, BusinessId = param.BusinessId, }; //获取his结算 var hisSettlement = _serviceBasicService.GetHisHospitalizationSettlement(infoData); var queryResidentParam = new QueryMedicalInsuranceResidentInfoParam() { BusinessId = param.BusinessId, OrganizationCode = userBase.OrganizationCode }; //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); if (residentData.MedicalInsuranceState == MedicalInsuranceState.HisSettlement) { throw new Exception("当前病人已办理医保结算,不能办理预结算!!!"); } if (residentData.MedicalInsuranceState != MedicalInsuranceState.MedicalInsurancePreSettlement) { throw new Exception("当前病人未办理预结算,不能办理结算!!!"); } var inpatientInfoParam = new QueryInpatientInfoParam() { BusinessId = param.BusinessId }; //获取住院病人 var inpatientInfoData = _hisSqlRepository.QueryInpatientInfo(inpatientInfoParam); if (inpatientInfoData == null) { throw new Exception("该病人未在中心库中,请检查是否办理医保入院!!!"); } var infoParam = new WorkerBirthSettlementParam() { LeaveHospitalInpatientState = param.LeaveHospitalInpatientState, FetusNumber = param.FetusNumber, MedicalCategory = param.MedicalCategory, Operator = userBase.UserName, MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, LeaveHospitalDate = Convert.ToDateTime(hisSettlement.LeaveHospitalDate).ToString("yyyyMMdd"), }; //获取诊断 var diagnosisData = CommonHelp.GetDiagnosis(param.DiagnosisList); infoParam.AdmissionMainDiagnosisIcd10 = diagnosisData.AdmissionMainDiagnosisIcd10; infoParam.DiagnosisIcd10Two = diagnosisData.DiagnosisIcd10Two; infoParam.DiagnosisIcd10Three = diagnosisData.DiagnosisIcd10Three; infoParam.AdmissionMainDiagnosis = diagnosisData.DiagnosisDescribe; // 医保 var resultData = _workerMedicalInsuranceRepository.WorkerBirthSettlement(infoParam); //报销金额 =统筹支付+补充医疗保险支付金额+专项基金支付金额+ //公务员补贴+公务员补助+其它支付金额 decimal reimbursementExpenses = resultData.BasicOverallPay + resultData.SupplementPayAmount + resultData.SpecialFundPayAmount + resultData.CivilServantsSubsidies + resultData.CivilServantsSubsidy + resultData.OtherPaymentAmount; resultData.ReimbursementExpenses = reimbursementExpenses; var updateData = new UpdateMedicalInsuranceResidentSettlementParam() { UserId = userBase.UserId, ReimbursementExpensesAmount = CommonHelp.ValueToDouble(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); //添加日志 var logParam = new AddHospitalLogParam() { JoinOrOldJson = JsonConvert.SerializeObject(param), ReturnOrNewJson = JsonConvert.SerializeObject(resultData), User = userBase, Remark = "职工住院结算", RelationId = residentData.Id, }; //存入基层 var userInfoData = _residentMedicalInsuranceRepository.GetUserInfo(new ResidentUserInfoParam() { IdentityMark = residentData.IdentityMark, AfferentSign = residentData.AfferentSign, }); // 回参构建 var xmlData = new HospitalSettlementXml() { MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, CashPayment = resultData.CashPayment, SettlementNo = resultData.DocumentNo, PaidAmount = resultData.PaidAmount, AllAmount = resultData.TotalAmount, PatientName = userInfoData.PatientName, AccountBalance = userInfoData.WorkersInsuranceBalance, AccountAmountPay = resultData.AccountPayment, }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = resultData.DocumentNo, MedicalInsuranceCode = "41", 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); //结算后保存信息 var saveParam = AutoMapper.Mapper.Map <SaveInpatientSettlementParam>(hisSettlement); saveParam.Id = (Guid)inpatientInfoData.Id; saveParam.User = userBase; saveParam.LeaveHospitalDiagnosisJson = JsonConvert.SerializeObject(param.DiagnosisList); _hisSqlRepository.SaveInpatientSettlement(saveParam); return(resultData); }
/// <summary> /// 职工生育预结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public WorkerHospitalizationPreSettlementDto WorkerBirthPreSettlement(WorkerBirthPreSettlementUiParam 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 settlementData = _serviceBasicService.GetHisHospitalizationSettlement(infoData); //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); if (string.IsNullOrWhiteSpace(settlementData.LeaveHospitalDate)) { throw new Exception("当前病人在基层中未办理出院,不能办理医保预结算!!!"); } var preSettlement = new WorkerBirthPreSettlementParam() { MedicalCategory = param.MedicalCategory, FetusNumber = param.FetusNumber, MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, LeaveHospitalDate = Convert.ToDateTime(settlementData.LeaveHospitalDate).ToString("yyyyMMdd"), }; //获取诊断 var diagnosisData = CommonHelp.GetDiagnosis(param.DiagnosisList); preSettlement.AdmissionMainDiagnosisIcd10 = diagnosisData.AdmissionMainDiagnosisIcd10; preSettlement.DiagnosisIcd10Two = diagnosisData.DiagnosisIcd10Two; preSettlement.DiagnosisIcd10Three = diagnosisData.DiagnosisIcd10Three; //医保结算 var resultData = _workerMedicalInsuranceRepository.WorkerBirthPreSettlement(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 WorkerBirthHospitalizationRegisterDto WorkerBirthHospitalizationRegister(WorkerBirthHospitalizationRegisterUiParam param) { var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; var infoData = new GetInpatientInfoParam() { User = userBase, BusinessId = param.BusinessId, }; //获取病人 var inpatientData = _serviceBasicService.GetInpatientInfo(infoData); if (inpatientData == null) { throw new Exception("获取基层病人失败!!!"); } var paramIni = GetWorkerHospitalizationWorkerBirth(inpatientData, param); var data = _workerMedicalInsuranceRepository.WorkerBirthHospitalizationRegister(paramIni); if (data == null) { throw new Exception("职工生育入院登记未反馈数据!!!"); } var saveData = new MedicalInsuranceDto { AdmissionInfoJson = JsonConvert.SerializeObject(paramIni), BusinessId = param.BusinessId, Id = Guid.NewGuid(), IsModify = false, InsuranceType = 310, MedicalInsuranceState = MedicalInsuranceState.MedicalInsuranceHospitalized, MedicalInsuranceHospitalizationNo = data.MedicalInsuranceInpatientNo, IsBirthHospital = 1, IdentityMark = param.IdentityMark, AfferentSign = param.AfferentSign }; ////存中间库 _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData); //回参构建 var xmlData = new HospitalizationRegisterXml() { MedicalInsuranceType = "1", MedicalInsuranceHospitalizationNo = data.MedicalInsuranceInpatientNo, InsuranceNo = null, }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = "zydj", MedicalInsuranceCode = "21", BusinessId = param.BusinessId, BackParam = strXmlBackParam }; //存基层 _webBasicRepository.SaveXmlData(saveXml); saveData.MedicalInsuranceState = MedicalInsuranceState.HisHospitalized; //更新中间库 _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData); //保存入院数据 infoData.IsSave = true; _serviceBasicService.GetInpatientInfo(infoData); return(data); }
/// <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> /// 获取his住院预结算 /// </summary> /// <param name="param"></param> public HisHospitalizationPreSettlementJsonDto GetHisHospitalizationPreSettlement(GetInpatientInfoParam param) { var xmlData = new MedicalInsuranceXmlDto(); xmlData.BusinessId = param.BusinessId; xmlData.HealthInsuranceNo = "43"; xmlData.TransactionId = param.User.TransKey; xmlData.AuthCode = param.User.AuthCode; xmlData.UserId = param.User.UserId; xmlData.OrganizationCode = param.User.OrganizationCode; var jsonParam = JsonConvert.SerializeObject(xmlData); var data = _webServiceBasic.HIS_Interface("39", jsonParam); HisHospitalizationPreSettlementJsonDto dataValue = JsonConvert.DeserializeObject <HisHospitalizationPreSettlementJsonDto>(data.Msg); return(dataValue); }
/// <summary> /// 获取住院病人信息 /// </summary> /// <param name="infoParam"></param> /// <returns></returns> public InpatientInfoDto GetInpatientInfo(GetInpatientInfoParam param) { var resultData = new InpatientInfoDto(); var xmlData = new MedicalInsuranceXmlDto(); xmlData.BusinessId = param.BusinessId; xmlData.HealthInsuranceNo = "21"; xmlData.TransactionId = param.User.TransKey; xmlData.AuthCode = param.User.AuthCode; xmlData.UserId = param.User.UserId; xmlData.OrganizationCode = param.User.OrganizationCode; var data = _webServiceBasic.HIS_Interface("39", JsonConvert.SerializeObject(xmlData)); InpatientInfoJsonDto dataValue = JsonConvert.DeserializeObject <InpatientInfoJsonDto>(data.Msg); if (dataValue != null && dataValue.InpatientInfoJsonData != null) { var diagnosisList = dataValue.DiagnosisJson.Select(c => new InpatientDiagnosisDto() { DiseaseCoding = c.DiseaseCoding, DiseaseName = c.DiseaseName, IsMainDiagnosis = c.IsMainDiagnosis == "是" ? true : false, ProjectCode = c.ProjectCode, }).ToList(); resultData = new InpatientInfoDto() { DiagnosisList = diagnosisList, HospitalizationId = dataValue.InpatientInfoJsonData.HospitalizationId, BusinessId = param.BusinessId, DiagnosisJson = JsonConvert.SerializeObject(dataValue.DiagnosisJson), AdmissionBed = dataValue.InpatientInfoJsonData.AdmissionBed, AdmissionDate = dataValue.InpatientInfoJsonData.AdmissionDate, AdmissionDiagnosticDoctor = dataValue.InpatientInfoJsonData.AdmissionDiagnosticDoctor, AdmissionDiagnosticDoctorId = dataValue.InpatientInfoJsonData.AdmissionDiagnosticDoctorId, AdmissionMainDiagnosis = dataValue.InpatientInfoJsonData.AdmissionMainDiagnosis, AdmissionMainDiagnosisIcd10 = dataValue.InpatientInfoJsonData.AdmissionMainDiagnosisIcd10, AdmissionOperateTime = dataValue.InpatientInfoJsonData.AdmissionOperateTime, AdmissionOperator = dataValue.InpatientInfoJsonData.AdmissionOperator, AdmissionWard = dataValue.InpatientInfoJsonData.AdmissionWard, FamilyAddress = dataValue.InpatientInfoJsonData.FamilyAddress, IdCardNo = dataValue.InpatientInfoJsonData.IdCardNo, PatientName = dataValue.InpatientInfoJsonData.PatientName, PatientSex = dataValue.InpatientInfoJsonData.PatientSex, ContactName = dataValue.InpatientInfoJsonData.ContactName, ContactPhone = dataValue.InpatientInfoJsonData.ContactPhone, Remark = dataValue.InpatientInfoJsonData.Remark, HospitalName = param.User.OrganizationName, HospitalizationNo = dataValue.InpatientInfoJsonData.HospitalizationNo, TransactionId = param.User.TransKey, InDepartmentName = dataValue.InpatientInfoJsonData.InDepartmentName, InDepartmentId = dataValue.InpatientInfoJsonData.InDepartmentId, DocumentNo = dataValue.InpatientInfoJsonData.DocumentNo, }; if (param.IsSave == true) { //删除以前记录 var deleteData = _hisSqlRepository.DeleteDatabase(new DeleteDatabaseParam() { User = param.User, Field = "BusinessId", Value = param.BusinessId, TableName = "Inpatient" }); //添加病人信息 var inpatientEntity = new InpatientEntity(); var insertEntity = AutoMapper.Mapper.Map <InpatientEntity>(resultData); insertEntity.Id = Guid.NewGuid(); inpatientBaseService.Insert(insertEntity, param.User); } } return(resultData); }
/// <summary> /// 入院登记 /// </summary> /// <returns></returns> public void HospitalizationRegister(ResidentHospitalizationRegisterUiParam param) { //his登陆 var userBase = _webserviceBasicService.GetUserBaseInfo(param.UserId); userBase.TransKey = param.TransKey; var infoData = new GetInpatientInfoParam() { User = userBase, BusinessId = param.BusinessId, }; //获取医保病人 var inpatientData = _webserviceBasicService.GetInpatientInfo(infoData); var registerParam = GetResidentHospitalizationRegisterParam(param, inpatientData); var residentData = _residentMedicalInsuranceRepository.HospitalizationRegister(registerParam); var saveData = new MedicalInsuranceDto { AdmissionInfoJson = JsonConvert.SerializeObject(registerParam), BusinessId = param.BusinessId, Id = Guid.NewGuid(), InsuranceType = 342, MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceInpatientNo, MedicalInsuranceState = MedicalInsuranceState.MedicalInsuranceHospitalized, AfferentSign = param.AfferentSign, IdentityMark = param.IdentityMark }; //保存中间库 _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData); //回参构建 var xmlData = new HospitalizationRegisterXml() { MedicalInsuranceType = "10", MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceInpatientNo, InsuranceNo = null, }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = "CXJB002", MedicalInsuranceCode = "21", BusinessId = param.BusinessId, BackParam = strXmlBackParam }; //存基层 _webBasicRepository.SaveXmlData(saveXml); //更新中间库 saveData.MedicalInsuranceState = MedicalInsuranceState.HisHospitalized; _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData); //日志 var logParam = new AddHospitalLogParam { User = userBase, RelationId = saveData.Id, JoinOrOldJson = JsonConvert.SerializeObject(param), ReturnOrNewJson = JsonConvert.SerializeObject(residentData), BusinessId = param.BusinessId, Remark = "医保入院登记;TransactionId:" + userBase.TransKey }; _systemManageRepository.AddHospitalLog(logParam); //保存入院数据 infoData.IsSave = true; _webserviceBasicService.GetInpatientInfo(infoData); }
/// <summary> /// 居民住院结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public HospitalizationPresettlementDto LeaveHospitalSettlement(LeaveHospitalSettlementUiParam param) { // 获取操作人员信息 var userBase = _webserviceBasicService.GetUserBaseInfo(param.UserId); var queryResidentParam = new QueryMedicalInsuranceResidentInfoParam() { BusinessId = param.BusinessId, OrganizationCode = userBase.OrganizationCode }; userBase.TransKey = param.TransKey; var infoData = new GetInpatientInfoParam() { User = userBase, BusinessId = param.BusinessId, }; //获取his结算 var hisSettlement = _webserviceBasicService.GetHisHospitalizationSettlement(infoData); //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); if (residentData.MedicalInsuranceState != MedicalInsuranceState.MedicalInsurancePreSettlement) { throw new Exception("当前病人未办理预结算,不能办理结算!!!"); } if (residentData.MedicalInsuranceState == MedicalInsuranceState.HisSettlement) { throw new Exception("当前病人已办理医保结算,不能办理再次结算!!!"); } var inpatientInfoParam = new QueryInpatientInfoParam() { BusinessId = param.BusinessId }; //获取住院病人 var inpatientInfoData = _hisSqlRepository.QueryInpatientInfo(inpatientInfoParam); if (inpatientInfoData == null) { throw new Exception("该病人未在中心库中,请检查是否办理医保入院!!!"); } var settlementParam = new LeaveHospitalSettlementParam() { MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, LeaveHospitalDate = Convert.ToDateTime(hisSettlement.LeaveHospitalDate).ToString("yyyyMMdd"), UserId = hisSettlement.LeaveHospitalOperator, LeaveHospitalInpatientState = param.LeaveHospitalInpatientState, }; //获取诊断 var diagnosisData = CommonHelp.GetDiagnosis(param.DiagnosisList); settlementParam.LeaveHospitalMainDiagnosisIcd10 = diagnosisData.AdmissionMainDiagnosisIcd10; settlementParam.LeaveHospitalDiagnosisIcd10Two = diagnosisData.DiagnosisIcd10Two; settlementParam.LeaveHospitalDiagnosisIcd10Three = diagnosisData.DiagnosisIcd10Three; settlementParam.LeaveHospitalMainDiagnosis = diagnosisData.DiagnosisDescribe; var infoParam = new LeaveHospitalSettlementInfoParam() { User = userBase, Id = residentData.Id, InsuranceNo = residentData.InsuranceNo, BusinessId = inpatientInfoData.BusinessId, IdCardNo = inpatientInfoData.IdCardNo, }; //医保执行 var data = _residentMedicalInsuranceRepository.LeaveHospitalSettlement(settlementParam, infoParam); if (data == null) { throw new Exception("居民住院结算反馈失败"); } var updateData = new UpdateMedicalInsuranceResidentSettlementParam() { UserId = userBase.UserId, ReimbursementExpensesAmount = CommonHelp.ValueToDouble(data.ReimbursementExpenses), SelfPayFeeAmount = data.CashPayment, OtherInfo = JsonConvert.SerializeObject(data), Id = residentData.Id, SettlementNo = data.DocumentNo, MedicalInsuranceAllAmount = data.TotalAmount, SettlementTransactionId = userBase.UserId, MedicalInsuranceState = MedicalInsuranceState.MedicalInsuranceSettlement }; //存入中间层 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateData); //添加日志 var logParam = new AddHospitalLogParam() { JoinOrOldJson = JsonConvert.SerializeObject(param), ReturnOrNewJson = JsonConvert.SerializeObject(data), User = userBase, Remark = "居民住院结算", RelationId = residentData.Id, BusinessId = param.BusinessId, }; var userInfoData = _residentMedicalInsuranceRepository.GetUserInfo(new ResidentUserInfoParam() { IdentityMark = residentData.IdentityMark, AfferentSign = residentData.AfferentSign, }); // 回参构建 var xmlData = new HospitalSettlementXml() { MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, CashPayment = data.CashPayment, SettlementNo = data.DocumentNo, PaidAmount = data.PaidAmount, AllAmount = data.TotalAmount, PatientName = userInfoData.PatientName, AccountBalance = userInfoData.WorkersInsuranceBalance, AccountAmountPay = 0, }; var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData); var saveXml = new SaveXmlDataParam() { User = userBase, MedicalInsuranceBackNum = data.DocumentNo, MedicalInsuranceCode = "41", 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); //结算后保存信息 var saveParam = AutoMapper.Mapper.Map <SaveInpatientSettlementParam>(hisSettlement); saveParam.Id = (Guid)inpatientInfoData.Id; saveParam.User = userBase; saveParam.LeaveHospitalDiagnosisJson = JsonConvert.SerializeObject(param.DiagnosisList); _hisSqlRepository.SaveInpatientSettlement(saveParam); return(data); }
//public void PrescriptionUploadAll(UploadAllParam param) //{ // //更新费用 //} /// <summary> /// 居民住院预结算 /// </summary> /// <param name="param"></param> /// <returns></returns> public HospitalizationPresettlementDto HospitalizationPreSettlement(UiBaseDataParam param) { HospitalizationPresettlementDto resultData = null; //获取操作人员信息 var userBase = _webserviceBasicService.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 = _webserviceBasicService.GetHisHospitalizationPreSettlement(infoData); var preSettlementData = hisPreSettlementData.PreSettlementData.FirstOrDefault(); //获取医保病人信息 var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam); if (string.IsNullOrWhiteSpace(preSettlementData.EndDate)) { throw new Exception("当前病人在基层中未办理出院,不能办理医保预结算!!!"); } //医保执行 var data = _residentMedicalInsuranceRepository.HospitalizationPreSettlement(new HospitalizationPresettlementParam() { LeaveHospitalDate = Convert.ToDateTime(preSettlementData.EndDate).ToString("yyyyMMdd"), MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo, }); resultData = data ?? throw new Exception("居民预结算返回结果有误!!!"); //报销金额 =统筹支付+补充险支付+生育补助+民政救助+民政重大疾病救助+精准扶贫+民政优抚+其它支付 decimal reimbursementExpenses = data.BasicOverallPay + data.SupplementPayAmount + data.BirthAAllowance + data.CivilAssistancePayAmount + data.CivilAssistanceSeriousIllnessPayAmount + data.AccurateAssistancePayAmount + data.CivilServicessistancePayAmount + data.OtherPaymentAmount; resultData.ReimbursementExpenses = reimbursementExpenses; var updateParam = new UpdateMedicalInsuranceResidentSettlementParam() { ReimbursementExpensesAmount = CommonHelp.ValueToDouble(reimbursementExpenses), SelfPayFeeAmount = data.CashPayment, OtherInfo = JsonConvert.SerializeObject(data), Id = residentData.Id, UserId = param.UserId, SettlementNo = data.DocumentNo, MedicalInsuranceAllAmount = data.TotalAmount, PreSettlementTransactionId = param.TransKey, MedicalInsuranceState = MedicalInsuranceState.MedicalInsurancePreSettlement }; //存入中间库 _medicalInsuranceSqlRepository.UpdateMedicalInsuranceResidentSettlement(updateParam); var logParam = new AddHospitalLogParam() { JoinOrOldJson = JsonConvert.SerializeObject(param), ReturnOrNewJson = JsonConvert.SerializeObject(data), User = userBase, BusinessId = param.BusinessId, Remark = "居民住院病人预结算" }; _systemManageRepository.AddHospitalLog(logParam); return(resultData); }