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.

In vielen FHIR-Implementierungsleitfäden werden Suchparameter definiert, die Sie in Ihren Suchvorgängen 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

Zum Aktivieren einer benutzerdefinierten Suche für Ihren FHIR-Speicher 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 Suchparameterressource im Speicher erstellen.

SearchParameter-Ressourcen in einem FHIR-Speicher werden erst wirksam, wenn sie mit der Methode configureSearch konfiguriert wurden. Mit dieser Methode wird eine Liste mit benutzerdefinierten Suchparametern 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 den Inhalten der SearchParameter-Ressourcen, die zum Zeitpunkt des configureSearch-Aufrufs vorhanden waren, im Cache gespeichert. 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. Das Abbrechen des Vorgangs ist sicher, führt jedoch zu einer teilweisen Indexierung der benutzerdefinierten Suchparameter. 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. Sie können den Status des Vorgangs mit der Methode Operation get 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 ausgeführt wird, gibt der Server eine Antwort mit der Anzahl der FHIR-Ressourcen, deren Neuindexierung aussteht, im JSON-Format zurück:

{
  "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 zurück:

{
  "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. Sie können den Status des Vorgangs mit der Methode Operation get 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 ausgeführt wird, gibt der Server eine Antwort mit der Anzahl der FHIR-Ressourcen, deren Neuindexierung aussteht, im JSON-Format zurück:

{
  "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 zurück:

{
  "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 der SearchParameter beschrieben, die für benutzerdefinierte Suchvorgänge relevant sind. Diese Felder sind sowohl in der STU3- als auch in der R4-Version von FHIR verfügbar.

uri und version

Das erforderliche Feld uri und das optionale Feld version definieren die kanonische URL für die Suchparameter-Ressource. Die Kombination aus uri und version darf innerhalb des FHIR-Speichers nur einmal vorkommen.

Die kanonische URL ist die im configureSearch-Aufruf verwendete URL.

name, description und status

Die Felder name, description und status sind erforderlich, haben aber keine funktionale Wirkung.

base

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

Wenn mehrere Typen vorhanden sind, 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 mithilfe von benutzerdefinierten Suchparametern neu definiert oder geändert werden. Mit der Methode configureSearch werden doppelte Suchparameter abgelehnt.

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

  • Muss mit einem Buchstaben beginnen
  • Darf nicht länger als 64 Zeichen sein
  • 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. Ist dies nicht der Fall, lehnt configureSearch den benutzerdefinierten Suchparameter ab.

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. Ein Suchparameter mit dem Ausdruck Patient.name.given | Patient.name.family stimmt beispielsweise mit einem dieser beiden Felder überein. 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 einen oder mehrere FHIR-Ressourcentypen enthalten, die definieren, welche Ressourcentypen das Ziel dieser Referenzsuche sein können.

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 du alle Zieltypen von Referenzen abgleichen möchtest, füge alle Typen im Feld target ein.

modifier, comparator, multipleOr, multipleAnd und chain

Die Felder modifier, comparator, multipleOr, multipleAnd und chain werden ignoriert. Die mit einem benutzerdefinierten Suchparameter verfügbaren Optionen und Funktionen sind die gleichen, die vom FHIR-Speicher für einen Standardsuchparameter desselben Typs unterstützt werden.

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 konvertieren, damit die Cloud Healthcare API ihn 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 den Parametern in der Basis-FHIR-Spezifikation identisch ist, lehnt die Methode configureSearch die doppelten Suchparameter ab. Lassen Sie solche Duplikate beim Aufrufen von configureSearch weg. 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]) geändert werden und Patient.extension('url').extension.value muss 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 den Patienten:

    curl

    Das folgende Beispiel zeigt, wie Sie eine Patientenressource erstellen. Dazu stellen Sie eine POST-Anfrage mit curl. Für diese Patientenressource ist die Erweiterung mothersMaidenName auf Marca gesetzt.

    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 durch Senden einer POST-Anfrage mit Windows PowerShell erstellen. Für diese Patientenressource ist die Erweiterung mothersMaidenName 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"
     },
    }
    Verwenden Sie die Funktion .as([data type]), um ein Targeting auf einen anderen Datentyp im Feld expression vorzunehmen. Wenn Sie beispielsweise den Suchausdruck für einen booleschen Wert angeben möchten, verwenden Sie .value.as(Boolean). Weitere Informationen finden Sie unter .as([data type]).

  3. Suchparameter aktivieren:

    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 in einem Erweiterungsfeld mit zwei Ebenen verwenden

Die folgenden Schritte zeigen, wie Sie in einer Patientenressource innerhalb der Erweiterung us-core-ethnicity nach dem Code suchen.

  1. Erstellen Sie eine Beispielressource für den Patienten:

    curl

    Das folgende Beispiel zeigt, wie Sie eine Patientenressource erstellen. Dazu stellen Sie eine POST-Anfrage mit curl. 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 durch Senden einer POST-Anfrage mit Windows PowerShell erstellen. Für diese Patientenressource ist die Erweiterung us-core-ethnicity 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/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. Suchparameter aktivieren:

    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"
    }