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("未获取到医保退处方数据,请核实数据的正确性!!!"); } }
/// <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); }