Definieren von benutzerdefinierten Suchparametern
Die FHIR-Spezifikation® definiert eine Reihe von Suchparametern, die für alle Ressourcen gelten. Darüber hinaus definiert FHIR viele Suchparameter, die für bestimmte Ressourcen spezifisch sind. Möglicherweise möchten Sie jedoch auch nach einem Element in einer Ressource suchen, das nicht von der FHIR-Spezifikation als Standardsuchparameter definiert ist. In diesem Artikel wird beschrieben, wie Sie ihre eigenen benutzerdefinierten Suchparameter für die Verwendung im FHIR-Dienst in Azure Health Data Services definieren können.
Hinweis
Jedes Mal, wenn Sie einen Suchparameter erstellen, aktualisieren oder löschen, müssen Sie einen Neuindizierungsauftrag ausführen, um den Suchparameter für die Liveproduktion zu aktivieren. Es wird erläutert, wie Sie Suchparameter testen können, bevor Sie die gesamte FHIR-Dienstdatenbank wie folgt neu indizieren.
Neuen Suchparameter erstellen
Um einen neuen Suchparameter zu POST
erstellen, müssen Sie eine SearchParameter
Ressource für die FHIR-Dienstdatenbank erstellen.
POST {{FHIR_URL}}/SearchParameter
Die folgenden Beispiele veranschaulichen das Erstellen eines neuen benutzerdefinierten Suchparameters.
Erstellen eines neuen Suchparameters pro Definition im Implementierungshandbuch
Das folgende Codebeispiel zeigt, wie Sie den US Core Race-Suchparameter dem Patient
Ressourcentyp in Ihrer FHIR-Dienstdatenbank hinzufügen.
{
"resourceType" : "SearchParameter",
"id" : "us-core-race",
"url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
"version" : "3.1.1",
"name" : "USCoreRace",
"status" : "active",
"date" : "2019-05-21",
"publisher" : "US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "other",
"value" : "http://www.healthit.gov/"
}
]
}
],
"description" : "Returns patients with a race extension matching the specified code.",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}
]
}
],
"code" : "race",
"base" : [
"Patient"
],
"type" : "token",
"expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}
Neuen Suchparameter für Ressourcenattribute mit Verweistyp erstellen
Das folgende Codebeispiel zeigt, wie Sie einen benutzerdefinierten Suchparameter zum Durchsuchen von MedikationDispense-Ressourcen basierend auf dem Ort erstellen, an dem sie ausgegeben wurden. Dies ist ein Beispiel für das Hinzufügen eines benutzerdefinierten Suchparameters für einen Verweistyp.
{
"resourceType": "SearchParameter",
"id": "a3c28d46-fd06-49ca-aea7-5f9314ef0497",
"url": "{{An absolute URI that is used to identify this search parameter}}",
"version": "1.0",
"name": "MedicationDispenseLocationSearchParameter",
"status": "active",
"description": "Search parameter for MedicationDispense by location",
"code": "location",
"base": ["MedicationDispense"],
"target": ["Location"],
"type": "reference",
"expression": "MedicationDispense.location"
}
Hinweis
Der neue Suchparameter wird in der Funktionsanweisung des FHIR-Diensts angezeigt, nachdem Sie POST
den Suchparameter für die Datenbank erstellt und die Datenbank neu indizieren. Das Anzeigen der SearchParameter
Funktionsanweisung ist die einzige Möglichkeit, um zu ermitteln, ob ein Suchparameter in Ihrem FHIR-Dienst unterstützt wird. Wenn Sie die SearchParameter
Funktionsanweisung nicht finden können, müssen Sie die Datenbank dennoch neu indizieren, um den Suchparameter zu aktivieren. Sie können POST
mehrere Suchparameter vor dem Auslösen eines Neuindizierungsvorgangs ausführen.
Wichtige Elemente einer SearchParameter
Ressource sind:
url
: Ein eindeutiger Schlüssel zur Beschreibung des Suchparameters. Organisationen wie HL7 verwenden ein Standard-URL-Format für die von ihnen definierten Suchparameter, wie oben im US Core Race-Suchparameter dargestellt.code
: Der im Codeelement gespeicherte Wert ist der Name, der für den Suchparameter verwendet wird, wenn er in einem API-Aufruf enthalten ist. Für das vorangehende Beispiel mit der Erweiterung "US Core Race" würden Sie mitGET {{FHIR_URL}}/Patient?race=<code>
<code>
dem Wert suchen, der aus dem angegebenen Codierungssystem festgelegt ist. Dieser Aufruf würde alle Patienten eines bestimmten Rennens abrufen.base
: Beschreibt, auf welche Ressourcentypen der Suchparameter angewendet wird. Wenn der Suchparameter auf alle Ressourcen angewendet wird, können Sie verwendenResource
; andernfalls können Sie alle relevanten Ressourcentypen auflisten.target
: Beschreibt, mit welchen Ressourcentypen der Suchparameter übereinstimmt.type
: Beschreibt den Datentyp für den Suchparameter. Der Typ ist durch die Unterstützung für Datentypen im FHIR-Dienst beschränkt. Dies bedeutet, dass Sie keinen Suchparameter vom Typ "Special" definieren oder einen zusammengesetzten Suchparameter definieren können, es sei denn, es handelt sich um eine unterstützte Kombination.expression
: Beschreibt, wie der Wert für die Suche berechnet wird. Beim Beschreiben eines Suchparameters müssen Sie den Ausdruck einschließen, obwohl er von der Spezifikation nicht benötigt wird. Dies liegt daran, dass Sie entweder den Ausdruck oder die xpath-Syntax benötigen und der FHIR-Dienst die xpath-Syntax ignoriert.
Testen neuer Suchparameter
Obwohl Sie die neuen Suchparameter in der Produktion erst verwenden können, wenn Sie einen Neuindexauftrag ausführen, gibt es Möglichkeiten, ihre benutzerdefinierten Suchparameter zu testen, bevor Sie die gesamte Datenbank neu indizieren.
Zunächst können Sie einen neuen Suchparameter testen, um zu sehen, welche Werte zurückgegeben werden. Wenn Sie den folgenden Befehl für eine bestimmte Ressourceninstanz ausführen (indem Sie die Ressourcen-ID angeben), erhalten Sie eine Liste von Wertpaaren mit dem Namen des Suchparameters und dem wert, der im entsprechenden Element gespeichert ist. Diese Liste enthält alle Suchparameter für die Ressource. Sie können durchblättern, um den von Ihnen erstellten Suchparameter zu finden. Wenn Sie diesen Befehl ausführen, ändert sich kein Verhalten in Ihrem FHIR-Dienst.
GET https://{{FHIR_URL}}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
Um beispielsweise alle Suchparameter für einen Patienten zu finden:
GET https://{{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
Das Ergebnis sieht wie folgt aus:
{
"resourceType": "Parameters",
"id": "8be24e78-b333-49da-a861-523491c3437a",
"meta": {
"versionId": "1"
},
"parameter": [
{
"name": "deceased",
"valueString": "http://hl7.org/fhir/special-values|false"
},
{
"name": "language",
"valueString": "urn:ietf:bcp:47|en-US"
},
{
"name": "race",
"valueString": "2028-9"
}
]
...}
Sobald Sie sehen, dass der Suchparameter erwartungsgemäß angezeigt wird, können Sie eine einzelne Ressource neu indizieren, um die Suche mit dem neuen Suchparameter zu testen. Verwenden Sie folgendes, um eine einzelne Ressource neu indizieren zu können.
POST https://{{FHIR_URL}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
Durch Ausführen dieses POST
Aufrufs werden die Indizes für alle Suchparameter festgelegt, die für die in der Anforderung angegebene Ressourceninstanz definiert sind. Durch diesen Aufruf wird die FHIR-Dienstdatenbank geändert. Jetzt können Sie den x-ms-use-partial-indices
Header durchsuchen und festlegen, true
wodurch der FHIR-Dienst Ergebnisse für alle Ressourcen zurückgibt, die den Suchparameter indiziert haben, auch wenn nicht alle Ressourceninstanzen dieses Typs indiziert sind.
Wenn Sie unser Beispiel fortsetzen, können Sie einen Patienten indizieren, um Folgendes zu aktivieren SearchParameter
:
POST {{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
Und führen Sie dann Testsuchen durch:
- Für den Patienten nach Rennen:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
- Für Speicherort (Referenztyp)
{{fhirurl}}/MedicationDispense?location=<locationid referenced in MedicationDispense Resource>
x-ms-use-partial-indices: true
Nachdem Sie den neuen Suchparameter getestet und bestätigt haben, dass er erwartungsgemäß funktioniert, führen Sie ihren Neuindizierungsauftrag aus, damit die neuen Suchparameter in der Liveproduktion verwendet werden können.
Informationen zum Neuindizieren Ihrer FHIR-Dienstdatenbank finden Sie unter Ausführen eines Neuindizierungsauftrags .
Aktualisieren eines Suchparameters
Verwenden Sie PUT
zum Aktualisieren eines Suchparameters eine neue Version des Suchparameters. Sie müssen die Suchparameter-ID in das id
Feld im Textkörper der PUT
Anforderung und die Anforderungszeichenfolge PUT
einschließen.
Hinweis
Wenn Sie die ID für Ihren Suchparameter nicht kennen, können Sie mithilfe GET {{FHIR_URL}}/SearchParameter
des Suchparameters danach suchen. Dadurch werden alle benutzerdefinierten und standardmäßigen Suchparameter zurückgegeben. Sie können durch die Liste scrollen, um den benötigten Suchparameter zu finden. Sie können die Suche auch nach Namen einschränken. Wie in der folgenden Beispielanforderung gezeigt, lautet USCoreRace
der Name der benutzerdefinierten SearchParameter
Ressourceninstanz . Sie können mithilfe des GET {{FHIR_URL}}/SearchParameter?name=USCoreRace
Namens nach dieser SearchParameter
Ressource suchen.
PUT {{FHIR_URL}}/SearchParameter/{{SearchParameter_ID}}
{
"resourceType" : "SearchParameter",
"id" : "{{SearchParameter_ID}}",
"url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
"version" : "3.1.1",
"name" : "USCoreRace",
"status" : "active",
"date" : "2019-05-21",
"publisher" : "US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "other",
"value" : "http://www.healthit.gov/"
}
]
}
],
"description" : "New Description!",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}
]
}
],
"code" : "race",
"base" : [
"Patient"
],
"type" : "token",
"expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}
Das Ergebnis der obigen Anforderung ist eine aktualisierte SearchParameter
Ressource.
Warnung
Achten Sie beim Aktualisieren von Suchparametern darauf. Das Ändern eines vorhandenen Suchparameters könnte Auswirkungen auf das erwartete Verhalten haben. Es wird empfohlen, sofort einen Neuindizierungsauftrag auszuführen.
Löschen eines Suchparameters
Wenn Sie einen Suchparameter löschen müssen, verwenden Sie Folgendes.
DELETE {{FHIR_URL}}/SearchParameter/{{SearchParameter_ID}}
Warnung
Achten Sie beim Löschen von Suchparametern darauf. Das Löschen eines vorhandenen Suchparameters könnte Auswirkungen auf das erwartete Verhalten haben. Es wird empfohlen, sofort einen Neuindizierungsauftrag auszuführen.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie einen benutzerdefinierten Suchparameter erstellen. Als Nächstes erfahren Sie, wie Sie Ihre FHIR-Dienstdatenbank neu indizieren. Weitere Informationen finden Sie unter
Hinweis
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.