Nesta página, explicamos o conceito de integridade referencial relacionado a recursos em um armazenamento FHIR na API Cloud Healthcare.
O armazenamento FHIR impõe integridade referencial em referências a outros recursos no mesmo armazenamento:
- Ao criar, atualizar ou corrigir um recurso, a operação falhará se o conteúdo resultante contiver uma referência a um recurso ou versão de recurso que não existe.
- Ao excluir um recurso, a operação falhará se houver outros recursos no armazenamento que fazem referência a esse recurso.
A integridade referencial pode ser desativada definindo a opção disableReferentialIntegrity
no momento da criação da loja.
Exclusões e limitações
A especificação FHIR permite várias formas de referências, algumas das quais não são cobertas pela integridade referencial:
- Uma referência externa especificada por um URL que não corresponde ao URL base do armazenamento FHIR.
- Uma referência lógica especificada por um identificador de empresa.
- Uma referência que contém apenas uma string de exibição legível.
- As referências nas extensões
FHIR só estão sujeitas à integridade referencial se
complexDataTypeReferenceParsing
for definido comoENABLED
. Esse é o valor padrão para novos armazenamentos de FHIR.
Determinados métodos de API podem fazer com que a integridade referencial seja violada em algumas condições:
- O FHIR permite que as referências apontem para uma versão de histórico específica de um recurso usando o formulário
[resource type]/[resource ID]/_history/[version ID]
. A integridade referencial é aplicada a essas referências quando criadas ou atualizadas, mas ao usar o métodoResource-purge
para remover versões históricas de um recurso, as referências recebidas não são verificadas. - O método FHIR
import
não impõe integridade referencial. O método pode ser usado nos casos em que a integridade referencial não é obrigatória ou quando a entrada é conhecida por atender à integridade referencial. No último caso, as referências dentro do armazenamento FHIR alcançarão consistência eventual depois que todos os recursos forem importados. - O método
deidentify
pode criar um armazenamento FHIR em um estado que não satisfaz a integridade referencial temporariamente durante a operação ou permanentemente se os filtros forem usados para selecionar um subconjunto de recursos.
Um estado em que a integridade está sendo aplicada, mas foi violado por um dos casos anteriores fará com que as atualizações de recursos sejam rejeitadas em um recurso que contenha uma referência inválida, a menos que a atualização corrija ou remova todas as referências inválidas. Esse estado também pode criar dificuldades para aplicativos que usam a loja que pressupõe integridade.
Recursos contidos
A especificação FHIR contém uma restrição de que cada recurso contido precisa ser referenciado de algum lugar dentro do respectivo recurso (incluindo referências de outros recursos contidos), e todas as referências a um recurso contido precisam ser válidas. Essa restrição é aplicada separadamente da integridade referencial e não pode ser desativada porque é definida nos invários FHIRPath em cada recurso individual.