FHIR-Suchbeispiele

Im Folgenden finden Sie einige Beispiele für Such-API-Aufrufe von Fast Healthcare Interoperability Resources (FHIR®) mit verschiedenen Suchparametern, Modifizierern, verketteten und reverse verketteten Suchvorgängen, zusammengesetzten Suchvorgängen, POST Suchanforderungen und mehr. Eine allgemeine Einführung in FHIR-Suchkonzepte finden Sie unter Übersicht über die FHIR-Suche.

Suchergebnisparameter

_include

_include mit können Sie nach Ressourceninstanzen suchen und andere Ressourcen, auf die von den Zielressourceninstanzen verwiesen wird, in die Ergebnisse einbeziehen. Sie können beispielsweise verwenden _include , um Ressourcen abzufragen MedicationRequest und die Suche auf Rezepte für einen bestimmten Patienten zu beschränken. Der FHIR-Dienst gibt dann sowohl die MedicationRequest Ressourcen als auch die referenzierte Patient Ressource zurück. Im folgenden Beispiel ruft die Anforderung alle MedicationRequest Ressourceninstanzen in der Datenbank und alle Patienten ab, auf die von den MedicationRequest Instanzen verwiesen wird:

 GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient

Hinweis

Der FHIR-Dienst in Azure Health Data Services schränkt Suchvorgänge mit _include und _revinclude auf maximal 100 Elemente ein.

_revinclude

_revinclude ermöglicht es Ihnen, nach Ressourceninstanzen zu suchen und andere Ressourcen, die auf die Zielressourceninstanzen verweisen, in die Ergebnisse einzuschließen. Sie können beispielsweise nach Patienten suchen und dann alle Untersuchungen umgekehrt einschließen, die auf die Patienten verweisen:

GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject

_elements

_elements schränkt die Informationen in den Suchergebnissen auf eine Teilmenge der elemente ein, die für einen Ressourcentyp definiert sind. Der _elements Parameter akzeptiert eine durch Trennzeichen getrennte Liste von Basiselementen:

GET {{FHIR_URL}}/Patient?_elements=identifier,active

In der obigen Anforderung erhalten Sie ein Paket von Patienten, aber jeder Eintrag enthält nur die Bezeichner und den aktiven Status des Patienten. Die Einträge in der Antwort enthalten den meta.tag Wert von SUBSETTED , um anzugeben, dass nicht alle für die Ressource definierten Elemente enthalten sind.

Suchmodifizierer

:not

:not ermöglicht die Suche nach Ressourcen mit einem Element, das keinen bestimmten Wert aufweist. Sie könnten beispielsweise nach Patienten suchen, die nicht weiblich sind:

GET {{FHIR_URL}}/Patient?gender:not=female

Im Gegenzug erhalten Sie alle Patient Ressourcen, deren gender Elementwert nicht femaleist, einschließlich aller Patienten ohne angegebenen Geschlechtswert. Dies unterscheidet sich von der Suche nach Patient Ressourcen mit dem male Geschlechtswert, da dadurch Patienten ohne angegebenes Geschlecht ignoriert würden.

:missing

:missing gibt alle Ressourcen zurück, die keinen Wert für das angegebene Element haben, wenn :missing=true. Gibt außerdem alle Ressourcen zurück, die das angegebene Element enthalten, :missing wenn :missing=false. Für einfache Datentypelemente stimmt mit allen Ressourcen überein, :missing=true in denen ein Element vorhanden ist, aber einen leeren Wert hat. Wenn Sie beispielsweise alle Patient Ressourcen finden möchten, für birthdatedie Informationen fehlen, können Sie aufrufen:

GET {{FHIR_URL}}/Patient?birthdate:missing=true

:exact

:exact wird verwendet, um nach Elementen mit string Datentypen zu suchen, und gibt positiv zurück, wenn der Parameterwert genau mit der Groß-/Kleinschreibung und der vollständigen Zeichenfolge des Elementwerts übereinstimmt.

GET {{FHIR_URL}}/Patient?name:exact=Jon

Diese Anforderung gibt Ressourcen zurückPatient, die den given Namen Jonoder family haben. Wenn Patienten mit Namen wie Jonathan oder JONvorhanden wären, würde die Suche diese Ressourcen ignorieren, da ihre Namen nicht genau mit dem angegebenen Wert übereinstimmen.

:contains

:contains wird verwendet, um Typelemente abzufragen string , und ermöglicht Übereinstimmungen mit dem angegebenen Wert an einer beliebigen Stelle im Feld. contains wird die Groß-/Kleinschreibung nicht beachtet, und es werden übereinstimmende Zeichenfolgen erkannt, die mit anderen Zeichen verkettet sind. Beispiel:

GET {{FHIR_URL}}/Patient?address:contains=Meadow

Diese Anforderung würde alle Patient Ressourcen mit address Elementfeldern zurückgeben, die die Zeichenfolge "Meadow" enthalten (Groß-/Kleinschreibung wird nicht beachtet). Dies bedeutet, dass Sie Adressen mit Werten wie "Meadows Lane", "Pinemeadow Place" oder "Meadowlark St" haben könnten, die positive Übereinstimmungen zurückgeben.

Um Suchvorgänge auszuführen, die Elemente abdecken, die in einer Referenzressource enthalten sind, können Sie eine Reihe von Parametern zusammen mit ."verketten". Wenn Sie z. B. alle DiagnosticReport Ressourcen mit einem subject Verweis auf einen Patienten anzeigen möchten, der durch angegeben wird name:

 GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah

Diese Anforderung würde alle DiagnosticReport Ressourcen mit einem Patientenantragsteller namens "Sarah" zurückgeben. Die . verweist die verkettete Suche auf das name Element innerhalb der Ressource, auf die verwiesen wird Patient .

Eine weitere häufige Verwendung der FHIR-Suche besteht darin, alle Begegnungen für einen bestimmten Patienten zu finden. So führen Sie eine reguläre (nicht verkettete) Suche nach Encounter Ressourcen durch, die auf einen Patient mit einem angegebenen idverweisen:

GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Mithilfe der verketteten Suche können Sie alle Encounter Ressourcen finden, die auf Patienten verweisen, deren Details mit einem Suchparameter übereinstimmen. Im folgenden Beispiel wird veranschaulicht, wie Sie nach Begegnungen suchen, die auf Patienten verweisen, die durch eingeschränkt werden birthdate:

GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20

Dadurch würden alle Encounter Instanzen zurückgegeben, die auf Patienten mit dem angegebenen birthdate Wert verweisen.

Darüber hinaus können Sie mehrere verkettete Suchvorgänge mithilfe des & Operators initiieren, der die Suche nach mehreren Verweisen in einer Anforderung ermöglicht. In solchen Fällen mit &sucht die verkettete Suche "unabhängig" nach jedem Elementwert:

GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Dadurch würden alle Patient Ressourcen zurückgegeben, die einen Verweis auf "Sarah" als plus einen generalPractitioner Verweis auf eine generalPractitioner haben, die über eine Adresse im Bundesstaat Washington verfügt. Mit anderen Worten, wenn ein Patient eine generalPractitioner namens Sarah aus dem Bundesstaat New York und eine andere generalPractitioner namens Bill aus dem Bundesstaat Washington hätte, würde dies die Bedingungen für eine positive Übereinstimmung bei dieser Suche erfüllen.

Informationen zu Szenarien, in denen die Suche eine logische AND-Bedingung erfordert, die streng auf gekoppelte Elementwerte überprüft, finden Sie in den unten aufgeführten Beispielen für die zusammengesetzte Suche .

Mithilfe der reversen verketteten Suche in FHIR können Sie nach Zielressourceninstanzen suchen, auf die von anderen Ressourcen verwiesen wird. Anders ausgedrückt: Sie können ressourcen basierend auf den Eigenschaften der Ressourcen suchen, die auf sie verweisen. Dies wird mit dem _has -Parameter erreicht. Die Ressource verfügt beispielsweise Observation über einen Suchparameter patient , der nach einem Verweis auf eine Patient Ressource sucht. So suchen Sie alle Patient Ressourcen, auf die von einer Observation mit einem bestimmten codereferenziert wird:

GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527

Diese Anforderung gibt Ressourcen zurück Patient , auf die von Observation Ressourcen mit dem Code 527verwiesen wird.

Darüber hinaus kann die umgekehrte verkettete Suche eine rekursive Struktur aufweisen. Wenn Sie z. B. nach allen Patienten suchen möchten, auf die von einer Observation verwiesen wird, wobei auf die Beobachtung von einem AuditEvent bestimmten Arzt mit dem Namen janedoeverwiesen wird:

GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Um nach Ressourcen zu suchen, die Elemente enthalten, die als logisch verbundene Paare gruppiert sind, definiert FHIR die zusammengesetzte Suche, die einzelne Parameterwerte mit dem $ Operator verknüpft und so ein verbundenes Parameterpaar bildet. In einer zusammengesetzten Suche tritt eine positive Übereinstimmung auf, wenn die Schnittmenge von Elementwerten alle Bedingungen erfüllt, die in den gekoppelten Suchparametern festgelegt sind. Wenn Sie beispielsweise alle DiagnosticReport Ressourcen finden möchten, die einen Kaliumwert kleiner als 9.2enthalten:

GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Die gekoppelten Elemente wären in diesem Fall das code -Element (von einer Observation Ressource, auf die resultals verwiesen wird) und das -Element, das valuecodemit verbunden ist. Nach dem Code mit dem $ Operator wird die value Bedingung als lt (für "kleiner als") 9.2 (für den Kalium mmol/L-Wert) festgelegt.

Zusammengesetzte Suchparameter können auch verwendet werden, um mehrere Komponentencodewertmengen mit einem logischen OR zu filtern. So können Sie beispielsweise Beobachtungen mit einem diastolischen Blutdruck von mehr als 90 ODER einem systolischen Blutdruck größer als 140 abfragen:

GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140

Beachten Sie, dass , als logischer OR-Operator zwischen den beiden Bedingungen fungiert.

Anzeigen des nächsten Eintragssatzes

Die maximale Anzahl von Ressourcen, die von einer Suchabfrage gleichzeitig zurückgegeben werden können, beträgt 1000. Möglicherweise verfügen Sie jedoch über mehr als 1000 Ressourceninstanzen, die der Suchabfrage entsprechen, und Sie möchten nach den ersten 1000 Einträgen den nächsten Satz von Ergebnissen abrufen. In einem solchen Fall würden Sie den Tokenwert url für die Fortsetzung (d. h. "next") im Paket verwenden, das searchset von der Suche zurückgegeben wird:

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
        }
    ],

Sie würden eine GET Anforderung für die angegebene URL senden:

GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Dies würde den nächsten Satz von Einträgen für Ihre Suchergebnisse zurückgeben. Das searchset Paket ist der vollständige Satz von Suchergebniseinträgen, und das Fortsetzungstoken url ist der link, der vom FHIR-Dienst bereitgestellt wird, um die Einträge abzurufen, die nicht in die erste Teilmenge passen (aufgrund der Einschränkung der maximalen Anzahl von Einträgen, die für eine Seite zurückgegeben werden).

Suchen mit POST

Alle oben genannten Suchbeispiele verwenden GET Anforderungen. Sie können FHIR-Such-API-Aufrufe jedoch auch mit dem POST_search Parameter ausführen:

POST {{FHIR_URL}}/Patient/_search?_id=45

Diese Anforderung würde die Patient Ressourceninstanz mit dem angegebenen id Wert zurückgeben. Genau wie bei GET Anforderungen bestimmt der Server, welche Ressourceninstanzen die Bedingungen erfüllen, und gibt ein Paket in der HTTP-Antwort zurück.

Ein weiteres Feature der Suche mit POST ist, dass Sie die Abfrageparameter als Formulartext übermitteln können:

POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Nächste Schritte

In diesem Artikel haben Sie die Suche in FHIR mithilfe von Suchparametern, Modifizierern und anderen Methoden kennengelernt. Weitere Informationen zur FHIR-Suche finden Sie unter

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