FHIR-Suchbeispiele für Azure API for FHIR

Nachfolgend finden Sie einige Beispiele für die Verwendung von FIHR®-Suchvorgängen (Fast Healthcare Interoperability Resources), einschließlich Suchparametern und Modifizierern, verketteter und umgekehrter verketteter Suche, zusammengesetzter Suche, Anzeigen des nächsten Eintragssatzes 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 dadurch alle MedicationRequests sowie alle Patienten gepullt, auf die in den 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 Kommas getrennte Liste von Basiselementen:

GET [your-fhir-server]/Patient?_elements=identifier,active

In dieser Anforderung erhalten Sie ein Bündel von Patienten zurück, aber jede Ressource umfasst nur die Bezeichner und den aktiven Status des Patienten. Ressourcen in dieser zurückgegebenen Antwort enthalten den meta.tag-Wert SUBSETTED, um anzuzeigen, dass sie ein unvollständiger Satz von Ergebnissen sind.

Suchmodifizierer

:not

:not ermöglicht Ihnen, Ressourcen aufzufinden, bei denen ein Attribut nicht wahr ist. Sie könnten beispielsweise nach Patienten suchen, deren 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. Für einfache Datentypelemente trifft :missing=true bei allen Ressourcen zu, in denen das Element mit Erweiterungen vorhanden ist, aber einen leeren Wert hat. Wenn Sie z. B. alle Patient-Ressourcen finden möchten, in denen Informationen zum Geburtsdatum fehlen, können Sie Folgendes tun:

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 berücksichtigt keine Groß-/Kleinschreibung und lässt Zeichenverkettung zu. Zum Beispiel:

GET [your-fhir-server]/Patient?address:contains=Meadow

Diese Anforderung gäbe alle Patient-Ressourcen mit address-Feldern zurück, die Werte enthalten, die die Zeichenfolge „Meadow“ 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. Patienten haben häufig eine oder mehrere Encounter (Untersuchung/en) mit einem Betreff. So suchen Sie nach allen Encounter-Ressourcen für einen Patient mit der angegebenen id:

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Mithilfe einer verketteten Suche können Sie alle Encounter-Ressourcen finden, die einem bestimmten Patient-Informationsteil entsprechen, z. B. dem birthdate:

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

Dies würde nicht nur die Suche nach Encounter-Ressourcen für einen einzelnen Patienten ermöglichen, sondern über alle Patienten hinweg, die den angegebenen Geburtsdatumswert haben.

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. Mit anderen Worten, wenn ein Patient „Sarah aus dem Bundesstaat NY“ und „Bill aus dem Bundesstaat WA“ enthielte, auf die beide als generalPractitioner des Patienten verwiesen wird, würde dieser Patient zurückgegeben.

Informationen zu Szenarien, in denen die Suche ein AND-Vorgang sein muss, der alle Bedingungen als Gruppe abdeckt, finden Sie im folgenden Beispiel zur zusammengesetzten Suche.

Mit einer verketteten Suche können Sie nach Ressourcen suchen, basierend auf den Eigenschaften von Ressourcen, auf die sie verweisen. Mithilfe einer umgekehrten verketteten Suche können dies umgekehrt durchführen. Sie können nach Ressourcen suchen, basierend auf den Eigenschaften von Ressourcen, die auf sie verweisen, indem Sie den _has-Parameter verwenden. Beispielsweise hat die Observation-Ressource einen Suchparameter patient, der auf eine Patientenressource verweist. So finden Sie alle Patientenressourcen, auf die mittels Observation mit einem bestimmten code verwiesen wird:

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

Diese Anforderung gibt Patientenressourcen zurück, auf die mittels Observation mit dem Code 527 verwiesen wird.

Darüber hinaus kann die umgekehrte verkettete Suche eine rekursive Struktur aufweisen. Wenn Sie beispielsweise nach allen Patienten mit einer Observation suchen möchten, wobei die Beobachtung über ein Überwachungsereignis von dem spezifischen Benutzer janedoe verfügt, könnten Sie Folgendes tun:

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.

Um nach Ressourcen zu suchen, die mehrere Bedingungen gleichzeitig erfüllen, verwenden Sie die zusammengesetzte Suche, die eine Abfolge einzelner Parameterwerte mithilfe des Symbols $ verknüpft. Das zurückgegebene Ergebnis wäre die Schnittmenge der Ressourcen, die alle Bedingungen erfüllen, die über 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. Wenn Sie beispielsweise alle DiagnosticReport-Ressourcen finden möchten, die Observation mit einen Kaliumwert kleiner oder gleich 9,2 enthalten:

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. Sie können aber über mehr als 1000 Einträge verfügen, die der Suchabfrage entsprechen, und Sie möchten möglicherweise den nächsten Satz von Einträgen hinter den ersten 1000 Einträgen anzeigen, die zurückgegeben wurden. In diesem Fall würden Sie den Fortsetzungstokenwert url in searchset wie im folgenden Bundle-Ergebnis verwenden:

    "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"
        }
    ],

Außerdem würden Sie eine GET-Anforderung für die bereitgestellte URL unter dem Feld relation: next ausführen:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Dadurch wird der nächste Satz von Einträgen für Ihr Suchergebnis zurückgegeben. searchset ist der vollständige Satz von Suchergebniseinträgen, und das Fortsetzungstoken url ist der Link, der Ihnen vom Server bereitgestellt wird, um die Einträge abzurufen, die durch die Einschränkung der maximalen Anzahl von Einträgen, die für eine Suchabfrage zurückgegeben werden, nicht im ersten Satz angezeigt werden.

Suchen mit POST

Alle oben genannten Suchbeispiele haben GET-Anforderungen verwendet. Sie können Suchvorgänge auch mithilfe von POST-Anforderungen unter Verwendung von _search ausführen:

POST [your-fhir-server]/Patient/_search?_id=45

Diese Anforderung würde alle Patient-Ressourcen mit dem id-Wert 45 zurückgeben. Wie bei GET-Anforderungen bestimmt der Server, welche Ressourcen aus dem Ressourcensatz die Bedingung(en) erfüllen, und gibt in der HTTP-Antwort eine Bündelressource zurück.

Ein weiteres Beispiel für die Suche mit POST, wobei die Abfrageparameter als Formulartext übermittelt werden:

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

FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.