Benutzerdefinierte FHIR-Suchvorgänge erstellen

Auf dieser Seite wird beschrieben, wie Sie einen FHIR-Speicher konfigurieren, um benutzerdefinierte Suchparameter für Felder und Erweiterungen zu unterstützen, die nicht von den FHIR-Standardsuchparametern abgedeckt werden.

Benutzerdefinierte Suchparameter können in vielen Situationen nützlich sein, darunter:

  • Sie müssen in einer FHIR-Ressource nach einem Feld suchen, aber es gibt keinen unterstützten Suchparameter für das Feld.
  • Sie müssen in Erweiterungen suchen, die dem FHIR-Datenmodell hinzugefügt wurden.

Überblick

Standardmäßig unterstützen Suchen nach FHIR-Ressourcen die in denFHIR-Spezifikation definierten Standard-Suchparameter, mit einigen Ausschlüssen, die in der FHIR-Funktionsanweisung oder der FHIR-Konformitätserklärung dokumentiert sind.

Sie können einen oder mehrere benutzerdefinierte Suchparameter erstellen und den FHIR-Speicher so konfigurieren, dass sie in Abfragen über die Methode search unterstützt werden. Benutzerdefinierte Suchparameter sind in folgenden Situationen nützlich:

  • Suchen in Feldern, die nicht von Standardsuchparametern abgedeckt werden.
  • Suchen in Erweiterungen des FHIR-Datenmodells.

Viele FHIR-Implementierungsleitfäden Suchparameter definieren, die Sie in Ihren Suchanfragen verwenden können.

Benutzerdefinierte Suchparameter unterstützen das gleiche Suchverhalten, einschließlich erweiterter FHIR-Suchfunktionen wie Standardsuchparameter. Beispiele:

  • Modifikatoren
  • _include und _revinclude
  • Verkettete Suche
  • _sort

Wenn Sie eine benutzerdefinierte Suche für Ihren FHIR-Speicher aktivieren möchten, müssen Sie zuerst eine oder mehrere SearchParameter-Ressourcen erstellen, die das Suchverhalten definieren. SearchParameter ist ein Standard-FHIR-Ressourcentyp, der mit denselben Methoden wie jeder andere Ressourcentyp erstellt, aktualisiert oder gelöscht werden kann. Weitere Informationen finden Sie unter Erstellen Sie eine Suchparameterressource im Speicher.

SearchParameter-Ressourcen in einem FHIR-Speicher werden erst wirksam, wenn sie mit der Methode configureSearch konfiguriert wurden. Mit dieser Methode wird eine Liste benutzerdefinierter Suchparameter aktiviert. Bei jedem Aufruf wird die vorherige Liste der Parameter ersetzt. Ein Vorgang mit langer Ausführungszeit wird für configureSearch ausgelöst, um alle relevanten Ressourcen im Speicher gemäß der neuen Suchkonfiguration neu zu indexieren. Alle neuen und aktualisierten Ressourcen nach dem Methodenaufruf werden gemäß der neuen Konfiguration indexiert. Alle Indexdaten für benutzerdefinierte Suchparameter, die nicht mehr in der Konfiguration enthalten sind, werden entfernt. Weitere Informationen zur Verwendung von configureSearch finden Sie unter Benutzerdefinierten Suchparameter für Ihren FHIR-Speicher aktivieren.

Der CapabilityStatement des Speichers, der über die fhir.capabilities-Methode abgerufen wird, listet sowohl Standard- als auch benutzerdefinierte Suchparameter auf. Suchparameter für eine Ressource finden Sie im rest.resource.searchParam-Feld.

Suchparameter-Ressource im FHIR-Speicher erstellen

In folgenden Beispielen wird gezeigt, wie Sie eine benutzerdefinierte Suchparameter-Ressource mit der projects.locations.datasets.fhirStores.fhir.create-Methode erstellen. Sie können auch die projects.locations.datasets.fhirStores.import-Methode verwenden.

Beschreibungen der relevanten Suchparameterfelder finden Sie unter Felder für Suchparameter-Ressourcen.

curl

Das folgende Beispiel zeigt eine POST-Anfrage mit curl.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
        \"resourceType\": \"SearchParameter\",
        \"url\": \"CANONICAL_URL\",
        \"base\": [\"RESOURCE_TYPE\"],
        \"code\": \"SEARCH_PARAMETER_CODE\",
        \"name\": \"SEARCH_PARAMETER_NAME\",
        \"type\": \"SEARCH_PARAMETER_TYPE\",
        \"expression\": \"SEARCH_PARAMETER_EXPRESSION\",
        \"status\": \"active\",
        \"description\": \"SEARCH_PARAMETER_DESCRIPTION\"
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"

Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

{
  "resourceType": "SearchParameter",
  "url": "CANONICAL_URL",
  "base": ["RESOURCE_TYPE"],
  "code": "SEARCH_PARAMETER_CODE",
  "name": "SEARCH_PARAMETER_NAME",
  "type": "SEARCH_PARAMETER_TYPE",
  "expression": "SEARCH_PARAMETER_EXPRESSION",
  "status": "active",
  "description": "SEARCH_PARAMETER_DESCRIPTION",
  "meta": {
    "lastUpdated": "LAST_UPDATED",
    "versionId": "VERSION_ID"
  },
}

PowerShell

Das folgende Beispiel zeigt eine POST-Anfrage mit Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

$SearchParameter = '{
    "resourceType": "SearchParameter",
    "url": "CANONICAL_URL",
    "base": ["RESOURCE_TYPE"],
    "code": "SEARCH_PARAMETER_CODE",
    "name": "SEARCH_PARAMETER_NAME",
    "type": "SEARCH_PARAMETER_TYPE",
    "expression": "SEARCH_PARAMETER_EXPRESSION",
    "status": "active",
    "description": "SEARCH_PARAMETER_DESCRIPTION"
}'

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $SearchParameter `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter" | ConvertTo-Json

Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

{
  "resourceType": "SearchParameter",
  "url": "CANONICAL_URL",
  "base": ["RESOURCE_TYPE"],
  "code": "SEARCH_PARAMETER_CODE",
  "name": "SEARCH_PARAMETER_NAME",
  "type": "SEARCH_PARAMETER_TYPE",
  "expression": "SEARCH_PARAMETER_EXPRESSION",
  "status": "active",
  "description": "SEARCH_PARAMETER_DESCRIPTION",
  "meta": {
    "lastUpdated": "LAST_UPDATED",
    "versionId": "VERSION_ID"
  },
}

Benutzerdefinierten Suchparameter für Ihren FHIR-Speicher aktivieren

Um einen oder mehrere benutzerdefinierte Suchparameter für Ihren FHIR-Speicher zu aktivieren, senden Sie eine POST-Anfrage an die [store base URL]:configureSearch-Methode und geben die kanonische URL für jeden zu aktivierenden Suchparameter an.

Kanonische URLs werden in einem der folgenden Formate angegeben:

  • uri: Wählt die größte version aus, die im Speicher für diesen URI verfügbar ist.
  • uri|version: Wählt eine bestimmte Version aus.

Beispiel: Wenn der Speicher die Versionen 1.0.0 und 1.0.1 für Suchparameter mit dem http://example.com/search-URI enthält, wählt die kanonische URL http://example.com/search|1.0.0 die 1.0.0-Version aus. Mit der kanonischen URL http://example.com/search wird die 1.0.1-Version ausgewählt.

Die Liste der für diese Methode bereitgestellten URLs ersetzt alle vorherigen Konfigurationen und entfernt benutzerdefinierte Suchparameter, die zuvor gültig waren. Die Konfiguration wird basierend auf dem Inhalt der SearchParameter-Ressourcen im Cache gespeichert, die zum Zeitpunkt des Aufrufs von configureSearch vorhanden waren. Wenn die SearchParameter-Ressourcen aktualisiert oder gelöscht werden, wird die Konfiguration erst aktualisiert, wenn configureSearch noch einmal aufgerufen wird.

Wenn der Methodenaufruf [store base URL]:configureSearch erfolgreich ist, ist der Rückgabewert der Name eines Vorgangs mit langer Ausführungszeit, um die Ressourcen im Speicher gemäß der neuen Konfiguration neu zu indexieren. Sie können den Status des Vorgangs mit langer Ausführungszeit mit der Methode operations.get aufrufen. Mit der Methode operations.cancel können Sie den Vorgang abbrechen. Der Status enthält einen Zähler, der angibt, wie viele Ressourcen erfolgreich neu indexiert wurden.

Suchvorgänge im Speicher funktionieren weiterhin normal, während der Vorgang mit langer Ausführungszeit ausgeführt wird, mit der Ausnahme, dass benutzerdefinierte Suchparameter, die von diesem Vorgang hinzugefügt oder geändert werden, Teilergebnisse zurückgeben. Der Vorgang kann zwar abgebrochen werden, zur teilweisen Indexierung der benutzerdefinierten Suchparameter führt. Es ist wichtig, einen vollständigen erfolgreichen Vorgang zur Neuindexierung abzuschließen, bevor Sie neu hinzugefügte oder geänderte Parameter für die Suche verwenden.

Wenn Fehler auftreten, werden sie in Cloud Logging angezeigt.

Die configureSearch-Methode kann auch mit der Option "validate_only": true verwendet werden, um die angegebenen Suchparameter zu validieren, ohne die Speicherkonfiguration zu ändern und ohne Daten neu zu indexieren.

In folgenden Beispielen wird gezeigt, wie Sie einen oder mehrere benutzerdefinierte Suchparameter für Ihren FHIR-Speicher mit der projects.locations.datasets.fhirStores.configureSearch-Methode aktivieren.

curl

Das folgende Beispiel zeigt eine POST-Anfrage mit curl.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
        \"canonicalUrls\": [\"CANONICAL_URL1\",\"CANONICAL_URL2\"],
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

Die Antwort enthält einen Vorgangsnamen. Mit der Methode Operation get können Sie den Status des Vorgangs verfolgen:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Wenn der lang andauernde Vorgang noch läuft, gibt der Server eine Antwort zurück. durch die Anzahl der FHIR-Ressourcen, deren Neuindexierung aussteht, im JSON-Format:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch",
    "createTime": "CREATE_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "pending": "PENDING_COUNT"
    }
  }
}

Wenn der Vorgang abgeschlossen ist, gibt der Server eine Antwort mit dem Status des Vorgangs im JSON-Format:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty",
  }
}

Wenn der LRO erfolgreich ist, enthält die Antwort die Anzahl der erfolgreich neu indexierten FHIR-Ressourcen und den Antworttyp google.protobuf.Empty.

PowerShell

Das folgende Beispiel zeigt eine POST-Anfrage mit Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

$configureSearch = '{
  "canonical_urls": [
    "CANONICAL_URL1",
    "CANONICAL_URL2"
  ]
}'

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $configureSearch `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

Die Antwort enthält einen Vorgangsnamen. Mit der Methode Operation get können Sie den Status des Vorgangs verfolgen:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Wenn der lang andauernde Vorgang noch läuft, gibt der Server eine Antwort zurück. durch die Anzahl der FHIR-Ressourcen, deren Neuindexierung aussteht, im JSON-Format:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch",
    "createTime": "CREATE_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "pending": "PENDING_COUNT"
    }
  }
}

Wenn der Vorgang abgeschlossen ist, gibt der Server eine Antwort mit dem Status des Vorgangs im JSON-Format:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty",
  }
}

Wenn der LRO erfolgreich ist, enthält die Antwort die Anzahl der erfolgreich neu indexierten FHIR-Ressourcen und den Antworttyp google.protobuf.Empty.

Sie können mit einem benutzerdefinierten Suchparameter ganz normal wie in jedem anderen Suchvorgang suchen. Verwenden Sie den Wert code aus der Suchparameter-Ressource als key für die Suchanfrage. Weitere Informationen finden Sie unter Nach FHIR-Ressourcen suchen.

Felder für Suchparameter-Ressourcen

Im folgenden Abschnitt werden die Felder von SearchParameter beschrieben. Ressource, die für benutzerdefinierte Suchen relevant sind. Diese Felder sind sowohl im STU3- und R4-Versionen von FHIR.

uri und version

Das erforderliche Feld uri und das optionale Feld version definieren die kanonische URL für die Suchparameter-Ressource. Die Die Kombination aus uri und version muss innerhalb des FHIR-Speichers eindeutig sein.

Die kanonische URL ist die URL, die im configureSearch-Aufruf verwendet wird.

name, description und status

Die Felder name, description und status sind Pflichtfelder, enthalten aber keine funktionellen Effekts.

base

Im base-Feld sind die FHIR-Ressourcentypen aufgelistet, für die diese Suche gilt.

Wenn es mehr als einen Typ gibt, muss das Feld expression für jeden Typ eine Klausel enthalten. Es macht keinen Unterschied, ob Sie einen Parameter für zwei Typen oder einen Parameter für jeden Typ definieren. Wenn Sie einen Parameter für mehrere Ressourcentypen definieren, werden die Definitionen kompakter.

code

Das Feld code definiert den Schlüssel, der in einer FHIR-Suchanfrage verwendet werden soll. Beispiel: Wenn code als payment-type und base als Claim definiert ist, wäre Claim?payment-type=ABC eine Suchanfrage mit diesem Parameter.

Das Feld code darf nicht denselben Wert wie jeder andere Standard- oder benutzerdefinierte Suchparameter mit demselben Ressourcentyp haben. Die Standardsuchparameter können nicht mit benutzerdefinierten Suchparametern neu definiert oder geändert werden. Die Methode configureSearch lehnt doppelte Suchparameter ab.

Der Wert des code-Felds muss folgende Anforderungen erfüllen:

  • Muss mit einem Buchstaben beginnen
  • Darf nicht länger als 64 Zeichen sein
  • Er darf nur Folgendes enthalten:
    • Alphanumerische Zeichen
    • Bindestrich -
    • Unterstrich _

Die FHIR-Standardkonvention für das code-Feld ist kleingeschrieben und mit Bindestrichen.

type

Das Feld type definiert den Suchparametertyp. Der Suchparametertyp bestimmt die Semantik der Suchbedingungen, wie in der FHIR-Suchspezifikation definiert. Dieser Wert von type muss mit dem Datentyp des Felds kompatibel sein, das im Feld expression angegeben ist. Andernfalls lehnt configureSearch den Vorgang ab. den benutzerdefinierten Suchparameter hinzu.

Das type-Feld muss einer der folgenden Werte sein:

  • number
  • date
  • string
  • token
  • reference
  • quantity
  • uri

Die Typen composite und special werden nicht unterstützt.

expression

Das expression-Feld definiert, welche Felder oder Erweiterungen die Suchparameterabfragen abfragen. In diesem Feld wird ein limitiertes Set der Syntax und der Funktionen von FHIRPath verwendet.

Feldsyntax

Das Feld expression ist als Pfad definiert, der mit dem Ressourcentyp beginnt, gefolgt von einem oder mehreren durch . getrennten Feldern, z. B. Patient.contact.name.given. Die Feldstruktur von FHIR-Daten finden Sie in den FHIR-Ressourcen. und FHIR-Datentypen.

Mehrere Klauseln

Das Feld expression kann mehrere Klauseln enthalten, die durch | getrennt sind. In diesem Fall stimmt der Suchparameter überein, wenn eine der Klauseln mit der Ressource übereinstimmt. Für Beispiel für einen Suchparameter mit dem Ausdruck Patient.name.given | Patient.name.family mit einem dieser beiden Felder übereinstimmt. Verwenden Sie mehrere Klauseln, wenn in base mehrere Ressourcentypen angegeben sind. Beispiel: Patient.name.given | Practitioner.name.given für einen Suchparameter, der sowohl für Patient als auch für Practitioner gilt.

.as([data type])

Verwenden Sie die Funktion .as([data type]), wenn ein Feld mehr als einen potenziellen Datentyp hat. Das Feld Observation.value kann beispielsweise viele verschiedene Typen enthalten, z. B. Quantity und String, die mit verschiedenen Suchtypen funktionieren. Sie können diese Suchtypen mit Observation.value.as(Quantity) oder Observation.value.as(String) auswählen.

Erweiterungen auswählen

Sie können Erweiterungen mit der .extension([canonical url])-Funktion auswählen. Da Erweiterungen ein value-Feld umfassen, das einen beliebigen Datentyp enthalten kann, ist der vollständige Pfad als .extension([canonical url]).value.as([data type]) definiert. Komplexe Erweiterungen können mehrere .extension()-Komponenten verwenden, z. B. Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept).

Sie können auch die .extension.where(url='[canonical url]')-Funktion zum Auswählen von Erweiterungen verwenden. Dies ist der einzige Kontext, in dem die where()-Funktion zulässig ist.

Es werden keine anderen FHIRPath-Funktionen unterstützt.

target

Wenn das Feld type als reference definiert ist, muss das Feld target Folgendes enthalten: Ein oder mehrere FHIR-Ressourcentypen, die definieren, welche Ressourcentypen das Ziel sein können dieser Referenzsuche.

Wenn das Feld Patient.generalPractitioner beispielsweise Verweise auf Practitioner, PractitionerRole und Organization zulässt, kann ein Suchparameter Verweise auf Practitioner, PractitionerRole oder Organization abgleichen. Wenn Sie alle Zieltypen von Referenzen abgleichen möchten, fügen Sie alle Typen in das Feld target ein.

modifier, comparator, multipleOr, multipleAnd und chain

modifier, comparator, multipleOr, multipleAnd und chain-Felder werden ignoriert. Die Optionen und Funktionen, die mit einem benutzerdefinierten mit denen übereinstimmen, die vom FHIR-Speicher auf einem Standardsuchparameters desselben Typs an.

Wenn Sie Suchparameter implementieren, die aus einem FHIR-Implementierungsleitfaden abgerufen wurden, importieren Sie die SearchParameter-Ressourcen aus der JSON-Datei Ihres Implementierungsleitfadens mit einer der folgenden Methoden in den FHIR-Speicher:

In einigen Fällen müssen Sie einen veröffentlichten Suchparameter für die Cloud Healthcare API unterstützt. Nicht konvertierte Suchparameter werden von der Methode configureSearch abgelehnt. Für Suchparameter aus den Implementierungsleitfäden gelten die folgenden Einschränkungen:

  • Wenn der Suchparameter mit Parametern in der FHIR-Basisspezifikation identisch ist, werden die doppelten Suchparameter von der Methode configureSearch abgelehnt. Omit solche Duplikate beim Aufrufen von configureSearch. Weitere Informationen finden Sie unter code.

  • Wenn der Suchparameter nur einen xpath-Ausdruck enthält, konvertieren Sie den Ausdruck in einen entsprechenden FHIRPath-Ausdruck und verwenden Sie ihn im Feld expression. Weitere Informationen finden Sie unter expression.

  • Die Suchparametertypen composite und special werden nicht unterstützt.

  • Die alternative Syntax für die Typumwandlung ([field] as [data type]) wird nicht unterstützt. Konvertieren Sie in das unterstützten Äquivalent [field].as([data type]). Weitere Informationen finden Sie unter .as([data type]).

  • Die [reference field].where(resolve() is [resource type])-Konvention zum Einschränken des Typs einer referenzierten Ressource wird nicht unterstützt. Entfernen Sie die where()-Klausel und speichern Sie den referenzierten Ressourcentyp stattdessen im SearchParameter.target-Feld. Weitere Informationen finden Sie unter target.

  • Einige Implementierungsleitfäden verwenden Ausdrücke für Erweiterungen, die einige der für den FHIR-Speicher der Cloud Healthcare API erforderlichen Pfadkomponenten weglassen. Beispiel: Patient.extension('url') muss in Patient.extension('url').value.as([data type]) und Patient.extension('url').extension.value in Patient.extension('url').extension('url2').value.as([data type]) geändert werden.

Beispiele

Benutzerdefinierte Suche für die Suche in einem Erweiterungsfeld verwenden

Folgende Schritte zeigen ein Beispiel für die Suche nach Text in der mothersMaidenName-Erweiterung in Patientenressourcen.

  1. Erstellen Sie eine Beispielressource für Patienten:

    curl

    Das folgende Beispiel zeigt, wie Sie eine Patientenressource erstellen, indem Sie eine POST-Anfrage mit curl senden. Diese Patientenressource hat die Erweiterung mothersMaidenName auf Marca festgelegt.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          \"name\": [
              {
                  \"use\": \"official\",
                  \"family\": \"Smith\",
                  \"given\": [
                      \"Darcy\"
                  ]
              }
          ],
          \"gender\": \"female\",
          \"birthDate\": \"1970-01-01\",
          \"resourceType\": \"Patient\",
          \"extension\": [
              {
                  \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName\",
                  \"valueString\": \"Marca\"
              }
          ]
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort wie diese im JSON-Format zurück:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
            "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
            "valueString": "Marca"
        }
      ]
    }
    

    PowerShell

    Das folgende Beispiel zeigt, wie Sie eine Patientenressource erstellen, indem Sie eine POST-Anfrage mit Windows PowerShell stellen. Bei dieser Patientenressource ist die mothersMaidenName-Erweiterung auf Marca festgelegt.

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $Patient = '{
        "name": [
            {
                "use": "official",
                "family": "Smith",
                "given": [
                    "Darcy"
                ]
            }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient",
        "extension": [
            {
                "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
                "valueString": "Marca"
            }
        ]
    }'
    
    Invoke-RestMethod `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/fhir+json; charset=utf-8" `
      -Body $Patient `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json

    Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort wie diese im JSON-Format zurück:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
            "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
            "valueString": "Marca"
        }
      ]
    }
    

  2. Erstellen Sie eine benutzerdefinierte Suchparameter-Ressource:

    curl

    Das folgende Beispiel zeigt, wie Sie über eine POST-Anfrage mit curl die benutzerdefinierte Suchparameter-Ressource für die mothersMaidenName-Erweiterung erstellen.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"resourceType\": \"SearchParameter\",
            \"url\": \"http://example.com/SearchParameter/patient-mothersMaidenName\",
            \"base\": [\"Patient\"],
            \"code\": \"mothers-maiden-name\",
            \"name\": \"mothers-maiden-name\",
            \"type\": \"string\",
            \"expression\": \"Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)\",
            \"status\": \"active\",
            \"description\": \"search on mother's maiden name\"
      }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    { 
     "resourceType": "SearchParameter",
     "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
     "base": ["Patient"],
     "code": "mothers-maiden-name",
     "name": "mothers-maiden-name",
     "type": "string",
     "expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
     "status": "active",
     "description": "search on mother's maiden name",
     "meta": {
      "lastUpdated": "2020-01-01T00:00:00+00:00",
      "versionId": "VERSION_ID"
     },
    }

    PowerShell

    Im Folgenden wird gezeigt, wie Sie die benutzerdefinierte Suchparameter-Ressource für die Erweiterung "mothersMaidenName" erstellen. Stellen Sie dazu eine "POST"-Anfrage mit Windows PowerShell.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $SearchParameter = '{
        "resourceType": "SearchParameter",
        "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
        "base": ["Patient"],
        "code": "mothers-maiden-name",
        "name": "mothers-maiden-name",
        "type": "string",
        "expression": "Patient.extension(''http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName'').value.as(String)",
        "status": "active",
        "description": "search on mother''s maiden name"
    }'
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $SearchParameter `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    { 
     "resourceType": "SearchParameter",
     "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
     "base": ["Patient"],
     "code": "mothers-maiden-name",
     "name": "mothers-maiden-name",
     "type": "string",
     "expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
     "status": "active",
     "description": "search on mother's maiden name",
     "meta": {
       "lastUpdated": "2020-01-01T00:00:00+00:00",
       "versionId": "VERSION_ID"
     },
    }
    Wenn Sie das Feld expression auf einen anderen Datentyp ausrichten möchten, verwenden Sie die Funktion .as([data type]). Um beispielsweise den Suchausdruck für eine booleschen Wert verwenden, verwenden Sie .value.as(Boolean). Weitere Informationen finden Sie unter .as([data type]).

  3. Aktivieren Sie den Suchparameter:

    curl

    Um den benutzerdefinierten Suchparameter zu aktivieren, stellen Sie eine POST-Anfrage und geben die kanonische URL für jeden zu aktivierenden Suchparameter an.

    Das folgende Beispiel zeigt eine POST-Anfrage mit curl.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-mothersMaidenName\"],
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

    PowerShell

    Um den benutzerdefinierten Suchparameter zu aktivieren, stellen Sie eine POST-Anfrage und geben die kanonische URL für jeden zu aktivierenden Suchparameter an.

    Das folgende Beispiel zeigt eine POST-Anfrage mit Windows PowerShell.

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $configureSearch = '{
      "canonicalUrls": "http://example.com/SearchParameter/patient-mothersMaidenName"
    }' `
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $configureSearch `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

  4. Führen Sie die Suche mit dem benutzerdefinierten Suchparameter aus:

    curl

    Das folgende Beispiel zeigt, wie Sie über eine GET-Anfrage mit curl nach Patientenressourcen für den String Marca in der mothersMaidenName-Erweiterung suchen.

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort als FHIR-Bundle im JSON-Format zurück. Bundle.type ist searchset und die Suchergebnisse sind Einträge im Array Bundle.entry. In diesem Beispiel gibt die Anfrage eine einzelne Patientenressource mit den Daten in dieser Ressource zurück:

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                  "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
                  "valueString": "Marca"
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    Das folgende Beispiel zeigt, wie Sie über eine GET-Anfrage mit Windows PowerShell nach Patientenressourcen für den String "Marca" in der Erweiterung "mothersMaidenName" suchen.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca" | ConvertTo-Json

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort als FHIR-Bundle im JSON-Format zurück. Bundle.type ist searchset und die Suchergebnisse sind Einträge im Array Bundle.entry. In diesem Beispiel gibt die Anfrage eine einzelne Patientenressource mit den Daten in dieser Ressource zurück:

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                  "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
                  "valueString": "Marca"
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

Benutzerdefinierte Suche für die Suche in einem Erweiterungsfeld mit zwei Ebenen verwenden

In den folgenden Schritten wird gezeigt, wie Sie in einer Patientenressource nach dem Code in der us-core-ethnicity-Erweiterung suchen.

  1. Erstellen Sie eine Beispielressource für Patienten:

    curl

    Das folgende Beispiel zeigt, wie Sie eine Patientenressource erstellen, indem Sie eine POST-Anfrage mit curl senden. Für diese Patientenressource ist die Erweiterung us-core-ethnicity festgelegt.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          \"name\": [
              {
                  \"use\": \"official\",
                  \"family\": \"Smith\",
                  \"given\": [
                      \"Darcy\"
                  ]
              }
          ],
          \"gender\": \"female\",
          \"birthDate\": \"1970-01-01\",
          \"resourceType\": \"Patient\",
          \"extension\": [
              {
                \"url\": \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity\",
                \"extension\": [
                  {
                    \"url\" : \"ombCategory\",
                    \"valueCoding\" : {
                      \"system\" : \"urn:oid:2.16.840.1.113883.6.238\",
                      \"code\" : \"2028-9\",
                      \"display\" : \"Asian\"
                    }
                  }
                ]
              }
          ]
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort wie diese im JSON-Format zurück:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
          "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
          "extension": [
            {
              "url" : "ombCategory",
              "valueCoding" : {
                "system" : "urn:oid:2.16.840.1.113883.6.238",
                "code" : "2028-9",
                "display" : "Asian"
              }
            }
          ]
        }
      ]
    }
    

    PowerShell

    Das folgende Beispiel zeigt, wie Sie eine Patientenressource erstellen, indem Sie eine POST erstellen mit Windows PowerShell. Diese Patientenressource enthält die Erweiterungssatz „us-core-ethnicity“.

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $Patient = '{
        "name": [
            {
                "use": "official",
                "family": "Smith",
                "given": [
                    "Darcy"
                ]
            }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient",
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
            "extension": [
              {
                "url" : "ombCategory",
                "valueCoding" : {
                  "system" : "urn:oid:2.16.840.1.113883.6.238",
                  "code" : "2028-9",
                  "display" : "Asian"
                }
              }
            ]
          }
        ]
    }'
    
    Invoke-RestMethod `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/fhir+json; charset=utf-8" `
      -Body $Patient `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json

    Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort wie diese im JSON-Format zurück:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
          "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
          "extension": [
            {
              "url" : "ombCategory",
              "valueCoding" : {
                "system" : "urn:oid:2.16.840.1.113883.6.238",
                "code" : "2028-9",
                "display" : "Asian"
              }
            }
          ]
        }
      ]
    }
    

  2. Erstellen Sie eine benutzerdefinierte Suchparameter-Ressource:

    curl

    Das folgende Beispiel zeigt, wie Sie über eine POST-Anfrage mit curl die benutzerdefinierte Suchparameter-Ressource für die us-core-ethnicity-Erweiterung erstellen.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"resourceType\": \"SearchParameter\",
            \"url\": \"http://example.com/SearchParameter/patient-us-core-ethnicity\",
            \"base\": [\"Patient\"],
            \"code\": \"ethnicity\",
            \"name\": \"ethnicity\",
            \"type\": \"token\",
            \"expression\": \"Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)\",
            \"status\": \"active\",
            \"description\": \"search on the ombCategory of a patient.\"
      }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    {
      "resourceType": "SearchParameter",
      "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
      "base": ["Patient"],
      "code": "ethnicity",
      "name": "ethnicity",
      "type": "token",
      "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)",
      "status": "active",
      "description": "search on the ombCategory of a patient.",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
    }
    
    

    PowerShell

    Im folgenden Beispiel wird gezeigt, wie Sie die benutzerdefinierte Suchparameter-Ressource für die Erweiterung "mothersMaidenName" erstellen, indem Sie eine "POST"-Anfrage mit Windows PowerShell senden.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $SearchParameter = '{
        "resourceType": "SearchParameter",
        "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
        "base": ["Patient"],
        "code": "ethnicity",
        "name": "ethnicity",
        "type": "token",
        "expression": "Patient.extension(''http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'').extension(''ombCategory'').value.as(Coding)",
        "status": "active",
        "description": "search on the ombCategory of a patient."
    }'
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $SearchParameter `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    {
      "resourceType": "SearchParameter",
      "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
      "base": ["Patient"],
      "code": "ethnicity",
      "name": "ethnicity",
      "type": "token",
      "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)",
      "status": "active",
      "description": "search on the ombCategory of a patient.",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
    }
    
    

  3. Aktivieren Sie den Suchparameter:

    curl

    Um den benutzerdefinierten Suchparameter zu aktivieren, stellen Sie eine POST-Anfrage und geben die kanonische URL für jeden zu aktivierenden Suchparameter an.

    Das folgende Beispiel zeigt eine POST-Anfrage mit curl.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-us-core-ethnicity\"],
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

    PowerShell

    Um den benutzerdefinierten Suchparameter zu aktivieren, stellen Sie eine POST-Anfrage und geben die kanonische URL für jeden zu aktivierenden Suchparameter an.

    Das folgende Beispiel zeigt eine POST-Anfrage mit Windows PowerShell.

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $configureSearch = '{
      "canonicalUrls": "http://example.com/SearchParameter/patient-us-core-ethnicity"
    }' `
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $configureSearch `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort im JSON-Format zurück:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

  4. Führen Sie die Suche mit dem benutzerdefinierten Suchparameter aus:

    curl

    Das folgende Beispiel zeigt, wie Sie in Patientenressourcen nach dem Code urn:oid:2.16.840.1.113883.6.238|2028-9 in der Erweiterung us-core-ethnicity suchen, indem Sie über curl eine GET-Anfrage senden.

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort als FHIR-Bundle im JSON-Format zurück. Bundle.type ist searchset und die Suchergebnisse sind Einträge im Array Bundle.entry. In diesem Beispiel gibt die Anfrage eine einzelne Patientenressource mit den Daten in dieser Ressource zurück:

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
                "extension": [
                  {
                    "url" : "ombCategory",
                    "valueCoding" : {
                      "system" : "urn:oid:2.16.840.1.113883.6.238",
                      "code" : "2028-9",
                      "display" : "Asian"
                    }
                  }
                ]
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    Das folgende Beispiel zeigt, wie Sie in Patientenressourcen nach dem Code "urn:oid:2.16.840.1.113883.6.238|2028-9" in der Erweiterung "us-core-ethnicity" suchen, indem Sie eine GET-Anfrage mit Windows PowerShell senden.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9 | ConvertTo-Json

    Wenn die Anfrage erfolgreich ist, gibt der Server die Antwort als FHIR-Bundle im JSON-Format zurück. Bundle.type ist searchset und die Suchergebnisse sind Einträge im Array Bundle.entry. In diesem Beispiel gibt die Anfrage eine einzelne Patientenressource mit den Daten in dieser Ressource zurück:

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
                "extension": [
                  {
                    "url" : "ombCategory",
                    "valueCoding" : {
                      "system" : "urn:oid:2.16.840.1.113883.6.238",
                      "code" : "2028-9",
                      "display" : "Asian"
                    }
                  }
                ]
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }