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ürfhir.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 einerBundle.type
vonhistory
abgelehnt. Die Importmethode wendet die Semantik der Bundle-Verarbeitung nicht auf Batch- oder Transaktionsbundles an. Im Gegensatz zufhir.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 inBundle.entry.resource
festgelegt bereitgestellt werden sollen, wobeiBundle.entry.request
ignoriert wird. Dies ermöglicht beispielsweise das Importieren von Searchset-Bundles, die von einem FHIR-Such- oderPatient-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 Siefhir.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 mitfhirStores.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 SiefhirStores.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 mitfhirStores.import
. Wenn die Anwendung, die den
fhirStores.import
-Vorgang verwaltet, keine gute Strategie für Folgendes hat, verwendefhir.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, 5GET
-Vorgänge und 1DELETE
-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.