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 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 dos Serviços de Dados de Saúde do Azure para serviço FHIR é a versão evoluída da API do Azure para FHIR que permite aos clientes gerenciar os serviços FHIR, DICOM e serviço de tecnologia médica com integrações a outros serviços do Azure.
O HL7 Fast Healthcare Interoperability Resources (FHIR)® define uma maneira padrão e interoperável de armazenar e trocar dados 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 do 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 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 os perfis FHIR fora deste artigo, visite HL7.org.
Perfil FHIR: o básico
Um perfil define contexto adicional no recurso representado como um StructureDefinition
recurso. A StructureDefinition
define um conjunto de regras sobre o conteúdo de um recurso ou tipo de dados, como quais elementos um recurso tem e quais valores esses elementos podem assumir.
Alguns exemplos de como os perfis podem modificar o recurso base são:
- 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.
A StructureDefinition
é identificado por seu URL canônico: http://hl7.org/fhir/StructureDefinition/{profile}
.
Aqui estão alguns exemplos.
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
é um perfil básico que requer informações sobre o endereço registrado de nascimento do paciente.http://hl7.org/fhir/StructureDefinition/bmi
é outro perfil básico 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 paraAllergyIntolerance
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. Veja a seguir um exemplo do início de um Patient
recurso, que tem o perfil http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient.
{
"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 ser criados com base 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 são especificados por vários Guias de Implementação (IGs). Veja a seguir uma lista de IGs comuns. Para obter mais informações, visite o site específico do IG para saber mais sobre o IG e os perfis definidos nele.
Observação
Por padrão, a API do Azure para FHIR não armazena nenhum perfil de guias de implementaçã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
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 à alergia do 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 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.
Visualizando 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}
, em que {canonicalUrl}
é o URL canônico do seu perfil.
Por exemplo, use o seguinte se quiser exibir um perfil de recurso da Meta Principal dos EUA.
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
Isso retorna o recurso para o StructureDefinition
perfil da Meta Principal dos EUA, que começa da seguinte forma.
{
"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 do HL7.
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
Perfis na declaração de capacidade
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 nos seguintes formulários.
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Por exemplo, se você salvar um perfil do Paciente Principal dos EUA, que começa como o seguinte.
{
"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 GET
solicitação para o seu metadata
:
GET http://<your Azure API for FHIR base URL>/metadata
Você recebe 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"
],
Vinculaçõ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 e outras operações.
O serviço API do Azure para FHIR não dá suporte ao serviço de terminologia. Informações sobre operações com suporte ($
), tipos de recursos e interações podem ser encontradas no arquivo CapabilityStatement
. Resource Types ValueSet
e StructureDefinition
CodeSystem
são suportados com operações básicas de criação, leitura, atualização e exclusão (CRUD) e Pesquisa (conforme definido no CapabilityStatement
), além de serem aproveitados pelo sistema para uso no $validate
.
ValueSets pode conter um conjunto complexo de regras e referências externas. Hoje, o serviço considera apenas os códigos embutidos pré-expandidos. Os clientes precisam carregar ValueSets suportados para o servidor FHIR antes de utilizar a $validate
operação. Os ValueSet
recursos devem ser carregados no servidor FHIR, usando PUT ou atualização condicional, conforme mencionado na seção de armazenamento de perfis .
Próximas etapas
Neste artigo, você aprendeu sobre os perfis FHIR. Em seguida, você pode aprender como usar $validate
para garantir que os recursos estejam em conformidade com esses perfis.
Observação
FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.