{ "title": "FHIR Built-in Search Parameters", "description": "Die FHIR-Spezifikation definiert eine HTTP-Schnittstelle für komplexe medizinische Daten, einschließlich „einfacher" Patienteninformationen wie der Verlauf ihrer Aussagen, Bestätigungen, Beobachtungen usw.", "date": "2025-04-11", "author": "Aleksandr Penskoi", "reading-time": "5 min", "tags": [ "Aidbox", "FHIR Tools" ] }
FHIR Built-in Search Parameters
Die FHIR-Spezifikation definiert eine HTTP-Schnittstelle für komplexe medizinische Daten, einschließlich „einfacher" Patienteninformationen wie der Verlauf ihrer Aussagen, Bestätigungen, Beobachtungen usw. Diese Daten werden als eine Menge verbundener hierarchischer Ressourcen (JSON-Objekte) dargestellt, die Folgendes enthalten können: optionale Elemente, Objekte, Arrays, polymorphe Elemente (mit mehr als einem Datentyp, ähnlich wie algebraische Datentypen) sowie Extensions (FHIR-spezifische Konstrukte, auf die ich später eingehen werde).
Ein zentrales Problem besteht darin: Wie lassen sich solche Daten abfragen und durchsuchen? Angenommen, wir möchten alle Patienten mit einem bestimmten Beruf finden – wie lassen sich solche Anfragen in einer URL abbilden? Komplexe Abfragen wie FHIRPath oder JSONPath direkt in URLs zu schreiben, ist wenig lesbar.
Built-in FHIR Search Parameters
Die Antwort von FHIR darauf sind Search Parameters. Der Einfachheit halber können wir sie als Aliase für FHIRPath-Abfragen betrachten. Sehen wir uns einige Beispiele für die Patient-Ressource an – dies sind die Built-in Search Parameters:
active
Zum Auffinden aktiver Patientendatensätze. In einer URL sieht das folgendermaßen aus: GET /fhir/Patient?active=true. Dies ist etwas einfacher als der eigentliche FHIRPath:
FHIRPath: `Patient.active`.
email
Dieses Beispiel ist etwas komplexer, da E-Mail-Adressen bei verschiedenen Ressourcen an unterschiedlichen Stellen hinterlegt sein können.
FHIRPath:
Patient.telecom.where(system='email')
| Person.telecom.where(system='email')
| Practitioner.telecom.where(system='email')
| PractitionerRole.contact.telecom.where(system='email')
| RelatedPerson.telecom.where(system='email')
Was wir hier sehen:
-
Der Parameter kann auf viele Ressourcentypen angewendet werden.
-
Die E-Mail-Information ist bei verschiedenen Ressourcen an unterschiedlichen Stellen abgelegt (in der Regel im
telecom-Objekt, kann aber auch innerhalb voncontactliegen). -
Typischerweise werden alle Kontaktinformationen in einem Array zusammengefasst, sodass wir über den
where(...)-Ausdruck gezielt nach „E-Mail"-Informationen filtern müssen.
Über die Built-in Search Parameters hinaus
Die Built-in Search Parameters wären wenig nützlich, wenn sie ausschließlich Standardfälle abdecken könnten.
Manchmal müssen wir „benutzerdefinierte" Informationen speichern – etwa Angaben zum Beruf eines Patienten, die kein Bestandteil der Patient-Ressource sind, für bestimmte Anwendungen jedoch relevant sein können. In diesem Fall lassen sich diese Informationen gemäß dem Extension Element als extension der Ressource wie folgt anhängen:
{
"resourceType": "Patient",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
"extension": [
{
"url": "code",
"valueCodeableConcept": {
"coding": [
{
"system": "urn:iso:std:iso:3166",
"code": "DE"
}
]
}
},
{
"url": "period",
"valuePeriod": {
"start": "2009-03-14"
}
}
]
}
]
}
Um nach solchen Objekten zu suchen, können wir benutzerdefinierte Search Parameters wie folgt definieren:
{
"resourceType": "SearchParameter",
"id": "patient-citizenship",
"url": "http://example.org/fhir/SearchParameter/patient-citizenship",
"version": "1.0.0",
"name": "citizenship",
"status": "active",
"description": "Search patients by citizenship",
"code": "citizenship",
"base": [
"Patient"
],
"type": "string",
"expression": "Patient.extension.where(url='http://hl7.org/fhir/StructureDefinition/patient-citizenship').value.as(string)"
}
Und dieser Parameter lässt sich in einer URL wie folgt verwenden: GET /fhir/Patient?citizenship=GB
Zusammenfassend lässt sich sagen, dass FHIR Search Parameters in Verbindung mit FHIRPath leistungsstarke und erweiterbare Werkzeuge für die Suche in komplexen medizinischen Daten darstellen. Informationen dazu, wie Sie damit in Aidbox arbeiten können, sowie weitere Beispiele finden Sie in der Dokumentation.
Siehe auch: Resolve FHIR SearchParameters Conflicting und New Resource Browser.




