Créer des recherches FHIR personnalisées

Cette page explique comment configurer un datastore FHIR pour accepter les paramètres de recherche personnalisés pour les champs et les extensions qui ne sont pas couverts par les paramètres de recherche standard FHIR.

Les paramètres de recherche personnalisés peuvent s'avérer utiles dans les cas suivants :

  • Vous devez rechercher un champ dans une ressource FHIR, mais il n'existe pas de paramètre de recherche pris en charge pour ce champ.
  • Vous devez effectuer une recherche dans les extensions ajoutées au modèle de données FHIR.

Présentation

Par défaut : la rechercher des ressources FHIR accepte les paramètres de recherche standards définis dans la spécification FHIR avec des exclusions décrites dans la déclaration de capacité FHIR ou la déclaration de conformité FHIR.

Vous pouvez créer un ou plusieurs paramètres de recherche personnalisés et configurer le datastore FHIR pour qu'il les accepte dans les requêtes via la méthode search. Les paramètres de recherche personnalisés sont utiles dans les situations suivantes :

  • Pour effectuer une recherche dans des champs non couverts par les paramètres de recherche standards
  • Pour rechercher dans les extensions du modèle de données FHIR

De nombreux guides d'implémentation FHIR définissent des paramètres de recherche que vous pouvez utiliser dans vos recherches.

Les paramètres de recherche personnalisés sont compatibles avec le même comportement de recherche, y compris les fonctionnalités de recherche FHIR avancées, que les paramètres de recherche standards, par exemple :

  • modificateurs
  • _include et _revinclude
  • recherche en chaîne
  • _sort

Pour activer une recherche personnalisée pour votre magasin FHIR, vous devez d'abord créer une ou plusieurs ressources SearchParameter qui définissent le comportement de recherche. SearchParameter est un type de ressource FHIR standard qui peut être créé, mis à jour ou supprimé à l'aide des mêmes méthodes que tout autre type de ressource. Consultez la section Créer une ressource de paramètre de recherche dans le magasin.

Les ressources SearchParameter d'un magasin FHIR ne prennent effet qu'une fois configurées à l'aide de la méthode configureSearch. Cette méthode génère une liste de paramètres de recherche personnalisés. Chaque fois que la méthode est appelée, elle remplace la liste de paramètres précédente. Une opération de longue durée est déclenchée pour que configureSearch puisse réindexer toutes les ressources pertinentes du magasin selon la nouvelle configuration de recherche. Toutes les ressources nouvelles et mises à jour après l'appel de méthode sont indexées selon la nouvelle configuration. Toutes les données d'index correspondant à des paramètres de recherche personnalisés qui ne figurent plus dans la configuration sont supprimées. Pour plus d'informations sur l'utilisation de configureSearch, consultez la section Activer le paramètre de recherche personnalisée pour votre magasin FHIR.

L'élément CapabilityStatement du magasin, récupéré via la méthode fhir.capabilities, répertorie les paramètres de recherche standards et personnalisés. Les paramètres de recherche d'une ressource se trouvent dans le champ rest.resource.searchParam.

Créer une ressource SearchParameter dans le magasin FHIR

Les exemples suivants montrent comment créer une ressource de paramètre de recherche personnalisée à l'aide de la méthode projects.locations.datasets.fhirStores.fhir.create. Vous pouvez également utiliser la méthode projects.locations.datasets.fhirStores.import.

Pour obtenir une description des champs de recherche pertinents, consultez la section Champs de la ressource SearchParameter.

curl

L'exemple suivant montre une requête POST utilisant 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"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

L'exemple suivant montre une requête POST utilisant 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

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

Activez le paramètre de recherche personnalisée pour votre datastore FHIR.

Pour activer un ou plusieurs paramètres de recherche personnalisés pour votre datastore FHIR, envoyez une requête POST à la méthode [store base URL]:configureSearch et spécifiez l'URL canonique de chaque paramètre de recherche que vous activez.

Les URL canoniques sont spécifiées dans l'un des formats suivants :

  • uri : sélectionne l'élément version le plus grand disponible dans le datastore pour cet URI.
  • uri|version : sélectionne une version spécifique.

Par exemple, si le magasin contient les versions 1.0.0 et 1.0.1 pour les paramètres de recherche avec l'URI http://example.com/search, l'URL canonique http://example.com/search|1.0.0 sélectionne la version 1.0.0. L'URL canonique http://example.com/search sélectionne la version 1.0.1.

La liste des URL fournies à cette méthode remplace toutes les configurations précédentes et supprime les paramètres de recherche personnalisés qui étaient auparavant en vigueur. La configuration est mise en cache en fonction du contenu des ressources SearchParameter qui existaient au moment de l'appel de configureSearch. La configuration ne sera pas mise à jour si les ressources SearchParameter sont mises à jour ou supprimées tant que configureSearch n'est pas appelé à nouveau.

Lorsque l'appel de la méthode [store base URL]:configureSearch aboutit, la valeur renvoyée est le nom d'une opération de longue durée qui réindexe les ressources du magasin en fonction de la nouvelle configuration. Vous pouvez afficher l'état de l'opération de longue durée à l'aide de la méthode operations.get, ou l'annuler à l'aide de la méthode operations.cancel. L'état inclut un compteur indiquant le nombre de ressources qui ont bien été réindexées.

Les recherches sur le datastore continuent de fonctionner normalement pendant l'exécution de longue durée, à l'exception des paramètres de recherche personnalisés qui sont ajoutés ou modifiés par cette opération et renvoient des résultats partiels. L'annulation de l'opération est sûre, mais elle entraîne l'indexation partielle des paramètres de recherche personnalisée. Il est important de terminer entièrement une opération de réindexation avant d'effectuer une recherche avec des paramètres nouvellement ajoutés ou modifiés.

Si des erreurs se produisent, elles s'affichent dans Cloud Logging.

La méthode configureSearch peut également être utilisée avec l'option "validate_only": true pour valider les paramètres de recherche spécifiés sans modifier la configuration du datastore et sans réindexer des données.

Les exemples suivants montrent comment activer un ou plusieurs paramètres de recherche personnalisée pour votre datastore FHIR à l'aide de la méthode projects.locations.datasets.fhirStores.configureSearch.

curl

L'exemple suivant montre une requête POST utilisant 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"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

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"

Si l'opération de longue durée est toujours en cours d'exécution, le serveur renvoie une réponse au format JSON avec le nombre de ressources FHIR en attente de réindexation:

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

Une fois l'opération de longue durée, le serveur renvoie une réponse indiquant l'état de l'opération au format JSON:

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

Si l'opération de longue durée réussit, la réponse contient le nombre de ressources FHIR qui ont bien été réindexées et le type de réponse google.protobuf.Empty.

PowerShell

L'exemple suivant montre une requête POST utilisant 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"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

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"

Si l'opération de longue durée est toujours en cours d'exécution, le serveur renvoie une réponse au format JSON avec le nombre de ressources FHIR en attente de réindexation:

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

Une fois l'opération de longue durée, le serveur renvoie une réponse indiquant l'état de l'opération au format JSON:

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

Si l'opération de longue durée réussit, la réponse contient le nombre de ressources FHIR qui ont bien été réindexées et le type de réponse google.protobuf.Empty.

Vous pouvez effectuer une recherche à l'aide d'une ressource SearchParameter personnalisée comme vous le feriez pour toute autre recherche. Utilisez la valeur code de la ressource de paramètre de recherche en tant que key pour la requête de recherche. Pour en savoir plus, consultez la section Rechercher des ressources FHIR.

Champs de la ressource SearchParameter

La section suivante décrit les champs de la ressource SearchParameter qui sont pertinents pour les recherches personnalisées. Ces champs sont disponibles dans les versions STU3 et R4 de FHIR.

uri et version

Le champ uri, obligatoire, et les champs version, facultatifs, définissent l'URL canonique de la ressource SearchParameter. La combinaison de uri et version doit être unique dans le magasin FHIR.

L'URL canonique est l'URL utilisée dans l'appel configureSearch.

name, description et status

Les champs name, description et status sont obligatoires, mais n'ont aucun effet fonctionnel.

base

Le champ base répertorie les types de ressources FHIR auxquels s'applique cette recherche.

S'il existe plusieurs types, le champ expression doit inclure une clause pour chaque type. Il n'y a aucune différence entre définir un paramètre sur deux types ou définir un paramètre pour chaque type. Définir un paramètre pour plusieurs types de ressources rend les définitions plus compactes.

code

Le champ code définit la clé à utiliser dans une requête de recherche FHIR. Par exemple, si le champ code est défini sur payment-type et le paramètre base sur Claim, la requête de recherche utilisant ce paramètre est Claim?payment-type=ABC.

Le champ code ne peut pas avoir la même valeur qu'un autre paramètre de recherche standard ou personnalisé sur le même type de ressource. Les paramètres de recherche standards ne peuvent pas être redéfinis, ni modifiés à l'aide de paramètres de recherche personnalisés. La méthode configureSearch rejette les paramètres de recherche en double.

La valeur du champ code doit répondre aux exigences suivantes :

  • Le nom doit commencer par une lettre
  • Il peut pas comporter plus de 64 caractères.
  • Il doit contenir uniquement les éléments suivants :
    • Caractères alphanumériques
    • Trait d'union -
    • Trait de soulignement _

La convention FHIR standard pour le champ code exige des minuscules avec des tirets.

type

Le champ type définit le type de paramètre de recherche. Le type de paramètre de recherche détermine la sémantique des conditions de recherche, telle qu'elle est définie dans la spécification de recherche FHIR. Cette valeur de type doit être compatible avec le type de données du champ spécifié par le champ expression. Si ce n'est pas le cas, configureSearch rejette le paramètre de recherche personnalisée.

Le champ type doit être défini comme l'un des éléments suivants :

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

Les types composite et special ne sont pas acceptés.

expression

Le champ expression définit quels champs ou extensions sont interrogés par le paramètre de recherche. Ce champ utilise un ensemble limité de la syntaxe et des fonctions de FHIRPath.

Syntaxe des champs

Le champ expression est défini comme un chemin commençant par le type de ressource et suivi d'un ou plusieurs champs séparés par ., par exemple Patient.contact.name.given. La structure des champs des données FHIR est disponible dans les ressources FHIR et les types de données FHIR.

Clauses multiples

Le champ expression peut contenir plusieurs clauses séparées par |. Dans ce cas, le paramètre de recherche présente une correspondance si l'une des clauses correspond à la ressource. Par exemple, un paramètre de recherche avec l'expression Patient.name.given | Patient.name.family correspond à l'un ou l'autre de ces deux champs. Utilisez plusieurs clauses lorsque plusieurs types de ressources sont spécifiés dans base. Par exemple, Patient.name.given | Practitioner.name.given pour un paramètre de recherche qui s'applique à la fois à Patient et à Practitioner.

.as([data type])

Utilisez la fonction .as([data type]) lorsqu'un champ comporte plusieurs types de données potentiels. Par exemple, le champ Observation.value peut contenir de nombreux types différents, tels que Quantity et String, qui fonctionnent avec différents types de recherche. Vous pouvez sélectionner ces types de recherche avec Observation.value.as(Quantity) ou Observation.value.as(String).

Sélectionner des extensions

Vous pouvez sélectionner des extensions à l'aide de la fonction .extension([canonical url]). Étant donné que les extensions contiennent un champ value pouvant héberger n'importe quel type de données, le chemin d'accès complet est défini sur .extension([canonical url]).value.as([data type]). Les extensions complexes peuvent utiliser plusieurs composants .extension(), par exemple Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept).

Vous pouvez également utiliser la fonction .extension.where(url='[canonical url]') pour sélectionner des extensions. C'est le seul contexte dans lequel la fonction where() est autorisée.

Aucune autre fonction FHIRPath n'est acceptée.

target

Si le champ type est défini sur reference, le champ target doit contenir un ou plusieurs types de ressources FHIR définissant les types de ressources pouvant être la cible de cette recherche de référence.

Par exemple, si le champ Patient.generalPractitioner autorise les références à Practitioner, PractitionerRole et Organization, un paramètre de recherche peut spécifiquement correspondre à des références à Practitioner, PractitionerRole ou Organization. Pour faire correspondre tous les types de références cibles, incluez tous les types dans le champ target.

modifier, comparator, multipleOr, multipleAnd et chain

Les champs modifier, comparator, multipleOr, multipleAnd et chain sont ignorés. Les options et fonctionnalités disponibles avec un paramètre de recherche personnalisé sont identiques à celles acceptées par le magasin FHIR sur un paramètre de recherche standard du même type.

Si vous mettez en œuvre des paramètres de recherche obtenus à partir d'un guide de mise en œuvre FHIR, importez les ressources SearchParameter du fichier JSON de votre guide de mise en œuvre dans le datastore FHIR à l'aide de l'une des méthodes suivantes :

Dans certains cas, vous devez convertir un paramètre de recherche publié pour que l'API Cloud Healthcare soit compatible. Si les paramètres de recherche ne sont pas convertis, la méthode configureSearch les rejette. Les contraintes suivantes s'appliquent aux paramètres de recherche provenant des guides de mise en œuvre :

  • Si le paramètre de recherche est identique à des paramètres de la spécification FHIR de base, la méthode configureSearch rejette les paramètres de recherche en double. Omettez les doublons lors de l'appel de configureSearch. Pour en savoir plus, consultez la section consacrée à code.

  • Si le paramètre de recherche ne contient qu'une expression xpath, convertissez l'expression en expression FHIRPath équivalente et utilisez-la dans le champ expression. Pour en savoir plus, consultez la section consacrée à expression.

  • Les types de paramètres de recherche composite et special ne sont pas acceptés.

  • La syntaxe alternative de transtypage ([field] as [data type]) n'est pas acceptée. Convertissez-la en expression [field].as([data type]) équivalente compatible. Pour en savoir plus, consultez la section consacrée à .as([data type]).

  • La convention [reference field].where(resolve() is [resource type]) permettant de contraindre le type d'une ressource référencée n'est pas compatible. Supprimez la clause where() et, à la place, stockez le type de la ressource référencée dans le champ SearchParameter.target. Pour en savoir plus, consultez la section consacrée à target.

  • Certains guides de mise en œuvre utilisent pour les extensions des expressions qui omettent certains des composants de chemin requis par le magasin FHIR de l'API Cloud Healthcare. Par exemple, Patient.extension('url') doit être remplacé par Patient.extension('url').value.as([data type]), et Patient.extension('url').extension.value par Patient.extension('url').extension('url2').value.as([data type]).

Examples

Effectuer une recherche personnalisée sur un champ d'extension

Les étapes suivantes montrent comment rechercher du texte dans l'extension mothersMaidenName des ressources Patient.

  1. Créez un exemple de ressource Patient :

    curl

    L'exemple suivant montre comment créer une ressource Patient en effectuant une requête POST à l'aide de curl. L'extension mothersMaidenName de cette ressource Patient est définie sur Marca.

    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"
    

    Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :

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

    L'exemple suivant montre comment créer une ressource Patient en effectuant une requête POST à l'aide de Windows PowerShell. L'extension mothersMaidenName de cette ressource Patient est définie sur Marca.

    $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
    

    Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :

    {
      "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. Créez une ressource de paramètre de recherche personnalisée :

    curl

    L'exemple suivant montre comment créer la ressource de paramètre de recherche personnalisée pour l'extension mothersMaidenName en effectuant une requête POST à l'aide de 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\": \"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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

    L'exemple suivant montre comment créer la ressource de paramètre de recherche personnalisée pour l'extension "mothersMaidenName" en effectuant une requête "POST" à l'aide de 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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    { 
     "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"
     },
    }
    Pour cibler un autre type de données dans le champ expression, utilisez la fonction .as([data type]). Par exemple, pour spécifier l'expression de recherche pour une valeur booléenne, utilisez .value.as(Boolean). Pour en savoir plus, consultez la page concernant .as([data type])

  3. Activez le paramètre de recherche :

    curl

    Pour activer le paramètre de recherche personnalisée, envoyez une requête POST et spécifiez l'URL canonique de chaque paramètre de recherche que vous activez.

    L'exemple suivant montre une requête POST utilisant 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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

    PowerShell

    Pour activer le paramètre de recherche personnalisée, envoyez une requête POST et spécifiez l'URL canonique de chaque paramètre de recherche que vous activez.

    L'exemple suivant montre une requête POST utilisant 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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

  4. Effectuez une recherche à l'aide du paramètre de recherche personnalisé :

    curl

    L'exemple suivant montre comment rechercher la chaîne Marca dans l'extension mothersMaidenName des ressources Patient en effectuant une requête GET à l'aide de curl.

    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"
    

    Si la requête aboutit, le serveur renvoie la réponse en tant que Bundle FHIR au format JSON. Le Bundle.type est searchset et les résultats de recherche sont des entrées du tableau Bundle.entry. Dans cet exemple, la requête renvoie une seule ressource "Patient" incluant les données qu'elle contient :

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

    L'exemple suivant montre comment rechercher des ressources patient pour la chaîne "Marca" dans l'extension "mothersMaidenName" en effectuant une requête "GET" à l'aide de Windows PowerShell.
    $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
    

    Si la requête aboutit, le serveur renvoie la réponse en tant que Bundle FHIR au format JSON. Le Bundle.type est searchset et les résultats de recherche sont des entrées du tableau Bundle.entry. Dans cet exemple, la requête renvoie une seule ressource "Patient" incluant les données qu'elle contient :

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

Effectuer une recherche personnalisée sur un champ d'extension à deux niveaux

Les étapes suivantes montrent comment rechercher le code dans l'extension us-core-ethnicity d'une ressource Patient.

  1. Créez un exemple de ressource Patient :

    curl

    L'exemple suivant montre comment créer une ressource Patient en effectuant une requête POST à l'aide de curl. L'extension us-core-ethnicity est définie pour cette ressource Patient.

    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"
    

    Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :

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

    L'exemple suivant montre comment créer une ressource Patient en effectuant une requête POST à l'aide de Windows PowerShell. L'extension us-core-ethnicity est définie pour cette ressource Patient.

    $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
    

    Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :

    {
      "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. Créez une ressource de paramètre de recherche personnalisée :

    curl

    L'exemple suivant montre comment créer la ressource de paramètre de recherche personnalisée pour l'extension us-core-ethnicity en effectuant une requête POST à l'aide de 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\": \"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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

    L'exemple suivant montre comment créer la ressource de paramètre de recherche personnalisée pour l'extension "mothersMaidenName" en effectuant une requête "POST" à l'aide de Windows PowerShell.
    $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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    {
      "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. Activez le paramètre de recherche :

    curl

    Pour activer le paramètre de recherche personnalisée, envoyez une requête POST et spécifiez l'URL canonique de chaque paramètre de recherche que vous activez.

    L'exemple suivant montre une requête POST utilisant 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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

    PowerShell

    Pour activer le paramètre de recherche personnalisée, envoyez une requête POST et spécifiez l'URL canonique de chaque paramètre de recherche que vous activez.

    L'exemple suivant montre une requête POST utilisant 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"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

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

  4. Effectuez une recherche à l'aide du paramètre de recherche personnalisé :

    curl

    L'exemple suivant montre comment rechercher le code urn:oid:2.16.840.1.113883.6.238|2028-9 dans l'extension us-core-ethnicity des ressources Patient en effectuant une requête GET à l'aide de curl.

    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"
    

    Si la requête aboutit, le serveur renvoie la réponse en tant que Bundle FHIR au format JSON. Le Bundle.type est searchset et les résultats de recherche sont des entrées du tableau Bundle.entry. Dans cet exemple, la requête renvoie une seule ressource "Patient" incluant les données qu'elle contient :

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

    Les étapes suivantes montrent comment rechercher le code "urn:oid:2.16.840.1.113883.6.238|2028-9" dans l'extension "us-core-ethnicity" d'une ressource Patient en effectuant une requête "GET" à l'aide de Windows PowerShell.
    $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
    

    Si la requête aboutit, le serveur renvoie la réponse en tant que Bundle FHIR au format JSON. Le Bundle.type est searchset et les résultats de recherche sont des entrées du tableau Bundle.entry. Dans cet exemple, la requête renvoie une seule ressource "Patient" incluant les données qu'elle contient :

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