Share via


Armazenar perfis na API do Azure para FHIR

O FHIR® (Fast Healthcare Interoperability Resources) da HL7 define uma maneira padrão e interoperável de armazenar e trocar dados de serviços de saúde. Mesmo dentro da especificação base do FHIR, pode ser útil definir outras regras ou extensões com base no contexto em que o FHIR está sendo usado. Para esses usos específicos de contexto do 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ê pelos conceitos básicos dos perfis FHIR e como armazená-los. Para obter mais informações sobre perfis FHIR fora deste artigo, visite HL7.org.

Perfil FHIR: as noções básicas

Um perfil define contexto adicional no recurso representado como um StructureDefinition recurso. Um 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 levar.

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 é descartado 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.

Um StructureDefinition é identificado por sua URL canônica: 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 registrado de nascimento do paciente.
  • http://hl7.org/fhir/StructureDefinition/bmi é outro perfil base que define como representar observações do Índice de Massa Corporal (IMC).
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance é um perfil do US Core que define as expectativas mínimas para AllergyIntolerance o recurso associado 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"
    ]
  },

Observação

Os perfis devem se basear no 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 IGs (Guias de Implementação). Alguns IGs comuns estão listados abaixo. Para obter mais informações, visite o site de IG específico para saber mais sobre o IG e os perfis definidos nele:

Observação

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.

Acessando perfis e armazenando perfis

Armazenando perfis

Para armazenar perfis na API do Azure para FHIR, você pode PUT usar o StructureDefinition com o conteúdo do perfil no corpo da solicitação. Uma atualização ou uma atualização condicional são métodos bons 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 comando rest a seguir com o perfil de intolerância à alergia principal dos EUA no corpo. Incluímos um snippet 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 do US Core no site de software livre que percorre o armazenamento de perfis do 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.

Exibindo perfis

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

Por exemplo, se você quiser exibir o perfil de recurso meta principal dos EUA:

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 de Meta Principal dos EUA, que será iniciado da seguinte maneira:

{
  "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).",

}

Observação

Você verá apenas os perfis carregados 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 da HL7, como:

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

Perfis na instrução capability

O 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 funcionalidade com detalhes dos perfis armazenados nas formas de:

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

Por exemplo, se você salvar um perfil de Paciente Principal dos EUA, que começa desta forma:

{
  "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 uma solicitação GET para o seu metadata:

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

Você será retornado com um CapabilityStatement que inclui as seguintes informações sobre o perfil do Paciente Principal dos EUA carregado 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"
    ],

Associações em perfis

Um serviço de terminologia é um conjunto de funções que podem executar operações em "terminologias" médicas, como validar códigos, traduzir códigos, expandir conjuntos de valores etc. O serviço da API do Azure para FHIR não dá suporte ao serviço de terminologia. Informações para operações com suporte ($), tipos de recursos e interações podem ser encontradas no CapabilityStatement do serviço. Os tipos de recursos ValueSet, StructureDefinition e CodeSystem têm suporte com operações CRUD básicas e Pesquisa (conforme definido no 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 embutidos pré-expandidos. Os clientes precisam carregar ValueSets com suporte no servidor FHIR antes de utilizar a operação de $validate. Os recursos ValueSet devem ser carregados no servidor FHIR, usando PUT ou atualização condicional, conforme mencionado na seção Armazenar Perfis acima.

Próximas etapas

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

FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.