Importação de FHIR

Nesta página, explicamos quando escolher o método fhirStores.import para importar recursos FHIR do Cloud Storage para a API Cloud Healthcare.

Método fhirStores.import

O método fhirStores.import destina-se principalmente a carregar dados em um armazenamento FHIR vazio sem que outros aplicativos o acessem durante a importação. Ele é otimizado para carregar grandes quantidades de dados usando uma semântica de importação que ignora algumas opções de configuração do armazenamento FHIR, conforme descrito nesta seção. Para informações sobre como usar fhirStores.import, consulte Como importar e exportar recursos FHIR usando o Cloud Storage.

Ao decidir se deve usar o método fhirStores.import, considere as características a seguir. Se fhirStores.import não for adequado para seu aplicativo, use o método fhir.executeBundle para carregar dados. Para informações sobre fhir.executeBundle, consulte Como gerenciar recursos FHIR usando pacotes FHIR.

  • Cada recurso na entrada precisa ter um ID fornecido pelo cliente. Cada recurso é armazenado usando o ID fornecido, independentemente da configuração enableUpdateCreate no armazenamento FHIR.
  • O processo de importação não impõe integridade referencial, independentemente da configuração disableReferentialIntegrity no armazenamento FHIR. Não aplicar a integridade referencial permite importar recursos com interdependências arbitrárias sem considerar o agrupamento ou a ordem. Se os dados de entrada tiverem referências inválidas ou se alguns recursos não forem importados, o estado do armazenamento FHIR poderá violar a integridade referencial.
  • Se um recurso com um determinado ID já existir no armazenamento, a versão mais recente do recurso será substituída sem criar uma nova versão histórica. A substituição ocorre independentemente da configuração disableResourceVersioning no armazenamento FHIR. Se ocorrerem falhas temporárias durante a importação, um recurso importado poderá ser substituído mais de uma vez.
  • A operação de importação é idempotente, a menos que os dados de entrada tenham vários recursos válidos com o mesmo ID, mas conteúdos diferentes. Nesse caso, depois de concluir a importação, o armazenamento passa a ter exatamente um recurso com cada ID, mas as entradas duplicadas podem ter qualquer versão do conteúdo. Por exemplo, importar um milhão de recursos com o mesmo ID grava apenas um recurso no armazenamento.
  • Os contadores de resultados da operação não contam IDs duplicados como um erro. Cada recurso na entrada conta como um sucesso. Isso pode resultar em uma contagem de sucesso maior do que o número de recursos no armazenamento FHIR. Isso geralmente ocorre ao importar dados organizados em pacotes produzidos por Patient-everything, em que cada pacote tem a própria cópia de um recurso, como Practitioner, que pode ser referenciado por muitos pacientes.
  • Se alguns recursos não forem importados, como por causa de erros de análise, os recursos importados não serão revertidos. Por exemplo, se 5 dos 100 recursos não forem importados, os 95 recursos restantes serão importados para o armazenamento.
  • Ao usar o formato BUNDLE, o método de importação rejeita pacotes com Bundle.type de history. O método de importação não aplica a semântica de processamento de pacotes para pacotes em lote ou de transações. Ao contrário de fhir.executeBundle, os pacotes de transações não são executados como uma única transação, e as referências internas do pacote não são regravadas. O pacote é tratado como uma coleção de recursos a serem gravados conforme fornecido em Bundle.entry.resource, ignorando Bundle.entry.request. Por exemplo, isso permite a importação de pacotes de conjuntos de pesquisa gerados por uma pesquisa FHIR ou uma operação Patient-everything.