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.
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
en 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.
Umgekehrte verkettete 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.
Zusammengesetzte Suche
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.