Пример #1
0
        public ApiJsonResultData MedicalInsuranceXmlUpload([FromUri] MedicalInsuranceXmlUiParam param)
        {
            return(new ApiJsonResultData(ModelState, new UiInIParam()).RunWithTry(y =>
            {
                var userBase = webServiceBasicService.GetUserBaseInfo(param.UserId);

                var hospitalizationFeeList = hisSqlRepository.InpatientInfoDetailQuery(
                    new InpatientInfoDetailQueryParam()
                {
                    BusinessId = param.BusinessId
                });


                var rowXml = hospitalizationFeeList.Where(d => d.UploadMark == 0).Select(c =>
                                                                                         new HospitalizationFeeUploadRowXml()
                {
                    SerialNumber = c.DetailId
                }).ToList();


                var xmlData = new HospitalizationFeeUploadXml()
                {
                    MedicalInsuranceHospitalizationNo = "44116476",
                    RowDataList = rowXml,
                };
                var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData);
                //
                var transactionId = Guid.Parse("79D71ACA-EDBB-419C-A382-2271922E708D").ToString("N");
                var saveXmlData = new SaveXmlData();
                saveXmlData.OrganizationCode = userBase.OrganizationCode;
                saveXmlData.AuthCode = userBase.AuthCode;
                saveXmlData.BusinessId = param.BusinessId;
                saveXmlData.TransactionId = transactionId;
                saveXmlData.MedicalInsuranceBackNum = "CXJB004";
                saveXmlData.BackParam = CommonHelp.EncodeBase64("utf-8", strXmlBackParam);
                saveXmlData.IntoParam = CommonHelp.EncodeBase64("utf-8", strXmlBackParam);
                saveXmlData.MedicalInsuranceCode = "31";
                saveXmlData.UserId = userBase.UserId;
                webServiceBasic.HIS_InterfaceList("38", JsonConvert.SerializeObject(saveXmlData));
            }));
        }
        public void DeletePrescriptionUpload(BaseUiBusinessIdDataParam param)
        {
            var userBase = _webserviceBasicService.GetUserBaseInfo(param.UserId);

            userBase.TransKey = param.TransKey;
            //获取医保病人信息
            var residentDataParam = new QueryMedicalInsuranceResidentInfoParam()
            {
                BusinessId       = param.BusinessId,
                OrganizationCode = userBase.OrganizationCode,
            };
            List <QueryInpatientInfoDetailDto> queryData;
            //获取病人明细
            var queryDataDetail = _hisSqlRepository.InpatientInfoDetailQuery
                                      (new InpatientInfoDetailQueryParam()
            {
                BusinessId = param.BusinessId
            });

            //获取选择
            queryData = param.DataIdList != null?queryDataDetail.Where(c => param.DataIdList.Contains(c.Id.ToString())).ToList() : queryDataDetail;

            //获取病人医保信息
            var residentData = _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(residentDataParam);

            if (queryData.Any())
            {
                //获取已上传数据、
                var uploadDataId    = queryData.Where(c => c.UploadMark == 1).Select(d => d.Id).ToList();
                var batchNumberList = queryData.Where(c => c.UploadMark == 1).GroupBy(d => d.BatchNumber).Select(b => b.Key).ToList();
                if (batchNumberList.Any())
                {
                    var deleteParam = new DeletePrescriptionUploadParam()
                    {
                        BatchNumber = string.Join(",", batchNumberList.ToArray()),
                        MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo
                    };
                    _residentMedicalInsuranceRepository.DeletePrescriptionUpload(deleteParam, uploadDataId, userBase);
                    //取消医保上传状态
                    var updateFeeParam =
                        uploadDataId.Select(c => new UpdateHospitalizationFeeParam {
                        Id = c
                    })
                        .ToList();
                    _medicalInsuranceSqlRepository.UpdateHospitalizationFee(updateFeeParam, true, userBase);
                    //日志
                    var joinJson = JsonConvert.SerializeObject(queryData.Select(c => c.DetailId).ToList());
                    var logParam = new AddHospitalLogParam
                    {
                        User            = userBase,
                        RelationId      = Guid.Parse(param.BusinessId),
                        JoinOrOldJson   = joinJson,
                        ReturnOrNewJson = "",
                        BusinessId      = param.BusinessId,
                        Remark          = "医保取消处方明细id执行成功"
                    };
                    _systemManageRepository.AddHospitalLog(logParam);
                    // 回参构建
                    var xmlData = new HospitalizationFeeUploadCancelXml()
                    {
                        MedicalInsuranceHospitalizationNo = residentData.MedicalInsuranceHospitalizationNo,
                        RowDataList = queryData.Select(c => new HospitalizationFeeUploadRowXml()
                        {
                            SerialNumber = c.DetailId
                        }).ToList()
                    };
                    var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData);
                    var saveXml         = new SaveXmlDataParam()
                    {
                        User = userBase,
                        MedicalInsuranceBackNum = "CXJB005",
                        MedicalInsuranceCode    = "32",
                        BusinessId = param.BusinessId,
                        BackParam  = strXmlBackParam
                    };
                    //存基层
                    _webBasicRepository.SaveXmlData(saveXml);
                    //日志
                    logParam.Remark = "基层取消处方明细id执行成功";
                    _systemManageRepository.AddHospitalLog(logParam);
                }
            }
            else
            {
                throw new Exception("未获取到医保退处方数据,请核实数据的正确性!!!");
            }
        }
Пример #3
0
        /// <summary>
        /// 医保处方上传
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public RetrunPrescriptionUploadDto PrescriptionUpload(PrescriptionUploadUiParam param, UserInfoDto user)
        {
            //处方上传解决方案
            //1.判断是id上传还是单个用户上传
            //3.获取医院等级判断金额是否符合要求
            //4.数据上传
            //4.1 id上传
            //4.1.2 获取医院等级判断金额是否符合要求
            //4.1.3 数据上传
            //4.1.3.1 数据上传失败,数据回写到日志
            //4.1.3.2 数据上传成功,保存批次号,数据回写至基层
            //4.2   单个病人整体上传
            //4.2.2 获取医院等级判断金额是否符合要求
            //4.2.3 数据上传
            //4.2.3.1 数据上传失败,数据回写到日志
            var resultData = new RetrunPrescriptionUploadDto();
            List <QueryInpatientInfoDetailDto> queryData;
            var queryParam = new InpatientInfoDetailQueryParam();

            //1.判断是id上传还是单个用户上传
            if (param.DataIdList != null && param.DataIdList.Any())
            {
                queryParam.IdList     = param.DataIdList;
                queryParam.UploadMark = 0;
            }
            else
            {
                queryParam.BusinessId = param.BusinessId;
                queryParam.UploadMark = 0;
            }

            //获取病人明细
            queryData = _hisSqlRepository.InpatientInfoDetailQuery(queryParam);
            if (queryData.Any())
            {
                var queryBusinessId = (!string.IsNullOrWhiteSpace(queryParam.BusinessId))
                    ? param.BusinessId
                    : queryData.Select(c => c.BusinessId).FirstOrDefault();
                var medicalInsuranceParam = new QueryMedicalInsuranceResidentInfoParam()
                {
                    BusinessId = queryBusinessId
                };
                //获取病人医保信息
                var medicalInsurance =
                    _medicalInsuranceSqlRepository.QueryMedicalInsuranceResidentInfo(medicalInsuranceParam);
                if (medicalInsurance == null)
                {
                    if (!string.IsNullOrWhiteSpace(queryParam.BusinessId))
                    {
                        resultData.Msg += "病人未办理医保入院";
                    }
                    else
                    {
                        throw new Exception("病人未办理医保入院");
                    }
                }
                else
                {
                    var queryPairCodeParam = new QueryMedicalInsurancePairCodeParam()
                    {
                        DirectoryCodeList = queryData.Select(d => d.DirectoryCode).Distinct().ToList(),
                        OrganizationCode  = user.OrganizationCode,
                    };
                    //获取医保对码数据
                    var queryPairCode =
                        _medicalInsuranceSqlRepository.QueryMedicalInsurancePairCode(queryPairCodeParam);
                    //处方上传数据金额验证
                    var validData     = PrescriptionDataUnitPriceValidation(queryData, queryPairCode, user);
                    var validDataList = validData.Values.FirstOrDefault();
                    //错误提示信息
                    var validDataMsg = validData.Keys.FirstOrDefault();
                    if (!string.IsNullOrWhiteSpace(validDataMsg))
                    {
                        resultData.Msg += validDataMsg;
                    }

                    //获取处方上传入参
                    var paramIni = GetPrescriptionUploadParam(validDataList, queryPairCode, user,
                                                              medicalInsurance.InsuranceType);
                    //医保住院号
                    paramIni.MedicalInsuranceHospitalizationNo = medicalInsurance.MedicalInsuranceHospitalizationNo;
                    int num = paramIni.RowDataList.Count;
                    resultData.Count = num;
                    int a      = 0;
                    int limit  = 40; //限制条数
                    var count  = Convert.ToInt32(num / limit) + ((num % limit) > 0 ? 1 : 0);
                    var idList = new List <Guid>();
                    while (a < count)
                    {
                        //排除已上传数据

                        var rowDataListAll = paramIni.RowDataList.Where(d => !idList.Contains(d.Id))
                                             .OrderBy(c => c.PrescriptionSort).ToList();
                        var sendList = rowDataListAll.Take(limit).Select(s => s.Id).ToList();
                        //新的数据上传参数
                        var uploadDataParam = paramIni;
                        uploadDataParam.RowDataList = rowDataListAll.Where(c => sendList.Contains(c.Id)).ToList();
                        //数据上传
                        var uploadData = PrescriptionUploadData(uploadDataParam, param.BusinessId, user);
                        if (uploadData.ReturnState != "1")
                        {
                            resultData.Msg += uploadData.ReturnState;
                        }
                        else
                        {
                            //更新数据上传状态
                            idList.AddRange(sendList);
                            //获取总行数
                            resultData.Num += sendList.Count();
                        }

                        a++;
                    }
                }
            }


            return(resultData);
        }