Teilen über


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 MedicationRequestsdie 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.

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. Patients haben oft einen oder Encountermehrere s mit einem Thema. Im Folgenden wird nach allen Encounter Ressourcen für eine Patient mit der bereitgestellten idSuche 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 generalPractitionerverwiesen 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.

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 codeObjekt verwiesen wirdObservation.

GET [base]/Patient?_has:Observation:patient:code=527

Diese Anforderung gibt Patientenressourcen zurück, die mit dem Code 527bezeichnet 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 janedoehat.

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.

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: nextaus.

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 _searchAnforderungen 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.