Integridade referencial de FHIR

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 como ENABLED. 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étodo Resource-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.