FHIR-Suchbeispiele für Azure API for FHIR
Wichtig
Azure API for FHIR wird am 30. September 2026 eingestellt. Folgen Sie den Migrationsstrategien, um bis zu diesem Datum zum Azure Health Data Services-FHIR®-Dienst zu wechseln. Aufgrund der Einstellung von Azure API for FHIR werden neue Bereitstellungen ab dem 1. April 2025 nicht zugelassen. Der Azure Health Data Services-FHIR-Dienst ist die weiterentwickelte Version der Azure-API für FHIR, mit der Kundschaft FHIR-, DICOM- und Medizintechnikdienste mit Integrationen in andere Azure-Dienste verwalten kann.
Im Folgenden finden Sie Beispiele für die Verwendung von FHIR-Suchvorgängen® (Fast Healthcare Interoperability Resources), einschließlich Suchparametern und Modifizierern, Ketten- und Reversechainsuche, zusammengesetzter Suche, Anzeigen des nächsten Eintrags für Suchergebnisse und Suchen mit einer POST
Anforderung. Weitere Informationen zur Suche finden Sie unter Übersicht über die FHIR-Suche.
Suchergebnisparameter
_include
_include
sucht ressourcenübergreifend nach den Ressourcen, die den angegebenen Parameter der Ressource enthalten. Beispielsweise können Sie nur die MedicationRequest
-Ressourcen durchsuchen, um nur die Ressourcen zu finden, die Informationen zu den Rezepten für einen bestimmten Patienten enthalten, wobei es sich um den reference
-Parameter patient
handelt. Im folgenden Beispiel werden alle und alle Patienten abgerufen, auf MedicationRequests
die MedicationRequests
verwiesen wird.
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Hinweis
_include und _revinclude sind auf 100 Elemente beschränkt.
_revinclude
_revinclude
ermöglicht es Ihnen, in die entgegengesetzte Richtung von _include
zu suchen. Sie können beispielsweise nach Patienten suchen und dann alle Untersuchungen umgekehrt einschließen, die auf die Patienten verweisen:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_elements
_elements
schränkt das Suchergebnis auf eine Teilmenge von Feldern ein, um die Antwortgröße zu verringern, indem unnötige Daten weggelassen werden. Der Parameter akzeptiert eine durch Trennzeichen getrennte Liste von Basiselementen.
GET [your-fhir-server]/Patient?_elements=identifier,active
Aus dieser Anforderung erhalten Sie ein Bündel von Patienten, bei denen jede Ressource nur die Bezeichner und den aktiven Status des Patienten enthält. Ressourcen in dieser Antwort enthalten einen meta.tag
Wert, der SUBSETTED
angibt, dass sie eine unvollständige Gruppe von Ergebnissen sind.
Suchmodifizierer
:not
:not
ermöglicht Ihnen, Ressourcen aufzufinden, bei denen ein Attribut nicht wahr ist. Beispielsweise könnten Sie nach Patienten suchen, bei denen das Geschlecht nicht weiblich ist.
GET [your-fhir-server]/Patient?gender:not=female
Als Rückgabewert würden Sie alle Patienteneinträge erhalten, bei denen das Geschlecht nicht weiblich ist, einschließlich leerer Werte (Einträge ohne Geschlechtsangabe). Dies unterscheidet sich von der Suche nach Patienten, deren Geschlecht männlich ist, da diese die Einträge ohne Geschlechtsangabe nicht einschließen würde.
:missing
:missing
gibt alle Ressourcen zurück, die keinen Wert für das angegebene Element haben, wenn der Wert true
ist, und gibt alle Ressourcen zurück, die das angegebene Element enthalten, wenn der Wert false
ist. Bei einfachen Datentypelementen stimmt es mit allen Ressourcen überein, :missing=true
in denen das Element mit Erweiterungen vorhanden ist, aber einen leeren Wert aufweist. Das folgende Beispiel zeigt, wie Sie alle Patient
Ressourcen finden, die informationen zum Geburtsdatum fehlen.
GET [your-fhir-server]/Patient?birthdate:missing=true
:exact
:exact
wird für string
-Parameter verwendet und gibt Ergebnisse zurück, die dem Parameter genau entsprechen, z. B. hinsichtlich Groß-/Kleinschreibung und Zeichenverkettung.
GET [your-fhir-server]/Patient?name:exact=Jon
Diese Anforderung gibt Patient
-Ressourcen zurück, die genau denselben Namen wie Jon
haben. Wenn die Ressource Patienten mit Namen wie Jonathan
oder joN
enthielte, würde die Suche die Ressource ignorieren und überspringen, da sie nicht genau mit dem angegebenen Wert übereinstimmt.
:contains
:contains
wird für string
-Parameter verwendet und sucht nach Ressourcen mit teilweisen Übereinstimmungen des angegebenen Werts an einer beliebigen Stelle in der Zeichenfolge innerhalb des durchsuchten Felds. contains
die Groß-/Kleinschreibung nicht beachtet wird und die Zeichenverkettung zulässt. Zum Beispiel:
GET [your-fhir-server]/Patient?address:contains=Meadow
Diese Anforderung würde alle Patient
Ressourcen mit address
Feldern zurückgeben, die Werte enthalten, die die Zeichenfolge "Wiesen" enthalten. Dies bedeutet, dass Adressen, die Werte wie „Meadowers“ oder „59 Meadow ST“ enthalten, als Suchergebnisse zurückgegeben werden könnten.
Verkettete Suche
Um eine Reihe von Suchvorgängen auszuführen, die mehrere Referenzparameter abdecken, können Sie die Serie der Referenzparameter verketten, indem Sie einen nach dem anderen unter Verwendung eines Punkts (.
) an die Serveranforderung anfügen. Wenn Sie beispielsweise alle DiagnosticReport
-Ressourcen mit einem subject
-Verweis auf eine Patient
-Ressource anzeigen möchten, die einen bestimmten name
enthält:
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Diese Anforderung würde alle DiagnosticReport
-Ressourcen mit einem Patientenbetreff namens „Sarah“ zurückgeben. Der Punkt (.
) nach dem Feld Patient
führt die verkettete Suche mit dem Referenzparameter des subject
-Parameters aus.
Eine andere häufige Verwendung einer regulären Suche (keine verkettete Suche) besteht im Auffinden aller Untersuchungen eines bestimmten Patienten. Patient
s haben oft einen oder Encounter
mehrere s mit einem Thema. Im Folgenden wird nach allen Encounter
Ressourcen für eine Patient
mit der bereitgestellten id
Suche gesucht.
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Mithilfe der verketteten Suche finden Sie alle Ressourcen, die Encounter
einem bestimmten Informationsabschnitt Patient
entsprechen, z. B. die birthdate
.
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Dies würde das Durchsuchen Encounter
von Ressourcen für alle Patienten ermöglichen, die den angegebenen Geburtsdatumswert aufweisen.
Darüber hinaus kann eine verkettete Suche mehr als einmal in einer Anforderung mithilfe des Symbols &
ausgeführt werden, das Ihnen die Suche nach mehreren Bedingungen in einer Anforderung ermöglicht. In solchen Fällen sucht eine verkettete Suche „unabhängig“ nach jedem Parameter, anstatt nach Bedingungen zu suchen, die nur alle Bedingungen gleichzeitig erfüllen:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Dies würde alle Patient
-Ressourcen zurückgeben, die „Sarah“ als generalPractitioner
enthalten und die einen generalPractitioner
mit einer Adresse mit dem Bundesstaat WA enthalten. Anders ausgedrückt: Wenn ein Patient Sarah aus dem Staat NY und Bill aus dem Staat WA hatte, die beide als Patienten generalPractitioner
verwiesen haben, werden beide zurückgegeben.
Für Szenarien, in denen die Suche ein AND
Vorgang sein muss, der alle Bedingungen als Gruppe abdeckt, finden Sie im Beispiel in der zusammengesetzten Suche.
Umgekehrte verkettete Suche
Mit einer verketteten Suche können Sie nach Ressourcen suchen, basierend auf den Eigenschaften von Ressourcen, auf die sie verweisen. Mithilfe der Reversechainsuche können Sie dies auf andere Weise tun. Sie können nach Ressourcen suchen, basierend auf den Eigenschaften von Ressourcen, die auf sie verweisen, indem Sie den _has
-Parameter verwenden. Beispielsweise verfügt eine Observation
Ressource über einen Suchparameter patient
, der auf eine Patient-Ressource verweist. Verwenden Sie folgendes, um alle Patientenressourcen zu finden, auf die mit einem bestimmten code
Objekt verwiesen wirdObservation
.
GET [base]/Patient?_has:Observation:patient:code=527
Diese Anforderung gibt Patientenressourcen zurück, die mit dem Code 527
bezeichnet werdenObservation
.
Darüber hinaus kann die umgekehrte verkettete Suche eine rekursive Struktur aufweisen. Die folgende Sucht beispielsweise nach allen Patienten, Observation
bei denen die Beobachtung ein Überwachungsereignis von einem bestimmten Benutzer janedoe
hat.
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Hinweis
In Azure API for FHIR und im auf Azure Cosmos DB basierenden Open-Source-FHIR-Server sind die verkettete Suche und die umgekehrte verkettete Suche eine MVP-Implementierung. Um die verkettete Suche in Azure Cosmos DB durchzuführen, durchläuft die Implementierung den Suchausdruck von oben nach unten und sendet Unterabfragen, um die übereinstimmenden Ressourcen aufzulösen. Dies erfolgt für jede Ebene des Ausdrucks. Wenn eine Abfrage mehr als 100 Ergebnisse zurückgibt, wird ein Fehler ausgelöst.
Zusammengesetzte Suche
Wenn Sie nach Ressourcen suchen möchten, die mehrere Bedingungen gleichzeitig erfüllen, verwenden Sie eine zusammengesetzte Suche, die eine Sequenz einzelner Parameterwerte mit einem Symbol $
verknüpft. Das Ergebnis wäre die Schnittmenge der Ressourcen, die allen bedingungen entsprechen, die durch die verknüpften Suchparameter angegeben wurden. Solche Suchparameter werden als zusammengesetzte Suchparameter bezeichnet, und sie definieren einen neuen Parameter, der die mehreren Parameter in einer geschachtelten Struktur kombiniert. Die folgende Suche sucht beispielsweise nach allen DiagnosticReport
Ressourcen, die einen Kaliumwert kleiner oder gleich 9,2 enthalten Observation
.
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Diese Anforderung gibt die Komponente an, die den Code 2823-3
enthält, bei dem es sich in diesem Fall um Kalium handelt. Hinter dem Symbol $
wird der Bereich des Werts für die Komponente mithilfe von lt
für „kleiner als oder gleich“ angegeben und 9.2
für den Kaliumwertebereich.
Durchsuchen des nächsten Eintragssatzes
Die maximale Anzahl von Einträgen, die von einer einzelnen Suchabfrage zurückgegeben werden können, beträgt 1000. Wenn mehr als 1.000 Einträge, die der Suchabfrage entsprechen, können Sie mit dem folgenden Verfahren Einträge anzeigen, die größer als 1000 sind.
Verwenden Sie den Fortsetzungstokenwert url
in searchset
, wie im folgenden Bundle
Ergebnis.
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
Führen Sie dann eine GET-Anforderung für die bereitgestellte URL unter dem Feld relation: next
aus.
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Dadurch wird der nächste Satz von Einträgen für Ihr Suchergebnis zurückgegeben. Dies searchset
ist der vollständige Satz von Suchergebniseinträgen, und das Fortsetzungstoken url
ist der Link, der vom Server bereitgestellt wird, um Einträge abzurufen, die in den ersten 1000 nicht angezeigt werden.
Suchen mit POST
Alle zuvor erwähnten Suchbeispiele verwendeter GET
Anforderungen. Sie können Suchvorgänge auch mithilfe von Anforderungen mithilfe POST
von _search
Anforderungen ausführen.
POST [your-fhir-server]/Patient/_search?_id=45
Diese Anforderung gibt Ressourcen mit dem id
Wert 45 zurückPatient
. Wie bei GET-Anforderungen bestimmt der Server, welcher Der Satz von Ressourcen die Bedingung erfüllt, und gibt eine Bundleressource in der HTTP-Antwort zurück.
Ein weiteres Beispiel für die Suche mithilfe von POST, bei der die Abfrageparameter als Formulartext übermittelt werden, ist wie folgt.
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie mithilfe verschiedener Suchparameter, Modifizierer und FHIR-Suchtools suchen. Weitere Informationen zur FHIR-Suche finden Sie unter
Hinweis
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.