///// <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);
        }
        public ApiJsonResultData OutpatientSettlement([FromBody] UiBaseDataParam param)
        {
            return(new ApiJsonResultData(ModelState, new UiInIParam()).RunWithTry(y =>
            {
                var userBase = webServiceBasicService.GetUserBaseInfo(param.UserId);
                userBase.TransKey = param.TransKey;
                //回参构建88866
                var xmlData = new OutpatientDepartmentCostXml()
                {
                    AccountBalance = 10,
                    MedicalInsuranceOutpatientNo = "88866",
                    CashPayment = 0,
                    SettlementNo = "88866",
                    AllAmount = Convert.ToDecimal(0.07),
                    PatientName = "代美玲",
                    AccountAmountPay = 0,
                    MedicalInsuranceType = "342"
                };

                var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData);
                var saveXml = new SaveXmlDataParam()
                {
                    User = userBase,
                    MedicalInsuranceBackNum = "zydj",
                    MedicalInsuranceCode = "48",
                    BusinessId = param.BusinessId,
                    BackParam = strXmlBackParam
                };
                //存基层
                webServiceBasic.SaveXmlData(saveXml);
            }));
        }
Exemple #3
0
        public ApiJsonResultData Icd10BatchUpload([FromBody] UiBaseDataParam param)
        {
            return(new ApiJsonResultData(ModelState, new UiInIParam()).RunWithTry(y =>
            {
                var userBase = webServiceBasicService.GetUserBaseInfo(param.UserId);
                userBase.TransKey = param.TransKey;
                var dataList = new List <Icd10PairCodeDataParam>();

                //基层
                var queryData = hisSqlRepository.QueryAllICD10();

                if (queryData.Any())
                {
                    dataList = queryData.Select(d => new Icd10PairCodeDataParam
                    {
                        DiseaseId = d.DiseaseId,
                        ProjectCode = d.DiseaseCoding,
                        ProjectName = d.DiseaseName
                    }).ToList();
                }

                if (dataList.Any())
                {
                    int a = 0;
                    int limit = 400; //限制条数
                    int num = dataList.Count;
                    var count = Convert.ToInt32(num / limit) + ((num % limit) > 0 ? 1 : 0);
                    var idList = new List <string>();
                    while (a < count)
                    {
                        //排除已上传数据

                        var rowDataListAll = dataList.Where(d => !idList.Contains(d.DiseaseId))
                                             .ToList();
                        var sendList = rowDataListAll.Take(limit).ToList();

                        webServiceBasicService.Icd10PairCode(new Icd10PairCodeParam()
                        {
                            DataList = sendList,
                            User = userBase,
                            BusinessId = "00000000000000000000000000000000"
                        });
                        //更新数据上传状态
                        idList.AddRange(sendList.Select(d => d.DiseaseId).ToList());
                        a++;
                    }
                }
            }));
        }
        /// <summary>
        /// 门诊结算查询
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public QueryOutpatientDepartmentCostjsonDto QueryOutpatientDepartmentCost(UiBaseDataParam param)
        {
            var resultData = new QueryOutpatientDepartmentCostjsonDto();
            var userBase   = _serviceBasicService.GetUserBaseInfo(param.UserId);

            userBase.TransKey = param.TransKey;
            var outpatientSettlementNo = _serviceBasicService.GetOutpatientSettlementNo(new GetOutpatientSettlementNoParam()
            {
                BusinessId = param.BusinessId,
                User       = userBase
            });
            //获取医保病人信息
            var queryResidentParam = new QueryMedicalInsuranceResidentInfoParam()
            {
                BusinessId       = param.BusinessId,
                OrganizationCode = userBase.OrganizationCode,
                SettlementNo     = outpatientSettlementNo
            };
            var outpatient = _hisSqlRepository.QueryOutpatient(new QueryOutpatientParam()
            {
                BusinessId = param.BusinessId
            });

            if (outpatient == null)
            {
                throw new Exception("当前病人查找失败!!!");
            }
            var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(queryResidentParam);

            if (residentData == null)
            {
                throw new Exception("当前病人未结算,无结算数据!!!");
            }
            if (residentData.MedicalInsuranceState != MedicalInsuranceState.HisSettlement)
            {
                throw new Exception("当前病人无结算数据!!!");
            }

            resultData.ReimbursementExpensesAmount = residentData.ReimbursementExpensesAmount;
            resultData.SelfPayFeeAmount            = residentData.SelfPayFeeAmount;
            resultData.AllAmount = residentData.MedicalInsuranceAllAmount;
            return(resultData);
        }
        /// <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);
        }
        public ApiJsonResultData Icd10BatchUpload([FromBody] UiBaseDataParam param)
        {
            return(new ApiJsonResultData(ModelState, new UiInIParam()).RunWithTry(y =>
            {
                var userBase = webServiceBasicService.GetUserBaseInfo(param.UserId);
                userBase.TransKey = param.TransKey;
                var dataList = new List <Icd10PairCodeDataParam>();

                //基层
                var queryDataNew = _sqlSugarRepository.QueryICD10PairCode();
                var queryData = queryDataNew.Where(c => c.IsDelete == false && c.State == 0).ToList();
                if (queryData.Any())
                {
                    dataList = queryData.Select(d => new Icd10PairCodeDataParam
                    {
                        DiseaseId = d.DiseaseId,
                        ProjectName = d.ProjectName,
                        ProjectCode = d.ProjectCode
                    }).ToList();
                }

                if (dataList.Any())
                {
                    int a = 0;
                    int limit = 400; //限制条数
                    int num = dataList.Count;
                    var count = Convert.ToInt32(num / limit) + ((num % limit) > 0 ? 1 : 0);
                    var idList = new List <string>();
                    while (a < count)
                    {
                        //排除已上传数据

                        var rowDataListAll = dataList.Where(d => !idList.Contains(d.DiseaseId))
                                             .ToList();
                        var sendList = rowDataListAll.Take(limit).ToList();


                        //回参构建
                        var icd10List = new List <Icd10PairCodeDateXml>();
                        icd10List.AddRange(sendList.Select(c => new Icd10PairCodeDateXml()
                        {
                            DiseaseId = c.DiseaseId,
                            DiseaseName = c.ProjectName,
                            DiseaseCoding = c.ProjectCode
                        }));

                        var xmlData = new Icd10PairCodeXml()
                        {
                            row = icd10List
                        };
                        var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData);
                        var saveXml = new SaveXmlDataParam()
                        {
                            User = userBase,
                            MedicalInsuranceBackNum = "CXJB002",
                            MedicalInsuranceCode = "91",
                            BusinessId = param.BusinessId,
                            BackParam = strXmlBackParam
                        };
                        //存基层
                        webServiceBasic.SaveXmlData(saveXml);
                        idList.AddRange(sendList.Select(c => c.DiseaseId));
                        a++;
                    }


                    hisSqlRepository.ExecuteSql("update [dbo].[ICD10PairCode] set state=1 where  [PairCodeUserName]='医保接口对码'");
                }
            }));
        }
        //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);
        }