FHIR-Suchbeispiele
Im Folgenden finden Sie Beispiele für FHIR-Such-API-Aufrufe® (Fast Healthcare Interoperability Resources) mit verschiedenen Suchparametern, Modifizierern, verketteten und umgekehrten verketteten Suchvorgängen, zusammengesetzten Suchvorgängen, POST
Suchanforderungen und mehr. Eine allgemeine Einführung in FHIR-Suchkonzepte finden Sie in der Übersicht über die FHIR-Suche.
Suchergebnisparameter
_include
_include
ermöglicht es Ihnen, nach Ressourceninstanzen zu suchen und in die Ergebnisse einzubeziehen, auf die von den Zielressourceninstanzen verwiesen wird. Sie können z. B. verwenden _include
, um Ressourcen abzufragen MedicationRequest
und die Suche auf Verschreibungen für einen bestimmten Patienten zu beschränken. Der FHIR-Dienst gibt dann die MedicationRequest
Ressourcen und 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 beschränkt Suchvorgänge mit _include
und _revinclude
gibt maximal 100 Elemente zurück.
_revinclude
_revinclude
ermöglicht es Ihnen, nach Ressourceninstanzen zu suchen und in die Ergebnisse andere Ressourcen einzuschließen, die auf die Zielressourceninstanzen verweisen. Beispielsweise können Sie nach Patienten suchen und dann alle Begegnungen umkehren, 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 für einen Ressourcentyp definierten Elemente ein. Der _elements
Parameter akzeptiert eine durch Trennzeichen getrennte Liste von Basiselementen.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Die vorherige Anforderung gibt ein Bündel von Patienten zurück. Jeder Eintrag enthält nur die Bezeichner und den aktiven Status des Patienten. Die Einträge in der Antwort enthalten einen meta.tag
Wert, der SUBSETTED
angibt, dass nicht alle für die Ressource definierten Elemente enthalten sind.
Suchmodifizierer
:not
:not
ermöglicht es Ihnen, Ressourcen mit einem Element zu finden, das keinen bestimmten Wert aufweist. So könnten Sie 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 female
angegeben ist, einschließlich aller Patienten ohne geschlechtsspezifischen Wert. Dies unterscheidet sich von der Suche nach Patient
Ressourcen mit dem male
Geschlechterwert, da die Patienten ohne bestimmtes 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, :missing
die das angegebene Element enthalten, wenn :missing=false
. Bei einfachen Datentypelementen stimmt es mit allen Ressourcen überein, in denen ein Element vorhanden ist, :missing=true
aber einen leeren Wert aufweist. Wenn Sie beispielsweise alle Patient
Ressourcen finden möchten, zu birthdate
denen Informationen fehlen, können Sie den folgenden Aufruf ausführen.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
wird verwendet, um nach Elementen mit string
Datentypen zu suchen und gibt positive Werte 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 Namen oder family
den given
Namen aufweisenJon
. Wenn Patienten mit Namen wie Jonathan
oder JON
, die Suche würde diese Ressourcen ignorieren, da ihre Namen nicht exakt mit dem angegebenen Wert übereinstimmen.
:contains
:contains
wird verwendet, um Typenelemente abzufragen string
und Übereinstimmungen mit dem angegebenen Wert an einer beliebigen Stelle im Feld zu ermöglichen. contains
die Groß-/Kleinschreibung nicht beachtet wird und erkennt übereinstimmende Zeichenfolgen, die mit anderen Zeichen verkettet sind. Zum Beispiel:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Diese Anforderung würde alle Patient
Ressourcen mit address
Elementfeldern zurückgeben, die die Zeichenfolge "Wiesen" enthalten (Groß-/Kleinschreibung wird nicht beachtet). Dies bedeutet, dass Sie Adressen mit Werten wie "Wiesengasse", "Pinemeadow Place" oder "Meadowlark St" haben könnten, die positive Übereinstimmungen zurückgeben.
Verkettete Suche
Um Suchvorgänge auszuführen, die Elemente abdecken, die in einer referenzierten Ressource enthalten sind, können Sie eine Reihe von Parametern zusammen mit "verketten" .
. Wenn Sie beispielsweise alle DiagnosticReport
Ressourcen mit einem Verweis auf einen subject
von name
ihnen angegebenen Patienten anzeigen möchten, verwenden Sie die folgende Abfrage.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Diese Anforderung gibt alle DiagnosticReport
Ressourcen mit einem Patientenbetreff namens "Sarah" zurück. Die .
verkettete Suche wird auf das name
Element innerhalb der referenzierten Ressource verwiesen Patient
.
Eine weitere häufige Verwendung der FHIR-Suche ist das Auffinden aller Begegnungen für einen bestimmten Patienten. To do a regular (non-chained) search for Encounter
resources that reference a Patient
with a given id
use the following.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Mithilfe der verketteten Suche finden Sie alle Encounter
Ressourcen, 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 birthdate
eingeschränkt sind.
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, wodurch die Suche nach mehreren Verweisen in einer Anforderung ermöglicht wird. In Fällen, in denen &
die verkettete Suche "unabhängig" nach jedem Elementwert sucht.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Dadurch werden alle Patient
Ressourcen zurückgegeben, die einen Verweis auf "Sarah" haben, sowie generalPractitioner
einen Verweis auf eine generalPractitioner
Adresse im Bundesstaat Washington. Mit anderen Worten, wenn ein Patient eine generalPractitioner
benannte Sarah aus dem Bundesstaat New York und ein anderer generalPractitioner
benannter Bill aus Washington state hatte, erfüllten beide die Bedingungen für eine positive Übereinstimmung bei dieser Suche.
Für Szenarien, in denen die Suche eine logische AND-Bedingung erfordert, die streng auf gekoppelte Elementwerte überprüft, finden Sie in den folgenden zusammengesetzten Suchbeispielen .
Umgekehrte verkettete Suche
Mithilfe der umgekehrten verketteten Suche in FHIR können Sie nach Zielressourceninstanzen suchen, auf die von anderen Ressourcen verwiesen wird. Mit anderen Worten, Sie können basierend auf den Eigenschaften von Ressourcen, die auf sie verweisen, nach Ressourcen suchen. Dies wird mit dem _has
Parameter erreicht. Beispielsweise verfügt die Observation
Ressource über einen Suchparameter patient
, der nach einem Verweis auf eine Patient
Ressource sucht. Verwenden Sie den folgenden Code, um nach allen Patient
Ressourcen zu suchen, auf die von einem Observation
bestimmten code
Objekt verwiesen 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 527
verwiesen 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 durch eine Observation
Stelle verwiesen wird, auf die die Beobachtung von einem AuditEvent
bestimmten Arzt mit dem Namen janedoe
verwiesen wird, verwenden Sie:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Zusammengesetzte Suche
Um nach Ressourcen zu suchen, die Elemente enthalten, die als logisch verbundene Paare gruppiert sind, definiert FHIR die zusammengesetzte Suche, die einzelne Parameterwerte zusammen mit dem $
Operator verbindet – um ein verbundenes Parameterpaar zu bilden. Bei einer zusammengesetzten Suche tritt eine positive Übereinstimmung auf, wenn die Schnittmenge von Elementwerten alle bedingungen erfüllt, die in den Paarsuchparametern festgelegt sind. Das folgende Beispiel fragt nach allen DiagnosticReport
Ressourcen ab, die einen Kaliumwert kleiner als :9.2
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Die gekoppelten Elemente in diesem Fall wären das code
Element (aus einer Observation
Ressource, auf die result
verwiesen wird) und das value
mit dem code
Element verbundene Element . Nach dem Code mit dem $
Operator wird die value
Bedingung als lt
(für "kleiner als") (für den Kalium mmol/L-Wert) 9.2
festgelegt.
Zusammengesetzte Suchparameter können auch verwendet werden, um mehrere Komponentencodewertmengen mit einem logischen OR zu filtern. So können Sie beispielsweise Beobachtungen mit diastolischem Blutdruck abfragen, der größer als 90 ODER systolischer Blutdruck ist, der größer als 140 ist:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Beachten Sie, wie ,
sie als logischer OR-Operator zwischen den beiden Bedingungen funktioniert.
Anzeigen des nächsten Eintragssatzes
Die maximale Anzahl von Ressourcen, die gleichzeitig aus einer Suchabfrage zurückgegeben werden können, beträgt 1000. Möglicherweise verfügen Sie jedoch über mehr als 1.000 Ressourceninstanzen, die der Suchabfrage entsprechen, und Sie möchten den nächsten Ergebnissatz nach den ersten 1.000 Einträgen abrufen. In diesem Fall würden Sie den Fortsetzungswert (d. h. den ) Tokenwert url
im Bündel verwenden, "next"
das searchset
von der Suche wie folgt 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 stellen:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Dadurch wird der nächste Satz von Einträgen für Ihre Suchergebnisse zurückgegeben. Das searchset
Bündel 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 mithilfe von POST
Alle hier erwähnten Suchbeispiele verwenden GET
Anforderungen. Sie können jedoch auch FHIR-Such-API-Aufrufe mit POST
dem _search
Parameter wie folgt ausführen.
POST {{FHIR_URL}}/Patient/_search?_id=45
Diese Anforderung gibt die Patient
Ressourceninstanz mit dem angegebenen id
Wert zurück. Wie bei GET
Anforderungen bestimmt der Server, welche Ressourceninstanzen die Bedingungen erfüllen, und gibt ein Bundle in der HTTP-Antwort zurück.
Ein weiteres Feature der Suche besteht POST
darin, 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 erfahren, wie Sie in FHIR mithilfe von Suchparametern, Modifizierern und anderen Methoden suchen. Weitere Informationen zur FHIR-Suche finden Sie unter
Hinweis
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.