Получение ошибки при попытке использовать 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>
Другие вопросы по тегам