Creazione di ricerche FHIR personalizzate

Questa pagina descrive come configurare un datastore FHIR per supportare parametri di ricerca personalizzati per campi ed estensioni non coperti dai parametri di ricerca standard FHIR.

I parametri di ricerca personalizzati possono essere utili in molte situazioni, tra cui le seguenti:

  • Devi cercare un campo in una risorsa FHIR, ma non esiste un parametro di ricerca supportato per il campo.
  • Devi eseguire la ricerca nelle estensioni aggiunte al modello dei dati FHIR.

Panoramica

Per impostazione predefinita, la ricerca di risorse FHIR supporta i parametri di ricerca standard definiti nella specifica FHIR, con alcune esclusioni documentate nella dichiarazione di funzionalità FHIR o nella dichiarazione di conformità FHIR.

Puoi creare uno o più parametri di ricerca personalizzati e configurare il datastore FHIR in modo che li supporti nelle query tramite il metodo search. I parametri di ricerca personalizzati sono utili nelle seguenti situazioni:

  • Per eseguire ricerche in campi non coperti dai parametri di ricerca standard.
  • Per eseguire ricerche nelle estensioni del modello dei dati FHIR.

Molte guide all'implementazione di FHIR definiscono i parametri di ricerca, che puoi utilizzare nelle tue ricerche.

I parametri di ricerca personalizzati supportano lo stesso comportamento di ricerca, incluse le funzionalità di ricerca FHIR avanzate come i parametri di ricerca standard, ad esempio:

  • modificatori
  • _include e _revinclude
  • ricerca concatenata
  • _sort

Per attivare una ricerca personalizzata per il tuo datastore FHIR, devi prima creare una o più risorse SearchParameter che definiscono il comportamento di ricerca. SearchParameter è un tipo di risorsa FHIR standard che può essere creato, aggiornato o eliminato utilizzando gli stessi metodi di qualsiasi altro tipo di risorsa. Consulta Creare una risorsa di parametri di ricerca nell'archivio.

Le risorse SearchParameter in un archivio FHIR non vengono applicate finché non vengono configurate utilizzando il metodo configureSearch. Questo metodo consente un elenco di parametri di ricerca personalizzati. Ogni volta che viene chiamato, sostituisce l'elenco precedente di parametri. Viene attivata unoperazione a lunga esecuzione per configureSearch per reindicizzare tutte le risorse pertinenti all'interno dell'archivio in base alla nuova configurazione di ricerca. Tutte le risorse nuove e aggiornate dopo la chiamata al metodo vengono indicizzate in base alla nuova configurazione. Vengono rimossi tutti i dati dell'indice per i parametri di ricerca personalizzati che non sono più presenti nella configurazione. Per ulteriori dettagli su come utilizzare configureSearch, consulta Attivare il parametro di ricerca personalizzato per il datastore FHIR.

L'CapabilityStatement del negozio, recuperato tramite il metodo fhir.capabilities, elenca i parametri di ricerca standard e personalizzati. I parametri di ricerca di una risorsa si trovano nel campo rest.resource.searchParam.

Crea una risorsa SearchParameter nell'archivio FHIR

Gli esempi riportati di seguito mostrano come creare una risorsa di parametri di ricerca personalizzati utilizzando il metodo projects.locations.datasets.fhirStores.fhir.create. Puoi anche utilizzare il metodo projects.locations.datasets.fhirStores.import.

Per le descrizioni dei campi pertinenti dei parametri di ricerca, consulta Campi delle risorse SearchParameter.

curl

L'esempio seguente mostra una richiesta POST mediante 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"

Se la richiesta riesce, il server restituisce la risposta in formato 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

Il seguente esempio mostra una richiesta POST mediante 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

Se la richiesta riesce, il server restituisce la risposta in formato 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"
  },
}

Attiva il parametro di ricerca personalizzato per il tuo datastore FHIR

Per attivare uno o più parametri di ricerca personalizzati per l'archivio FHIR, effettua una richiesta POST al metodo [store base URL]:configureSearch e specifica l'URL canonico per ogni parametro di ricerca che stai attivando.

Gli URL canonici vengono specificati in uno dei seguenti formati:

  • uri: seleziona il version più grande disponibile nello store per quell'URI.
  • uri|version Seleziona una versione specifica.

Ad esempio, se lo store contiene le versioni 1.0.0 e 1.0.1 per i parametri di ricerca con l'URI http://example.com/search, l'URL canonico http://example.com/search|1.0.0 seleziona la versione 1.0.0. L'URL canonico http://example.com/search seleziona la versione 1.0.1.

L'elenco degli URL fornito a questo metodo sostituisce qualsiasi configurazione precedente e rimuove i parametri di ricerca personalizzati che erano in vigore in precedenza. La configurazione viene memorizzata nella cache in base ai contenuti delle risorse SearchParameter esistenti al momento della chiamata di configureSearch. La configurazione non verrà aggiornata se le risorse SearchParameter vengono aggiornate o eliminate finché non viene chiamato di nuovo configureSearch.

Quando la chiamata al metodo [store base URL]:configureSearch ha esito positivo, il valore restituito è il nome di un'operazione a lunga esecuzione per reindicizzare le risorse nello store in base alla nuova configurazione. Puoi visualizzare lo stato dell'operazione aoperazione a lunga esecuzionee utilizzando il metodo operations.get e puoi annullarla utilizzando il metodo operations.cancel. Lo stato contiene un contatore che indica il numero di risorse reindicizzate correttamente.

Le ricerche nello store continuano a funzionare normalmente durante l'esecuzione dell'operazione a lunga esecuzione, ad eccezione del fatto che i parametri di ricerca personalizzati aggiunti o modificati da questa operazione restituiscono risultati parziali. L'annullamento dell'operazione è sicuro, ma comporta l'indicizzazione parziale dei parametri di ricerca personalizzati. È importante completare un'intera operazione di reindicizzazione prima di eseguire ricerche con parametri aggiunti o modificati di recente.

Se si verificano errori, questi vengono visualizzati in Cloud Logging.

Il metodo configureSearch può essere utilizzato anche con l'opzione "validate_only": true per convalidare i parametri di ricerca specificati senza modificare la configurazione dello store e senza reindicizzare i dati.

Gli esempi riportati di seguito mostrano come attivare uno o più parametri di ricerca personalizzati per l'archivio FHIR utilizzando il metodo projects.locations.datasets.fhirStores.configureSearch.

curl

L'esempio seguente mostra una richiesta POST mediante 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"

Se la richiesta riesce, il server restituisce la risposta in formato JSON:

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

La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione, puoi utilizzare il metodo Operation 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"

Se l'operazione a lunga esecuzione è ancora in corso, il server restituisce una risposta con il numero di risorse FHIR in attesa di reindicizzazione in formato JSON:

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

Al termine dell'operazione a lunga esecuzione, il server restituisce una risposta con lo stato dell'operazione in formato 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",
  }
}

Se l'operazione LRO ha esito positivo, la risposta contiene il numero di risorse FHIR reindicizzate correttamente e un tipo di risposta google.protobuf.Empty.

PowerShell

Il seguente esempio mostra una richiesta POST mediante 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"

Se la richiesta riesce, il server restituisce la risposta in formato JSON:

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

La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione, puoi utilizzare il metodo Operation 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"

Se l'operazione a lunga esecuzione è ancora in corso, il server restituisce una risposta con il numero di risorse FHIR in attesa di reindicizzazione in formato JSON:

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

Al termine dell'operazione a lunga esecuzione, il server restituisce una risposta con lo stato dell'operazione in formato 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",
  }
}

Se l'operazione LRO ha esito positivo, la risposta contiene il numero di risorse FHIR reindicizzate correttamente e un tipo di risposta google.protobuf.Empty.

Puoi eseguire ricerche utilizzando un SearchParameter personalizzato allo stesso modo di qualsiasi altra ricerca. Utilizza il valore code della risorsa del parametro di ricerca come key per la query di ricerca. Per ulteriori informazioni, vedi Ricerca delle risorse FHIR.

Campi delle risorse SearchParameter

La seguente sezione descrive i campi della risorsa SearchParameter pertinenti per le ricerche personalizzate. Questi campi sono disponibili nelle versioni STU3 e R4 di FHIR.

uri e version

Il campo uri, che è obbligatorio, e i campi version, che sono facoltativi, definiscono l'URL canonico per la risorsa SearchParameter. La combinazione di uri e version deve essere univoca all'interno dell'archivio FHIR.

L'URL canonico è l'URL utilizzato nella chiamata configureSearch.

name, description e status

I campi name, description e status sono obbligatori, ma non hanno alcun effetto funzionale.

base

Il campo base elenca i tipi di risorse FHIR a cui si applica questa ricerca.

Se esiste più di un tipo, il campo expression deve contenere una clausola per ogni tipo. Non c'è alcuna differenza tra la definizione di un parametro su due tipi o la definizione di un parametro per ogni tipo. La definizione di un parametro per più tipi di risorse rende le definizioni più compatte.

code

Il campo code definisce la chiave da utilizzare in una query di ricerca FHIR. Ad esempio, se code è definito come payment-type e base è definito come Claim, una query di ricerca che utilizza questo parametro sarebbe Claim?payment-type=ABC.

Il campo code non può avere lo stesso valore di qualsiasi altro parametro di ricerca standard o personalizzato nello stesso tipo di risorsa. I parametri di ricerca standard non possono essere ridefiniti o modificati utilizzando i parametri di ricerca personalizzati. Il metodo configureSearch rifiuta i parametri di ricerca duplicati.

Il valore del campo code deve soddisfare i seguenti requisiti:

  • Deve iniziare con una lettera
  • Non può contenere più di 64 caratteri
  • Deve contenere solo quanto segue:
    • Caratteri alfanumerici
    • Carattere trattino -
    • Carattere di sottolineatura _

La convenzione standard FHIR per il campo code è in minuscolo con trattini.

type

Il campo type definisce il tipo di parametro di ricerca. Il tipo di parametro di ricerca determina la semantica delle condizioni di ricerca come definito nella specifica di ricerca FHIR. Questo valore di type deve essere compatibile con il tipo di dati del campo specificato dal campo expression. In caso contrario, configureSearch rifiuta il parametro di ricerca personalizzato.

Il campo type deve essere definito come uno dei seguenti:

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

I tipi composite e special non sono supportati.

expression

Il campo expression definisce i campi o le estensioni su cui esegue query il parametro di ricerca. Questo campo utilizza un insieme limitato della sintassi e delle funzioni di FHIRPath.

Sintassi del campo

Il campo expression è definito come un percorso che inizia con il tipo di risorsa e seguito da uno o più campi separati da ., ad esempio Patient.contact.name.given. La struttura dei campi dei dati FHIR è disponibile nelle risorse FHIR e nei tipi di dati FHIR.

Più clausole

Il campo expression può contenere più clausole separate da |. In questo caso, il parametro di ricerca corrisponde se una qualsiasi delle clausole corrisponde alla risorsa. Ad esempio, un parametro di ricerca con l'espressione Patient.name.given | Patient.name.family corrisponde a uno di questi due campi. Utilizza più clausole quando in base viene specificato più di un tipo di risorsa. Ad esempio, Patient.name.given | Practitioner.name.given per un parametro di ricerca che si applica sia a Patient che a Practitioner.

.as([data type])

Utilizza la funzione .as([data type]) quando un campo ha più di un potenziale tipo di dati. Ad esempio, il campo Observation.value può contenere molti tipi diversi, come Quantity e String, che funzionano con diversi tipi di ricerca. Puoi selezionare questi tipi di ricerca con Observation.value.as(Quantity) o Observation.value.as(String).

Selezionare le estensioni

Puoi selezionare le estensioni con la funzione .extension([canonical url]). Poiché le estensioni contengono un campo value che può contenere qualsiasi tipo di dati, il percorso completo è definito come .extension([canonical url]).value.as([data type]). Le estensioni complesse possono utilizzare più componenti .extension(), ad esempio Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept).

Puoi anche utilizzare la funzione .extension.where(url='[canonical url]') per selezionare le estensioni. Questo è l'unico contesto in cui è consentita la funzione where().

Non sono supportate altre funzioni FHIRPath.

target

Se il campo type è definito come reference, il campo target deve contenere uno o più tipi di risorse FHIR che definiscono quali tipi di risorse possono essere il target di questa ricerca di riferimenti.

Ad esempio, se il campo Patient.generalPractitioner consente riferimenti a Practitioner, PractitionerRole e Organization, un parametro di ricerca può corrispondere in modo specifico ai riferimenti a Practitioner, PractitionerRole o Organization. Per trovare tutti i tipi di destinazione dei riferimenti, includi tutti i tipi nel campo target.

modifier, comparator, multipleOr, multipleAnd e chain

I campi modifier, comparator, multipleOr, multipleAnd e chain vengono ignorati. Le opzioni e le funzionalità disponibili con un parametro di ricerca personalizzato sono le stesse supportate dal datastore FHIR su un parametro di ricerca standard dello stesso tipo.

Se stai implementando parametri di ricerca ottenuti da una guida all'implementazione di FHIR, importa le risorse SearchParameter dal file JSON della guida all'implementazione nell'archivio FHIR utilizzando uno dei seguenti metodi:

In alcuni casi, devi convertire un parametro di ricerca pubblicato per l'API Cloud Healthcare per supportarlo. Se i parametri di ricerca non vengono convertiti, il metodo configureSearch li rifiuta. Ai parametri di ricerca delle guide all'implementazione si applicano i seguenti vincoli:

  • Se il parametro di ricerca è identico ai parametri nella specifica FHIR di base, il metodo configureSearch rifiuta i parametri di ricerca duplicati. Ometti i duplicati quando chiami configureSearch. Per ulteriori informazioni, vedi code.

  • Se il parametro di ricerca contiene solo un'espressione xpath, converti l'espressione in un'espressione FHIRPath equivalente e utilizzala nel campo expression. Per ulteriori informazioni, vedi expression.

  • I tipi di parametri di ricerca composite e special non sono supportati.

  • La sintassi di conversione del tipo alternativo ([field] as [data type]) non è supportata. Converti nell'equivalente supportato [field].as([data type]). Per ulteriori informazioni, vedi .as([data type]).

  • La convenzione [reference field].where(resolve() is [resource type]) per limitare il tipo di una risorsa a cui viene fatto riferimento non è supportata. Rimuovi la clausola where() e memorizza il tipo di risorsa a cui viene fatto riferimento nel campo SearchParameter.target. Per ulteriori informazioni, vedi target.

  • Alcune guide all'implementazione utilizzano espressioni per le estensioni che omettono alcuni dei componenti del percorso richiesti dal datastore FHIR dell'API Cloud Healthcare. Ad esempio, Patient.extension('url') deve essere modificato in Patient.extension('url').value.as([data type]), e Patient.extension('url').extension.value deve essere modificato in Patient.extension('url').extension('url2').value.as([data type]).

Esempi

Utilizzare una ricerca personalizzata per cercare in un campo di estensione

I seguenti passaggi mostrano un esempio di ricerca di testo all'interno dell'estensione mothersMaidenName nelle risorse Patient.

  1. Crea una risorsa Paziente di esempio:

    curl

    Il seguente esempio mostra come creare una risorsa Patient effettuando una richiesta POST mediante curl. Questa risorsa Paziente ha l'estensione mothersMaidenName impostata su 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"

    Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato 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

    Il seguente esempio mostra come creare una risorsa Patient effettuando una richiesta POST mediante Windows PowerShell. Questa risorsa Patient ha l'estensione mothersMaidenName impostata su 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

    Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato 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. Crea una risorsa di parametri di ricerca personalizzati:

    curl

    Il seguente esempio mostra come creare la risorsa del parametro di ricerca personalizzato per l'estensione mothersMaidenName effettuando una richiesta POST utilizzando 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"

    Se la richiesta riesce, il server restituisce la risposta in formato 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

    Di seguito viene illustrato come creare la risorsa del parametro di ricerca personalizzato per l'estensione `mothersMaidenName` effettuando una richiesta `POST` mediante 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"

    Se la richiesta riesce, il server restituisce la risposta in formato 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"
     },
    }
    Per scegliere un tipo di dati diverso nel campo expression, utilizza la funzione .as([data type]). Ad esempio, per specificare l'espressione di ricerca per un valore booleano, utilizza .value.as(Boolean). Per ulteriori informazioni, vedi .as([data type]).

  3. Attiva il parametro di ricerca:

    curl

    Per attivare il parametro di ricerca personalizzato, invia una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca che stai attivando.

    L'esempio seguente mostra una richiesta POST mediante 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"

    Se la richiesta riesce, il server restituisce la risposta in formato JSON:

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

    PowerShell

    Per attivare il parametro di ricerca personalizzato, invia una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca che stai attivando.

    Il seguente esempio mostra una richiesta POST mediante 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"

    Se la richiesta riesce, il server restituisce la risposta in formato JSON:

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

  4. Esegui la ricerca utilizzando il parametro di ricerca personalizzata:

    curl

    L'esempio seguente mostra come cercare la stringa Marca nelle risorse Patient nell'estensione mothersMaidenName effettuando una richiesta GET utilizzando 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"

    Se la richiesta riesce, il server restituisce la risposta come FHIR Bundle in formato JSON. Bundle.type è searchset e i risultati di ricerca sono voci nell'array Bundle.entry. In questo esempio, la richiesta restituisce una singola risorsa Patient, inclusi i dati al suo interno:

    {
      "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'esempio seguente mostra come cercare la stringa `Marca` nell'estensione `mothersMaidenName` delle risorse Patient effettuando una richiesta `GET` mediante 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

    Se la richiesta riesce, il server restituisce la risposta come FHIR Bundle in formato JSON. Bundle.type è searchset e i risultati di ricerca sono voci nell'array Bundle.entry. In questo esempio, la richiesta restituisce una singola risorsa Patient, inclusi i dati al suo interno:

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

Utilizzare una ricerca personalizzata per eseguire ricerche in un campo di estensione a due livelli

I passaggi seguenti mostrano come cercare il codice all'interno dell'estensione us-core-ethnicity in una risorsa Patient.

  1. Crea una risorsa Paziente di esempio:

    curl

    Il seguente esempio mostra come creare una risorsa Patient effettuando una richiesta POST mediante curl. Questa risorsa Patient ha l'estensione us-core-ethnicity impostata.

    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"

    Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato 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

    Il seguente esempio mostra come creare una risorsa Patient effettuando una richiesta POST mediante Windows PowerShell. Questa risorsa Paziente ha l'estensione us-core-ethnicity impostata.

    $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

    Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato 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. Crea una risorsa di parametri di ricerca personalizzati:

    curl

    Il seguente esempio mostra come creare la risorsa del parametro di ricerca personalizzato per l'estensione us-core-ethnicity effettuando una richiesta POST utilizzando 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"

    Se la richiesta riesce, il server restituisce la risposta in formato 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

    Il seguente esempio mostra come creare la risorsa del parametro di ricerca personalizzato per l'estensione `mothersMaidenName` effettuando una richiesta `POST` utilizzando 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"

    Se la richiesta riesce, il server restituisce la risposta in formato 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. Attiva il parametro di ricerca:

    curl

    Per attivare il parametro di ricerca personalizzato, invia una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca che stai attivando.

    L'esempio seguente mostra una richiesta POST mediante 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"

    Se la richiesta riesce, il server restituisce la risposta in formato JSON:

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

    PowerShell

    Per attivare il parametro di ricerca personalizzato, invia una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca che stai attivando.

    Il seguente esempio mostra una richiesta POST mediante 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"

    Se la richiesta riesce, il server restituisce la risposta in formato JSON:

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

  4. Esegui la ricerca utilizzando il parametro di ricerca personalizzata:

    curl

    L'esempio seguente mostra come cercare le risorse Patient per il codice urn:oid:2.16.840.1.113883.6.238|2028-9 nell'estensione us-core-ethnicity effettuando una richiesta GET utilizzando 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"

    Se la richiesta riesce, il server restituisce la risposta come FHIR Bundle in formato JSON. Bundle.type è searchset e i risultati di ricerca sono voci nell'array Bundle.entry. In questo esempio, la richiesta restituisce una singola risorsa Patient, inclusi i dati al suo interno:

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

    Il seguente esempio mostra come cercare le risorse Patient per il codice `urn:oid:2.16.840.1.113883.6.238|2028-9` nell'estensione `us-core-ethnicity` effettuando una richiesta `GET` mediante 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

    Se la richiesta riesce, il server restituisce la risposta come FHIR Bundle in formato JSON. Bundle.type è searchset e i risultati di ricerca sono voci nell'array Bundle.entry. In questo esempio, la richiesta restituisce una singola risorsa Patient, inclusi i dati al suo interno:

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