Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Löschen einer FHIR-Ressource
Die delete FHIR-Interaktion entfernt eine vorhandene FHIR-Ressource aus einem HealthLake Datenspeicher. Weitere Informationen finden Sie delete
Um eine FHIR-Ressource zu löschen
-
Sammle HealthLake
regionunddatastoreIdWerte. Weitere Informationen finden Sie unter Eigenschaften des Datenspeichers abrufen. -
Ermitteln Sie den FHIR-Typ, der gelöscht
Resourcewerden soll, und erfassen Sie den zugehörigenidWert. Weitere Informationen finden Sie unter Ressourcentypen. -
Erstellen Sie mithilfe der gesammelten Werte für HealthLake
regionunddatastoreIdeine URL für die Anfrage. Geben Sie auch denResourceFHIR-Typ und den zugehörigenidTyp an. Um den gesamten URL-Pfad im folgenden Beispiel anzuzeigen, scrollen Sie über die Schaltfläche Kopieren.DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id -
Senden Sie die Anforderung . Die
deleteFHIR-Interaktion verwendet eineDELETEAnfrage mit entweder AWS Signature Version 4 oder SMART bei FHIR-Autorisierung. Im folgendencurlBeispiel wird eine vorhandenePatientFHIR-Ressource aus einem HealthLake Datenspeicher entfernt. Um das gesamte Beispiel anzuzeigen, scrollen Sie über die Schaltfläche Kopieren.
Löschen von FHIR-Ressourcen auf der Grundlage von Bedingungen
Bedingtes Löschen ist besonders nützlich, wenn Sie die spezifische FHIR-Ressourcen-ID nicht kennen, aber über andere identifizierende Informationen zu der Ressource verfügen, die Sie löschen möchten.
Bedingtes Löschen ermöglicht es Ihnen, eine vorhandene Ressource anhand von Suchkriterien und nicht anhand der logischen FHIR-ID zu löschen. Wenn der Server die Löschanforderung verarbeitet, führt er mithilfe von Standardsuchfunktionen eine Suche nach dem Ressourcentyp durch, um eine einzelne logische ID für die Anforderung aufzulösen.
So funktioniert bedingtes Löschen
Die Aktion des Servers hängt davon ab, wie viele Treffer er findet:
-
Keine Treffer: Der Server versucht einen normalen Löschvorgang und reagiert entsprechend (404 Nicht gefunden für eine nicht existierende Ressource, 204 Kein Inhalt für eine bereits gelöschte Ressource)
-
Ein Treffer: Der Server führt einen normalen Löschvorgang für die passende Ressource durch
-
Mehrere Treffer: Gibt den Fehler 412 Precondition Failed zurück, der darauf hinweist, dass die Kriterien des Clients nicht selektiv genug waren
Antwortszenarien
AWS HealthLake verarbeitet bedingte Löschvorgänge mit den folgenden Antwortmustern:
Erfolgreiche Operationen
-
Wenn Ihre Suchkriterien erfolgreich eine einzelne aktive Ressource identifizieren, gibt das System nach Abschluss des Löschvorgangs 204 Kein Inhalt zurück, genau wie bei Standardlöschvorgängen.
ID-Based Bedingtes Löschen
Beim Ausführen eines bedingten Löschens auf der id Grundlage zusätzlicher Parameter (createdAt_tag, oder_lastUpdated):
-
204 Kein Inhalt: Die Ressource wurde bereits gelöscht
-
404 Nicht gefunden: Ressource existiert nicht
-
409 Konflikt: Die ID stimmt überein, aber andere Parameter stimmen nicht überein
Non-ID-Based Bedingtes Löschen
Wann id wird nicht angegeben oder wenn andere Parameter alscreatedAt,_tag, oder verwendet werden_lastUpdated:
-
404 Nicht gefunden: Keine Treffer gefunden
Konfliktsituationen
Verschiedene Szenarien führen zu 412 Antworten auf „Vorbedingung fehlgeschlagen“:
-
Mehrere Ressourcen entsprechen Ihren Suchkriterien (Kriterien sind nicht spezifisch genug)
-
Versionskonflikte bei der Verwendung von ETag-Headern mit
If-Match -
Ressourcenaktualisierungen, die zwischen Such- und Löschvorgängen erfolgen
Beispiel für ein erfolgreiches bedingtes Löschen
Im folgenden Beispiel wird eine Patientenressource anhand bestimmter Kriterien gelöscht:
DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?name=peter&birthdate=2000-01-01&phone=1234567890
Diese Anfrage löscht eine Patientenressource, in der:
Der Name ist „Peter“
Geburtsdatum ist der 1. Januar 2000
Die Telefonnummer ist 1234567890
Bewährte Methoden
-
Verwenden Sie bestimmte Suchkriterien, um mehrere Treffer zu vermeiden und 412-Fehler zu vermeiden.
-
Ziehen Sie ETag-Header für die Versionskontrolle in Betracht, wenn sie für gleichzeitige Änderungen benötigt werden.
-
Behandeln Sie Fehlerantworten angemessen:
Für 404: Verfeinern Sie Ihre Suchkriterien
Für 412: Spezifizieren Sie die Kriterien oder lösen Sie Versionskonflikte
-
Bereiten Sie sich auf Zeitkonflikte in Umgebungen mit hoher Parallelität vor, in denen Ressourcen zwischen Such- und Löschvorgängen geändert werden können.
Löschen mehrerer FHIR-Ressourcen in einer Anfrage mit _count
Standardmäßig erfordert ein bedingtes Löschen, dass Ihre Suchkriterien genau einer Ressource entsprechen. Um mehrere übereinstimmende Ressourcen in einer einzigen Anfrage zu löschen, geben Sie den _count Abfrageparameter ein. Wenn er vorhanden _count ist, wird die Anforderung als Batchvorgang HealthLake verarbeitet. Es sucht nach passenden Ressourcen, löscht sie und gibt HTTP 200 mit einem FHIR vom Typ zurückbatch-response, Bundle der einen ressourcenspezifischen Status enthält.
-
Die Suchparameter bestimmen, welche Ressourcen übereinstimmen.
_countlegt die Obergrenze fest, wie viele übereinstimmende Ressourcen in einer einzigen Anfrage gelöscht werden sollen. -
_countdarf die maximale Seitengröße Ihres Datenspeichers nicht überschreiten (Standard 100). Wenn Sie einen Wert angeben, der über diesem Limit liegt, wird HealthLake zurückgegeben400 Bad Request. Wenn mehr Ressourcen übereinstimmen, als der_countWert zulässt, verwenden Sie die Paginierung, um die verbleibenden Treffer zu löschen. Weitere Informationen finden Sie unter Suchparameter. -
Der Gesamtdurchsatz beim Löschen ist durch die Schreibkapazität Ihres Datenspeichers begrenzt. Die aktuellen Limits Ihres Kontos finden Sie unterEndpunkte und Kontingente.
Beispielanforderung
Die folgende Anfrage löscht passende markierte Coverage Ressourcen: inactive
DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Coverage?_tag=inactive&_count=50
Format der Batch-Antwort
Eine Anforderung, die HTTP 200 mit einem enthält, _count gibt HTTP zurück batch-responseBundle. Jeder Eintrag gibt das Ergebnis für eine übereinstimmende Ressource an:
-
204 Kein Inhalt: Die Ressource wurde gelöscht.
-
412 Vorbedingung fehlgeschlagen: Ein anderer Vorgang hat die Ressource zwischen der Suche und dem Löschen geändert (Versionskonflikt), sodass sie HealthLake nicht gelöscht wird. Wenn Sie die bedingte Löschung erneut senden, wird eine neue Suche ausgeführt und die Ressource wird nur entfernt, wenn sie noch Ihren Kriterien entspricht. Da die Suchergebnisse letztendlich konsistent sind, wird eine kürzlich geänderte Ressource möglicherweise nicht sofort angezeigt.
-
403 Verboten: SMART hat aufgrund der FHIR-Autorisierung das Löschen dieser Ressource verweigert.
Wie bei jeder FHIR-Suche folgt die Reihenfolge, in der Ressourcen zugeordnet und gelöscht werden, der Reihenfolge der zugrunde liegenden Suchergebnisse. Die Suche garantiert diese Reihenfolge nicht, es sei denn, Sie nehmen den _sort Parameter in Ihre Suchkriterien auf. Wenn Sie eine deterministische Reihenfolge bei paginierten Batch-Löschungen benötigen, geben Sie Folgendes an. _sort Weitere Informationen finden Sie unter Suchparameter.
In der Antwort Bundle ist die Reihenfolge der Eingaben ebenfalls nicht garantiert. Ordnen Sie jeden Eintrag seiner Ressource zu, indem Sie das location Feld in dem Eintrag verwendenresponse, anstatt sich auf die Position des Eintrags zu verlassen.
Wichtig
Bedingtes Löschen im Stapel ist nicht atomar. Einige Ressourcen in einer Anfrage können gelöscht werden, während andere in derselben Anfrage Fehler zurückgebenBundle. Überprüfen Sie immer die Statuscodes pro Eintrag in der Antwort, Bundle anstatt davon auszugehen, dass die gesamte Anfrage erfolgreich war oder fehlgeschlagen ist.
Wichtig
Wenn bei der Suche keine Ressourcen gefunden werden, gibt eine Anfrage 200 mit HTTP ein Leerzeichen batch-response Bundle (keine Einträge) _count zurück. Dies unterscheidet sich von einem bedingten Löschen ohne _count, das zurückgegeben wird, 404 Not Found wenn nichts passt.
Teilweiser Erfolg (Versionskonflikt)
Eine Ressource kann zwischen der Suche und dem Löschen geändert werden. Erfolgreich gelöschte Ressourcen kehren zurück204; widersprüchliche Ressourcen werden 412 in derselben Bundle Datei zurückgegeben.
{ "resourceType": "Bundle", "type": "batch-response", "entry": [ { "response": { "status": "204", "location": "Coverage/b807f9ff-2872-45df-9325-0b2efe42e554" } }, { "response": { "status": "412", "location": "Coverage/5287b322-d7e5-4688-bd55-022067db4d0f", "outcome": { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "diagnostics": "Resource was modified by another operation. Retry the request." } ] } } } ] }
Löschen weiterer Treffer mit Paginierung
Eine einzelne Anfrage löscht höchstens eine Seite mit Treffern. Wenn mehr passende Ressourcen übrig sind, Bundle enthält die Antwort eine link mit einer next Beziehung und einer URL. Senden Sie eine DELETE HTTP-Anfrage an diese URL, um die nächste Seite zu löschen, und wiederholen Sie den Vorgang, bis die Antwort keinen next Link mehr enthält. Dem next Link muss gefolgt werden DELETE (dieselbe Methode wie bei der ursprünglichen Anfrage), nichtGET.
{ "resourceType": "Bundle", "type": "batch-response", "link": [ { "relation": "next", "url": "https://healthlake.us-east-1.amazonaws.com/...<page_token>" } ], "entry": [ { "response": { "status": "204", "location": "Patient/4aeffdc9-6ac5-46ff-be10-bf8bd74dfecc" } } ] }
SMART zum Verhalten bei der FHIR-Autorisierung
-
Ungenügende Löschberechtigung: Wenn der Anrufer suchen kann, aber keine Löschberechtigung hat, kehrt die Anfrage trotzdem zurück
200und die betroffenen Ressourcen werden als403Einträge in der angezeigtBundle(für diese Ressourcen wird nichts gelöscht). -
Ungenügende read/search Zugriffsrechte: Wenn der Anrufer die zugrundeliegende Suche nicht ausführen kann, schlägt die gesamte Anfrage auf der Stammebene
OperationOutcomefehl, und zwar unabhängig von der Löschberechtigung.Bundle -
IAM-Autorisierung: IAM bewertet Berechtigungen auf Anforderungsebene, nicht pro Ressource. Der aufrufende Prinzipal muss sowohl für die Lösch- als auch für die Suchaktion autorisiert sein (z. B.
healthlake:DeleteResourceund für die entsprechende Suchaktion, da der Vorgang eine Suche durchführt, um Treffer zu finden). Einem nicht autorisierten Principal wird die gesamte Anfrage verweigert.
Weitere Hinweise zur Konfiguration von SMART mit FHIR-Autorisierung finden Sie unterSMART auf FHIR.
Wie gelten Servicekontingente
Für bedingtes Löschen im Batch-Modus gibt es kein eigenes Dienstkontingent. Jede Anfrage nutzt dieselben vorhandenen HealthLake Kontingente wie die von ihr ausgeführten Such- und Löschvorgänge, sodass eine einzelne Anfrage mehrere Kontingenteinheiten verbraucht:
-
Eine Suche: Um die passenden Ressourcen aufzulösen, führt jede Anfrage eine Suche durch und verbraucht Such- (Lese-) Kapazität, genau wie bei einer Standard-FHIR-Suche.
-
Ein Löschvorgang pro übereinstimmender Ressource: Jede gelöschte Ressource verbraucht Lösch- (Schreib-) Kapazität, genau wie bei einer einzelnen Löschung. Eine Anforderung, die N Ressourcen löscht, erfordert eine Suche plus N Löschungen.
-
Ressourcen pro Anfrage: Bei jeder Anfrage wird höchstens eine Seite mit Treffern gelöscht (Standardseitengröße 100). Verwenden Sie die Paginierung, um weitere Treffer zu löschen.
Der Durchsatz hängt von der Schreibkapazität Ihres Datenspeichers ab. Um den Durchsatz innerhalb der Kontingentgrenzen Ihres Kontos zu verwalten, stellen Sie entweder mehr Anfragen mit einem kleineren _count Wert oder verwenden Sie eine engere Suche mit einem größeren _count Wert. Die aktuellen Kapazitätsbeschränkungen Ihres Kontos für Suchen und Schreiben finden Sie unterEndpunkte und Kontingente.
Überlegungen
-
_countmuss eine positive Ganzzahl sein. Ein Wert, der keine Ganzzahl ist oder außerhalb des gültigen Bereichs liegt, wird400 Bad Requestmit einer Validierung zurückgegeben.OperationOutcomeWenn_count=1, handelt es sich bei der Antwort immer noch um eine Antwortbatch-responseBundle, nicht um die Antwort mit einer einzigen Ressource, die bei einem bedingten Löschen ohne zurückgegeben wurde._count -
Der
If-MatchHeader wird zusammen mit_countnicht unterstützt. Eine Anfrage, die beide Rücksendungen beinhaltet400 Bad Request. -
Bedingtes Löschen im Batch-Modus wird innerhalb von
BundleAnfragen nicht unterstützt. -
Nur erfolgreich gelöschte Ressourcen werden gemessen. Ressourcen, die mit dem
403Status412oder zurückgegeben werden, werden nicht gemessen.