public async Task <ApiJsonResultData> InpatientInfoDetailQuery([FromBody] InpatientInfoDetailQueryParam param) { return(await new ApiJsonResultData().RunWithTryAsync(async y => { var data = await _dataBaseSqlServerService.InpatientInfoDetailQuery(param); y.Data = data; })); }
/// <summary> /// 住院明细查询 /// </summary> /// <param name="param"></param> /// <returns></returns> public async Task <List <OutpatientDetailQuery> > InpatientInfoDetailQuery(InpatientInfoDetailQueryParam param) { using (var _sqlConnection = new SqlConnection(_connectionString)) { var resultData = new List <OutpatientDetailQuery>(); _sqlConnection.Open(); string strSql = @"SELECT [Id] ,[住院号] ,[费用明细ID] ,[项目名称] ,[项目编码] ,[项目类别名称] ,[项目类别编码] ,[单位] ,[剂型] ,[规格] ,[单价] ,[数量] ,[金额] ,[用量] ,[用法] ,[用药天数] ,[医院计价单位] ,[是否进口药品] ,[药品产地] ,[处方号] ,[费用单据类型] ,[开单科室名称] ,[开单科室编码] ,[开单医生姓名] ,[开单医生编码] ,[开单时间] ,[执行科室名称] ,[执行科室编码] ,[执行医生姓名] ,[执行医生编码] ,[执行时间] ,[处方医师] ,[经办人] ,[执业医师证号] ,[费用冲销ID] ,[机构编码] ,[机构名称] ,[费用时间] ,[CreateTime] ,[CreateUserId] FROM [dbo].[住院费用] where "; if (param.IdList != null && param.IdList.Any()) { var idlist = ListToStr(param.IdList); strSql += $@" 费用明细ID in('{idlist}')"; } else { strSql += $@" 住院号 ='{param.HospitalizationNumber}'"; } var data = await _sqlConnection.QueryAsync <OutpatientDetailQuery>(strSql); _sqlConnection.Close(); return(data.Count() > 0 ? data.ToList() : resultData); } }
/// <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); }