Esta página descreve as opções para armazenar grandes lotes de dados FHIR na API Cloud Healthcare.
Importe recursos FHIR
Use o método
fhirStores.import
para carregar recursos FHIR do Cloud Storage para a Cloud Healthcare API.
O método tem o melhor desempenho quando carrega dados para um arquivo FHIR vazio sem interferência de outras aplicações.
Para chamar fhirStores.import
, consulte o artigo
Importar e exportar recursos FHIR através do Cloud Storage.
Considere as seguintes propriedades do fhirStores.import
método quando decidir se o deve usar. Se fhirStores.import
não for adequado para a sua aplicação, pondere usar o método fhir.executeBundle
para carregar dados. Para obter informações sobre como chamar fhir.executeBundle
, consulte o artigo
Gerir recursos FHIR através de pacotes FHIR.
- O método
fhirStores.import
aceita pacotes superiores ao limite de 50 MB nofhir.executeBundle
. No entanto, o tamanho de cada recurso individual no pacote está limitado a 10 MB. A utilização da API
fhirStores.import
remove as complexidades da execução de grandes conjuntos FHIR, como as seguintes:- Dividir pacotes FHIR em pacotes mais pequenos
- Gerir vários horários de pacotes
- Gerir erros transitórios que podem ser repetidos ao nível do recurso ou do pacote
Muitas vezes, estas vantagens superam as vantagens da utilização de pacotes.
Cada recurso na entrada tem de conter um ID fornecido pelo cliente. Cada recurso é armazenado com o ID fornecido, independentemente da definição
enableUpdateCreate
na loja FHIR.O processo de importação não aplica a integridade referencial, independentemente da definição na loja FHIR.
disableReferentialIntegrity
A não aplicação da integridade referencial permite-lhe importar recursos com interdependências arbitrárias sem considerar o agrupamento nem a ordenação. Se os dados de entrada contiverem referências inválidas ou se alguns recursos não forem importados, o estado do FHIR store pode violar a integridade referencial.Se já existir um recurso com um determinado ID na loja, a versão mais recente do recurso é substituída sem criar uma nova versão do histórico. A substituição ocorre independentemente da definição
disableResourceVersioning
na loja FHIR. Se ocorrerem falhas transitórias durante a importação, um recurso importado com êxito pode ser substituído mais do que uma vez.A operação de importação é idempotente, a menos que os dados de entrada contenham vários recursos válidos com o mesmo ID, mas conteúdos diferentes. Nesse caso, após a conclusão da importação, a loja contém exatamente um recurso com cada ID, mas as entradas duplicadas podem conter qualquer versão dos conteúdos. Por exemplo, a importação de um milhão de recursos com o mesmo ID escreve apenas um recurso na loja.
Os contadores de resultados da operação não contabilizam IDs duplicados como um erro. Cada recurso na entrada conta como um êxito. Isto pode resultar numa contagem de êxitos superior ao número de recursos no arquivo FHIR. Isto ocorre frequentemente quando importa dados organizados em pacotes produzidos por
Patient-everything
, em que cada pacote contém a sua própria cópia de um recurso, comoPractitioner
, que pode ser referenciado por muitos recursos de pacientes.Se alguns recursos não forem importados, por exemplo, devido a erros de análise, os recursos importados com êxito não são revertidos. Por exemplo, se 5 de 100 recursos não forem importados, os 95 recursos restantes são importados para o FHIR store.
Quando usa o formato
BUNDLE
, o método de importação rejeita pacotes comBundle.type
dehistory
. O método de importação não aplica a semântica de processamento de pacotes para pacotes de transações ou em lote. Ao contrário do que acontece nofhir.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 reescritas. O pacote é tratado como uma coleção de recursos a serem escritos conforme fornecidos emBundle.entry.resource
, ignorandoBundle.entry.request
. Por exemplo, isto permite a importação de pacotes de conjuntos de resultados da pesquisa produzidos por uma pesquisa FHIR ou uma operaçãoPatient-everything
.
Use pacotes FHIR
Consulte os pacotes FHIR para ver uma vista geral dos pacotes FHIR.
Quando usar pacotes FHIR
Considere as seguintes caraterísticas e vantagens da utilização do método fhir.executeBundle
quando decidir se o deve utilizar para armazenar recursos FHIR:
- Se for demasiado caro, em termos de custos de faturação ou largura de banda da rede, criar um pipeline que armazene dados no Cloud Storage e, em seguida, importe os dados através do
fhirStores.import
, use ofhir.executeBundle
. - Quando executa pacotes, pode aplicar a integridade das transações.
- Quando executa pacotes, a validação do perfil FHIR pode ser aplicada.
- Se precisar de enviar notificações do Pub/Sub
quando ocorrem operações de criação, atualização ou eliminação do FHIR, use
fhir.executeBundle
. As notificações do Pub/Sub não são enviadas quando os recursos FHIR são importados usandofhirStores.import
. - Se o momento em que um recurso FHIR específico tem de ser processado for em segundos ou minutos, use
fhir.executeBundle
. Se a hora em que um recurso FHIR específico tem de ser processado for em horas ou dias, usefhirStores.import
. - Se o seu Google Cloud projeto tiver muitas operações de longa duração (LRO) existentes
a realizar outras tarefas, pode verificar um melhor desempenho
com
fhir.executeBundle
em vez defhirStores.import
. Se a aplicação que gere a operação
fhirStores.import
não tiver uma boa estratégia para o seguinte, usefhir.executeBundle
:- Processamento de erros em massa
- Resolver falhas num subconjunto de recursos FHIR ou em lotes completos
Quando não usar pacotes FHIR
Considere as seguintes limitações do fhir.executeBundle
ao determinar se o deve usar para armazenar recursos FHIR:
Os pacotes têm a quota e a faturação equivalentes aplicadas às operações no interior do pacote, como se as operações fossem executadas fora do pacote. Por exemplo, se um pacote tiver 10 operações
POST
, 5 operaçõesGET
e 1 operaçãoDELETE
, a quota e a faturação aplicadas ao pacote são as mesmas que se essas operações fossem executadas de forma independente.Como resultado, o objetivo de reduzir os limites de quota e os custos de operação da FHIR não são motivos para usar pacotes em vez de
fhirStores.import
.É mais provável que os pacotes de transações grandes tenham conflitos de transações, o que leva a contenção de dados e falhas nas operações. Para obter informações sobre como estes problemas podem ocorrer e como os resolver, consulte o artigo Evite erros
429 Resource Exhausted operation_too_costly
.Pode alcançar e manter um elevado débito de dados através de pacotes em lote, o que ajuda a evitar a contenção de dados. No entanto, os conjuntos de lotes não têm capacidades de consistência transacional, como a integridade referencial
Se um pacote for grande, mesmo que seja um pacote em lote, pode observar uma taxa de transferência de dados reduzida. Para mais informações, consulte o artigo Evite pacotes de transações grandes.