Importación de FHIR

En esta página, se explica cuándo elegir el método fhirStores.import para importar recursos de FHIR a la API de Cloud Healthcare desde Cloud Storage.

Método fhirStores.import

El método fhirStores.import está diseñado principalmente para cargar datos en un almacén vacío de FHIR sin que otras aplicaciones accedan al almacén durante la importación. Está optimizado para cargar grandes cantidades de datos mediante una semántica de importación que ignora algunas opciones de configuración del almacén de FHIR, como se describe en esta sección. Para obtener información sobre el uso de fhirStores.import, consulta Importa y exporta recursos de FHIR mediante Cloud Storage.

Ten en cuenta las siguientes características del método fhirStores.import cuando decidas si debes usarlo. Si fhirStores.import no es adecuado para tu aplicación, considera usar el método fhir.executeBundle para cargar datos. Para obtener información sobre fhir.executeBundle, consulta Administra recursos de FHIR mediante paquetes de FHIR.

  • Cada recurso en la entrada debe contener un ID proporcionado por el cliente. Cada recurso se almacena mediante el uso del ID proporcionado, sin importar la configuración enableUpdateCreate del almacén de FHIR.
  • El proceso de importación no aplica la integridad referencial de forma forzosa, sin importar la configuración disableReferentialIntegrity en el almacén de FHIR. No aplicar la integridad referencial te permite importar recursos con interdependencias arbitrarias sin considerar el agrupamiento ni el ordenamiento. Si los datos de entrada contienen referencias que no son válidas o si falla la importación de algunos recursos, puede que el estado del almacén de FHIR infrinja la integridad referencial.
  • Si ya existe un recurso con un ID determinado en el almacén, se reemplaza la versión más reciente del recurso sin crear una versión histórica nueva. El reemplazo se produce sin importar la configuración disableResourceVersioning del almacén de FHIR. Si se producen errores transitorios durante la importación, puede que se reemplace un recurso importado correctamente más de una vez.
  • La operación de importación es idempotente, a menos que los datos de entrada contengan varios recursos válidos con el mismo ID, pero con contenidos diferentes. En ese caso, después de que se completa la importación, el almacén contiene exactamente un recurso con cada ID, pero las entradas duplicadas pueden contener cualquier versión del contenido. Por ejemplo, mediante la importación de un millón de recursos con el mismo ID, se escribe solo un recurso en el almacén.
  • Los contadores de resultados de las operaciones no cuentan los ID duplicados como un error. Cada recurso en la entrada cuenta como una operación exitosa. Esto podría dar como resultado un conteo de operaciones exitosa que sea mayor que la cantidad de recursos del almacén de FHIR. Esto ocurre a menudo cuando se importan datos organizados en paquetes producidos por Patient-everything, en los que cada paquete contiene su propia copia de un recurso, como Practitioner, al que pueden hacer referencia muchos pacientes.
  • Si algunos recursos tienen fallas de importación, por ejemplo, debido a errores de análisis, los recursos importados correctamente no se revierten. Por ejemplo, si falla la importación de 5 de 100 recursos, los 95 recursos restantes se importan al almacén.
  • Cuando usas el formato BUNDLE, el método de importación rechaza los paquetes con Bundle.type de history. El método de importación no aplica la semántica de procesamiento de paquetes en los paquetes por lotes o de transacciones. A diferencia de fhir.executeBundle, los paquetes de transacciones no se ejecutan como una sola transacción, y no se reescriben las referencias internas de paquetes. El paquete se trata como una colección de recursos que se escribirán como se proporcionan en Bundle.entry.resource, lo que significa que se ignorará Bundle.entry.request. Por ejemplo, esto permite la importación de paquetes de conjuntos de búsqueda producidos por una búsqueda de FHIR o una operación Patient-everything.