FHIR-Importoptionen

Auf dieser Seite werden Optionen zum Speichern großer FHIR-Datenmengen in der Cloud Healthcare API beschrieben.

FHIR-Ressourcen importieren

Verwenden Sie die Methode fhirStores.import, um FHIR-Ressourcen aus Cloud Storage in die Cloud Healthcare API zu laden. Die Methode funktioniert am besten, wenn Daten ohne Störungen durch andere Anwendungen in einen leeren FHIR-Speicher geladen werden.

Informationen zum Aufrufen von fhirStores.import finden Sie unter FHIR-Ressourcen mit Cloud Storage importieren und exportieren.

Berücksichtigen Sie die folgenden Eigenschaften der fhirStores.import-Methode, wenn Sie entscheiden, ob Sie sie verwenden möchten. Wenn fhirStores.import für Ihre Anwendung nicht geeignet ist, können Sie Daten mit der fhir.executeBundle-Methode laden. Weitere Informationen zum Aufrufen von fhir.executeBundle finden Sie unter FHIR-Ressourcen mithilfe von FHIR-Bundles verwalten.

  • Die fhirStores.import-Methode akzeptiert Bundles, die größer als das Limit von 50 MB für fhir.executeBundle sind. Die Größe jeder einzelnen Ressource im Bundle ist jedoch auf 10 MB begrenzt.
  • Mit fhirStores.import werden die Komplexitäten bei der Ausführung großer FHIR-Bundles beseitigt, z. B.:

    • FHIR-Bundles in kleinere Bundles aufteilen
    • Mehrere Zeitpläne für Sets verwalten
    • Vorübergehende Fehler verwalten, die auf Ressourcen- oder Bundle-Ebene wiederholt werden können

    Oft überwiegen diese Vorteile die Vorteile von Sets.

  • Jede Ressource in der Eingabe muss eine vom Kunden bereitgestellte ID enthalten. Ressourcen werden unabhängig von der enableUpdateCreate-Einstellung des FHIR-Speichers gespeichert.

  • Der Importprozess erzwingt keine referenzielle Integrität, egal, was in der disableReferentialIntegrity-Einstellung des FHIR-Speichers angegeben ist. Wird die referenzielle Integrität nicht erzwungen, können Sie Ressourcen mit beliebigen Abhängigkeiten importieren, ohne die Gruppierung oder Sortierung zu berücksichtigen. Falls die Eingabedaten ungültige Referenzen enthalten oder einige Ressourcen nicht importiert werden, kann der Status des FHIR-Speichers die referenzielle Integrität verletzen.

  • Ist eine Ressource mit einer bestimmten ID bereits im Speicher vorhanden, so wird die neueste Version der Ressource überschrieben, ohne dass eine neue Verlaufsversion erstellt wird. Das Überschreiben erfolgt unabhängig von der disableResourceVersioning-Einstellung des FHIR-Speichers. Wenn beim Import vorübergehende Fehler auftreten, können erfolgreich importierte Ressourcen mehrmals überschrieben werden.

  • Der Importvorgang ist idempotent, es sei denn, die Eingabedaten enthalten mehrere gültige Ressourcen mit derselben ID, aber unterschiedlichen Inhalten. In diesem Fall enthält der Speicher nach Abschluss des Imports genau eine Ressource mit jeder ID, die doppelten Einträge können jedoch eine beliebige Version des Inhalts enthalten. Beispiel: Wenn Sie eine Million Ressourcen mit derselben ID importieren, wird nur eine Ressource in den Speicher geschrieben.

  • Die Vorgangsergebniszähler zählen gedoppelte IDs nicht als Fehler. Jede Ressource in der Eingabe zählt als Erfolg. Dies kann zu einer Erfolgsrate führen, die über der Anzahl der Ressourcen im FHIR-Speicher liegt. Dies geschieht häufig beim Importieren von in Patient-everything erstellten Daten, wobei jedes Bundle eine eigene Kopie einer Ressource enthält, z. B. Practitioner, auf die viele Patientenressourcen verweisen können.

  • Wenn Ressourcen nicht erfolgreich importiert werden, z. B. aufgrund von Parsing-Fehlern, werden importierte Ressourcen nicht zurückgesetzt. Beispiel: Werden fünf von 100 Ressourcen nicht importiert, so werden die verbleibenden 95 Ressourcen in den FHIR-Speicher importiert.

  • Bei Verwendung des BUNDLE-Formats werden von der Importmethode Bundles mit einer Bundle.type von history abgelehnt. Die Importmethode wendet die Semantik der Bundle-Verarbeitung nicht auf Batch- oder Transaktionsbundles an. Im Gegensatz zu fhir.executeBundle werden Transaktions-Bundles nicht als einzelne Transaktion ausgeführt. Weiter werden clusterinterne Referenzen nicht neu geschrieben. Das Bundle wird als eine Sammlung von Ressourcen behandelt, die wie in Bundle.entry.resource festgelegt bereitgestellt werden sollen, wobei Bundle.entry.request ignoriert wird. Dies ermöglicht beispielsweise das Importieren von Searchset-Bundles, die von einem FHIR-Such- oder Patient-everything-Vorgang erstellt wurden.

FHIR-Bundles verwenden

Eine Übersicht über FHIR-Bundles finden Sie unter FHIR-Bundles.

Wann sollten FHIR-Bundles verwendet werden?

Berücksichtigen Sie die folgenden Eigenschaften und Vorteile der fhir.executeBundle-Methode, wenn Sie entscheiden, ob Sie sie zum Speichern von FHIR-Ressourcen verwenden möchten:

  • Wenn es zu teuer ist, entweder in Bezug auf die Abrechnungskosten oder die Netzwerkbandbreite, eine Pipeline zu erstellen, die Daten in Cloud Storage speichert und sie dann mit fhirStores.import importiert, verwenden Sie fhir.executeBundle.
  • Bei der Ausführung von Bundles kann die Transaktionsintegrität erzwungen werden.
  • Bei der Ausführung von Bundles kann die FHIR-Profilvalidierung erzwungen werden.
  • Wenn Sie Pub/Sub-Benachrichtigungen senden müssen, wenn FHIR-Vorgänge zum Erstellen, Aktualisieren oder Löschen ausgeführt werden, verwenden Sie fhir.executeBundle. Pub/Sub-Benachrichtigungen werden nicht gesendet, wenn FHIR-Ressourcen mit fhirStores.import importiert werden.
  • Wenn die Zeit, zu der eine bestimmte FHIR-Ressource verarbeitet werden muss, in Sekunden oder Minuten angegeben ist, verwenden Sie fhir.executeBundle. Wenn die Zeit, zu der eine bestimmte FHIR-Ressource verarbeitet werden muss, in Stunden oder Tagen angegeben ist, verwenden Sie fhirStores.import.
  • Wenn in Ihrem Google Cloud-Projekt viele Vorgänge mit langer Ausführungszeit (Long-Running Operations, LROs) vorhanden sind, die andere Aufgaben ausführen, erzielen Sie mit fhir.executeBundle möglicherweise eine bessere Leistung als mit fhirStores.import.
  • Wenn die Anwendung, die den fhirStores.import-Vorgang verwaltet, keine gute Strategie für Folgendes hat, verwende fhir.executeBundle:

    • Umgang mit Bulk-Fehlern
    • Fehler bei einer Teilmenge von FHIR-Ressourcen oder bei ganzen Batches beheben

Wann FHIR-Bundles nicht verwendet werden sollten

Berücksichtigen Sie die folgenden Einschränkungen von fhir.executeBundle, wenn Sie entscheiden, ob Sie es zum Speichern von FHIR-Ressourcen verwenden möchten:

  • Für Bundles gilt für die Vorgänge innerhalb des Bundles dasselbe Kontingent und dieselbe Abrechnung wie für Vorgänge, die außerhalb des Bundles ausgeführt werden. Wenn ein Paket beispielsweise 10 POST-Vorgänge, 5 GET-Vorgänge und 1 DELETE-Vorgang enthält, sind das Kontingent und die Abrechnung für das Paket gleich, als würden diese Vorgänge unabhängig voneinander ausgeführt.

    Daher sind niedrigere Kontingentlimits und FHIR-Betriebskosten keine Gründe, Bundles anstelle von fhirStores.import zu verwenden.

  • Bei großen Transaktionspaketen ist die Wahrscheinlichkeit höher, dass es zu Transaktionskonflikten kommt, was zu Datenkonflikten und fehlgeschlagenen Vorgängen führt. Informationen dazu, wie diese Probleme auftreten können und wie sie behoben werden, finden Sie unter 429 Resource Exhausted operation_too_costly-Fehler verhindern.

  • Mit Batch-Bundles können Sie einen hohen Datendurchsatz erzielen und aufrechterhalten, um Datenkonflikte zu vermeiden. Batch-Bundles bieten jedoch keine Funktionen für transaktionale Konsistenz wie die referenzielle Integrität.

  • Wenn ein Bundle groß ist, kann der Datendurchsatz sinken, auch wenn es sich um ein Batch-Bundle handelt. Weitere Informationen finden Sie unter Große Transaktionspakete vermeiden.