最初发布在 Oracle/Cerner 论坛,但已经一周了没有答案,我被困住了,希望这里有人能看到这个问题。它并不是 Cerner 特有的,因为 FHIR 是一个更大的医疗保健标准。
我有一个使用 C# 的系统应用程序,使用需要身份验证的 Cerner 服务器,它非常适合读取和获取数据。现在,我正在尝试向患者添加文档。我确信我做错了一些简单的事情,感谢您的帮助。
这是请求 uri:
AbsoluteUri:“https://fhir-ehr-code.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/DocumentReference”
在尝试保存文件之前,我获得了一个新的访问令牌。这些是我要求的范围:
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 示例复制了下面的 JSON,并替换了一些内容,例如使用有效的患者 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;
如有任何帮助,我们将不胜感激。
您应该登录到
Cerner 代码控制台 并转到我的应用程序。打开适用的应用程序,然后在“API 访问”部分中,验证您是否已选中所有所需的范围(或者如果有需要启用的范围,则选中复选框)。不确定向沙箱推出的更改是否会延迟,因此如果更改没有快速生效,您可能需要等待几个小时。