使用C#保存FHIR DocumentReference时遇403权限范围不足错误求助
问题:FHIR DocumentReference 提交失败排查
- 基于C#开发的系统对接需认证的Cerner FHIR服务器,读取数据功能正常,但尝试为患者添加DocumentReference时失败,现寻求排查帮助。
- 此前在Oracle/Cerner论坛求助一周未获回复,问题不局限于Cerner,属于通用FHIR标准相关操作。
请求关键信息
- 请求URI:
https://fhir-ehr-code.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/DocumentReference - 已获取全新Access Token,请求权限范围:
request.AddParameter("scope", "system/Patient.read system/Patient.write system/DiagnosticReport.read system/DiagnosticReport.write system/Binary.read system/Binary.write system/Condition.read system/Encounter.read system/Encounter.write system/Location.read system/DocumentReference.read system/DocumentReference.write");
提交代码实现
代码参考Cerner R4示例编写,已替换有效患者ID、就诊ID等信息:
using HttpClient client = _httpClientFactory.CreateClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken); client.DefaultRequestHeaders.Add("Accept", "application/fhir+json"); client.DefaultRequestHeaders.Add("Prefer", "respond-async"); Uri uri = new Uri($"{_fhirSettings.FHIRServer}{_fhirSettings.ServerId}/DocumentReference"); string jsonPayload = @"{ ""resourceType"": ""DocumentReference"", ""status"": ""current"", ""docStatus"": ""final"", ""type"": { ""coding"": [ { ""system"": ""https://fhir.cerner.com/ec2458f2-1e24-41c8-b71b-0e701af7583d/codeSet/72"", ""code"": ""2820507"", ""display"": ""Admission Note Physician"", ""userSelected"": true } ], ""text"": ""Summary document"" }, ""subject"": { ""reference"": ""Patient/12742418"" }, ""content"": [ { ""attachment"": { ""contentType"": ""application/xml;charset=utf-8"", ""data"": ""PGh0bWw+Cjx0aXRsZT4gVGVzdCBEb2N1bWVudCA8L3RpdGxlPgoKRG9jdW1lbnQgY29udGVudCEKCjwvaHRtbD4="", ""title"": ""Height Weight Allergy Rule"", ""creation"": ""2024-01-29T21:02:04.000Z"" } } ], ""context"": { ""encounter"": [ { ""reference"": ""Encounter/98001628"" } ], ""period"": { ""start"": ""2023-10-20T13:45:00.000Z"", ""end"": ""2023-10-21T13:45:00.000Z"" } } }"; var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json"); HttpResponseMessage response = client.PostAsync(uri, content).Result;
内容的提问来源于stack exchange,提问作者Adrian Carr
相关产品推荐
相关产品推荐

