Получение ошибки при попытке использовать FhirClient для создания двоичного ресурса.
Эта строка кода терпит неудачу:
var uploadResult = await fhirClient.CreateAsync(binary);
С ошибкой:
Hl7.Fhir.Rest.FhirOperationException: 'Operation was unsuccessful because of a client error (UnsupportedMediaType).
Однако вывод двоичного.ToJson():
{
"resourceType": "Binary",
"contentType": "application/pdf",
"data": "H4sIAAAAAAAEAOy7V4vE3NYm9le....."}
Это отлично работает, если я публикую сообщения с помощью Postman.
Есть идеи, почему мой FhirClient терпит неудачу?
1 ответ
Если вы используете dotnet, возможно, fhirClient ожидает, что поле данных будет массивом байтов , и выполняет преобразование в base64 «под капотом» в методе CreateAsync . Вот рабочий пример:
using Hl7.Fhir.Model;
using Hl7.Fhir.Rest;
namespace myfhir
{
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
var client = new FhirClient("http://hapi.fhir.org/baseR4");
client.Settings.PreferredFormat = ResourceFormat.Json;
Byte[] bytes = File.ReadAllBytes("test.pdf");
Binary myBinary = new Binary();
myBinary.ContentType = "application/pdf";
myBinary.Data = bytes;
var result = await client.CreateAsync<Binary>(myBinary);
Console.WriteLine(result.Id);
}
}
}
Результат доступен по адресу http://hapi.fhir.org/baseR4/Binary/ <result.Id>.
Приложение
Мой файл *.csproj выглядит так:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Hl7.Fhir.R4" Version="5.3.0" />
</ItemGroup>
</Project>