Partilhar via


Armazenar perfis na API do Azure para FHIR

Importante

A API do Azure para FHIR será desativada em 30 de setembro de 2026. Siga as estratégias de migração para fazer a transição para o serviço FHIR® dos Serviços de Dados de Saúde do Azure até essa data. Devido à desativação da API do Azure para FHIR, novas implantações não serão permitidas a partir de 1 de abril de 2025. O serviço FHIR dos Serviços de Dados de Saúde do Azure é a versão evoluída da API do Azure para FHIR que permite aos clientes gerir serviços FHIR, DICOM e MedTech com integrações noutros serviços do Azure.

O HL7 Fast Healthcare Interoperability Resources (FHIR)® define uma forma padrão e interoperável de armazenar e trocar dados de cuidados de saúde. Mesmo dentro da especificação FHIR base, pode ser útil definir outras regras ou extensões com base no contexto em que FHIR está sendo usado. Para tais usos específicos de contexto de FHIR, os perfis FHIR são usados para a camada extra de especificações. O perfil FHIR permite restringir e personalizar definições de recursos usando restrições e extensões.

A API do Azure para FHIR permite validar recursos em relação a perfis para ver se os recursos estão em conformidade com os perfis. Este artigo orienta você pelas noções básicas de perfis FHIR e como armazená-los. Para obter mais informações sobre perfis FHIR fora deste artigo, visite HL7.org.

Perfil FHIR: o básico

Um perfil define contexto adicional no recurso que é representado como um StructureDefinition recurso. A StructureDefinition define um conjunto de regras sobre o conteúdo de um recurso ou um tipo de dados, como quais elementos um recurso tem e quais valores esses elementos podem ter.

Abaixo estão alguns exemplos de como os perfis podem modificar o recurso base:

  • Restringir cardinalidade: Por exemplo, você pode definir a cardinalidade máxima em um elemento como 0, o que significa que o elemento é excluído no contexto específico.
  • Restrinja o conteúdo de um elemento a um único valor fixo.
  • Defina as extensões necessárias para o recurso.

A StructureDefinition é identificado pelo seu URL canónico: http://hl7.org/fhir/StructureDefinition/{profile}

Por exemplo:

  • http://hl7.org/fhir/StructureDefinition/patient-birthPlace é um perfil base que requer informações sobre o endereço de nascimento registrado do paciente.
  • http://hl7.org/fhir/StructureDefinition/bmi é outro perfil base que define como representar as observações do Índice de Massa Corporal (IMC).
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance é um perfil US Core que define expectativas mínimas para AllergyIntolerance recursos associados a um paciente e identifica campos obrigatórios, como extensões e conjuntos de valores.

Quando um recurso está em conformidade com um perfil, o perfil é especificado dentro do profile elemento do recurso. Abaixo você pode ver um exemplo do início de um recurso 'Paciente', que tem http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient perfil.

{
  "resourceType" : "Patient",
  "id" : "ExamplePatient1",
  "meta" : {
    "lastUpdated" : "2020-10-30T09:48:01.8512764-04:00",
    "source" : "Organization/PayerOrganizationExample1",
    "profile" : [
      "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient"
    ]
  },

Nota

Os perfis devem ser criados sobre o recurso base e não podem entrar em conflito com o recurso base. Por exemplo, se um elemento tiver uma cardinalidade de 1..1, o perfil não poderá torná-lo opcional.

Os perfis também são especificados por vários Guias de Implementação (IGs). Alguns IGs comuns estão listados abaixo. Para mais informações, visite o site específico do IG para saber mais sobre o IG e os perfis definidos nele:

Nota

A API do Azure para FHIR não armazena nenhum perfil de guias de implementação por padrão. Você precisará carregá-los na API do Azure para FHIR.

Acesso a perfis e armazenamento de perfis

Armazenando perfis

Para armazenar perfis na API do Azure para FHIR, você pode PUT usar o StructureDefinition conteúdo do perfil no corpo da solicitação. Uma atualização ou uma atualização condicional são bons métodos para armazenar perfis no serviço FHIR. Use a atualização condicional se não tiver certeza de qual usar.

Padrão PUT: PUT http://<your Azure API for FHIR base URL>/StructureDefinition/profile-id

or

Atualização condicional: PUT http://<your Azure API for FHIR base URL>/StructureDefinition?url=http://sample-profile-url

{ 
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
	…
}

Por exemplo, se você quiser armazenar o us-core-allergyintolerance perfil, use o seguinte comando rest com o perfil de intolerância a alergia US Core no corpo. Incluímos um trecho desse perfil para o exemplo.

PUT https://myAzureAPIforFHIR.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
{
    "resourceType" : "StructureDefinition",
    "id" : "us-core-allergyintolerance",
    "text" : {
        "status" : "extensions"
    },
    "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
    "version" : "3.1.1",
    "name" : "USCoreAllergyIntolerance",
    "title" : "US  Core AllergyIntolerance Profile",
    "status" : "active",
    "experimental" : false,
    "date" : "2020-06-29",
        "publisher" : "HL7 US Realm Steering Committee",
    "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
    "description" : "Defines constraints and extensions on the AllergyIntolerance resource for the minimal set of data to query and retrieve allergy information.",

Para obter mais exemplos, consulte o arquivo REST de exemplo US Core no site de código aberto que explica o armazenamento de perfis US Core. Para obter os perfis mais atualizados, você deve obter os perfis diretamente do HL7 e do guia de implementação que os define.

Visualização de perfis

Você pode acessar seus perfis personalizados existentes usando uma GET solicitação, GET http://<your Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}, onde {canonicalUrl} é a URL canônica do seu perfil.

Por exemplo, se você quiser visualizar o perfil de recurso do US Core Goal:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal

Isso retornará o recurso para o StructureDefinition perfil US Core Goal, que começará assim:

{
  "resourceType" : "StructureDefinition",
  "id" : "us-core-goal",
  "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal",
  "version" : "3.1.1",
  "name" : "USCoreGoalProfile",
  "title" : "US Core Goal Profile",
  "status" : "active",
  "experimental" : false,
  "date" : "2020-07-21",
  "publisher" : "HL7 US Realm Steering Committee",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
  "description" : "Defines constraints and extensions on the Goal resource for the minimal set of data to query and retrieve a patient's goal(s).",

}

Nota

Você verá apenas os perfis que carregou na API do Azure para FHIR.

A API do Azure para FHIR não retorna StructureDefinition instâncias para os perfis base, mas elas podem ser encontradas no site HL7, como:

  • http://hl7.org/fhir/Observation.profile.json.html
  • http://hl7.org/fhir/Patient.profile.json.html

Perfis na declaração de capacidade

A Capability Statement lista todos os comportamentos possíveis da API do Azure para FHIR. A API do Azure para FHIR atualiza a instrução de capacidade com detalhes dos perfis armazenados nos seguintes formatos:

  • CapabilityStatement.rest.resource.profile
  • CapabilityStatement.rest.resource.supportedProfile

Por exemplo, se você salvar um perfil de paciente principal dos EUA, que começa assim:

{
  "resourceType": "StructureDefinition",
  "id": "us-core-patient",
  "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient",
  "version": "3.1.1",
  "name": "USCorePatientProfile",
  "title": "US Core Patient Profile",
  "status": "active",
  "experimental": false,
  "date": "2020-06-27",
  "publisher": "HL7 US Realm Steering Committee",

E envie um GET pedido para o seu metadata:

GET http://<your Azure API for FHIR base URL>/metadata

Você retornará com um CapabilityStatement que inclui as seguintes informações sobre o perfil do paciente principal dos EUA que você carregou na API do Azure para FHIR:

...
{
    "type": "Patient",
    "profile": "http://hl7.org/fhir/StructureDefinition/Patient",
    "supportedProfile":[
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    ],

Ligações em perfis

Um serviço de terminologia é um conjunto de funções que podem realizar operações em "terminologias" médicas, tais como validar códigos, traduzir códigos, expandir conjuntos de valores, etc. A API do Azure para o serviço FHIR não dá suporte ao serviço de terminologia. Informações para operações suportadas ($), tipos de recursos e interações podem ser encontradas no CapabilityStatement do serviço. Os tipos de recursos ValueSet, StructureDefinition e CodeSystem são suportados com operações CRUD básicas e Search (conforme definido na CapabilityStatement), além de serem aproveitados pelo sistema para uso em $validate.

ValueSets pode conter um conjunto complexo de regras e referências externas. Hoje, o serviço considerará apenas os códigos em linha pré-expandidos. Os clientes precisam carregar ValueSets suportados para o servidor FHIR antes de utilizar a operação $validate. Os recursos ValueSet devem ser carregados para o servidor FHIR, usando PUT ou atualização condicional, conforme mencionado na seção Armazenando perfis acima.

Próximos passos

Neste artigo, você aprendeu sobre os perfis FHIR. Em seguida, você aprenderá como usar $validate para garantir que os recursos estejam em conformidade com esses perfis.

FHIR® é uma marca registada da HL7 e é utilizada com a permissão da HL7.