Esta página explica como a API Cloud Healthcare oferece suporte a referências de recursos FHIR.
Visão geral
As referências de recursos FHIR são links direcionais de um recurso de origem para um recurso de destino. É possível usar as referências de recursos FHIR para conectar os recursos. Por exemplo, o tipo de recurso FHIR Observation
tem um campo subject
do tipo Referência, que pode ser usado para vincular a um recurso Patient
como tema da observação.
As referências de recursos FHIR também podem ser circulares. Por exemplo, o tipo de recurso FHIR CarePlan
tem um campo replaces
que pode apontar para outro CarePlan
.
O elemento mais importante na estrutura de referência do FHIR é a referência.
Os outros elementos, como display
e identifier
, são mantidos como estão na API Cloud Healthcare.
Os formatos compatíveis de Reference.reference
na API Cloud Healthcare incluem:
- Referência de recursos locais
- URI que começa com
urn:uuid
ouurn:oid
- URL externo completo
- Referência de fragmentos
Referência de recursos locais
As referências de recursos são definidas como RESOURCE_TYPE/RESOURCE_ID
.
A API Cloud Healthcare também é compatível com a inserção do prefixo completo do nome do armazenamento FHIR na frente de RESOURCE_TYPE/RESOURCE_ID
. Por
exemplo,
FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID
.
Se você usar esse formato, o nome do armazenamento precisará corresponder ao armazenamento FHIR da solicitação.
Caso contrário, a solicitação será rejeitada devido a referências que não são locais.
A opção de configuração do armazenamento
FhirStore.disableReferentialIntegrity
controla a verificação de integridade referencial da validação de referência local
que é ativada por padrão. Para mais informações sobre a verificação de integridade referencial,
consulte
Integridade referencial do FHIR.
Referências com controle de versão
A API Cloud Healthcare aceita referências a uma versão específica do recurso de destino. Para vincular a uma versão específica do recurso de destino, use o formato após RESOURCE_ID/_history/VERSION_ID
] na referência local.
Quando a verificação de integridade referencial é ativada, o servidor verifica se a versão histórica existe no armazenamento FHIR. O método Resource-purge
remove versões históricas, com referência ou não.
Referências condicionais
Como alternativa para especificar explicitamente o ID do recurso de destino,
executeBundle
aceita uma consulta de pesquisa de referência condicional
para o recurso de destino que resolve para o ID do recurso de destino no
momento da solicitação. Por exemplo, Patient?identifier=abc
.
Se a consulta de pesquisa não for resolvida para um recurso de destino ou se for resolvida para mais de um recurso de destino, o servidor rejeitará a solicitação mesmo se a verificação de integridade referencial estiver ativada.
URI que começa com urn:uuid
ou urn:oid
Ao usar o
método executeBundle
com um pacote de transações, é possível usar as referências do identificador universal exclusivo (UUID, na sigla em inglês) ou do
identificador de objeto (OID, na sigla em inglês) para resolver referências para outros
recursos que estão sendo criados ou atualizados no mesmo pacote. Para mais informações, consulte o
guia Como gerenciar pacotes do FHIR.
URL externo completo
Os URLs externos completos, como http://www.example.com/abc
, são armazenados sem modificação no campo de referência. A API Cloud Healthcare não resolve o URL nem tenta verificar a validade dele.
Quando o URL externo completo corresponde ao URL completo do armazenamento FHIR da solicitação, a referência é tratada como uma referência de recurso local.
Referência do fragmento
Uma referência de fragmento aponta para um
recurso contido
em linha em um recurso. Por exemplo, se um registro "Observação" mencionar um clínico geral, mas não houver um diretório controlado desses profissionais, não será possível criar um recurso "Clínico geral" completo. O clínico geral é um recurso contido no registro "Observação". Os campos de referência de um recurso podem apontar para os recursos em linha usando a forma de #[INLINE_RESOURCE_ID]
.
No exemplo de FHIR R4 a seguir, p1
e p2
são IDs de recursos em linha referenciados como #p1
e #p2
:
{
"resourceType": "Observation",
"contained": [
{
"resourceType":"Patient",
"id": "p1",
"generalPractitioner": {"reference": "#p2"}
},
{
"resourceType":"Practitioner",
"id": "p2"
}
],
"status": "final",
"subject": {"reference": "#p1"},
"performer": [{"reference": "#p2"}]
}
O [INLINE_RESOURCE_ID]
precisa existir como um recurso contido no recurso. Caso contrário, o servidor rejeitará a solicitação. O recurso contido só pode ser referenciado pelo próprio contêiner ou por outros recursos contidos no mesmo contêiner.