Freigeben über


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 mit GET {{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 verwenden Resource; 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, truewodurch 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:

  1. Für den Patienten nach Rennen:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
  1. 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}}/SearchParameterdes 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 USCoreRaceder Name der benutzerdefinierten SearchParameter Ressourceninstanz . Sie können mithilfe des GET {{FHIR_URL}}/SearchParameter?name=USCoreRaceNamens 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.