Creazione di ricerche FHIR personalizzate

Questa pagina descrive come configurare un archivio FHIR per supportare i parametri di ricerca personalizzati per i campi e le estensioni che non sono coperti dai parametri di ricerca standard FHIR.

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

  • Devi cercare un campo in una risorsa FHIR, ma non esiste un parametro di ricerca supportato per il campo.
  • Devi cercare 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 della funzionalità FHIR o nella dichiarazione di conformità FHIR.

Puoi creare uno o più parametri di ricerca personalizzati e configurare l'archivio FHIR per supportarli 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 cercare nelle estensioni il 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 dei parametri di ricerca standard, ad esempio i seguenti:

  • modificatori
  • _include e _revinclude
  • ricerca concatenata
  • _sort

Per abilitare una ricerca personalizzata per l'archivio FHIR, devi prima creare una o più risorse SearchParameter che definiscano 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 dei parametri di ricerca nell'archivio.

Le risorse SearchParameter in un archivio FHIR non hanno effetto finché non vengono configurate utilizzando il metodo configureSearch. Questo metodo attiva un elenco di parametri di ricerca personalizzati. Ogni volta che viene richiamata, sostituisce l'elenco di parametri precedente. Viene attivata un'operazione a lunga esecuzione per consentire a configureSearch di 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. Tutti i dati di indice per i parametri di ricerca personalizzati che non sono più nella configurazione vengono rimossi. Per maggiori dettagli su come utilizzare configureSearch, consulta Attivare il parametro di ricerca personalizzato per l'archivio FHIR.

Il valore CapabilityStatement del negozio, recuperato tramite il metodo fhir.capabilities, elenca i parametri di ricerca standard e personalizzati. I parametri di ricerca per 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 una descrizione dei campi pertinenti dei parametri di ricerca, consulta Campi delle risorse SearchParameter.

curl

Il seguente esempio mostra una richiesta POST che utilizza 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 ha esito positivo, 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

L'esempio seguente 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 ha esito positivo, 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 l'archivio 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 attivato.

Gli URL canonici sono specificati in uno dei seguenti formati:

  • uri: seleziona il valore 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 di URL fornito a questo metodo sostituisce qualsiasi configurazione precedente e rimuove i parametri di ricerca personalizzati che erano attivi 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 fino a quando configureSearch non viene richiamato.

Se 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 nell'archivio in base alla nuova configurazione. Puoi visualizzare lo stato dell'operazione a lunga esecuzione utilizzando il metodo operations.get e annullarla utilizzando il metodo operations.cancel. Lo stato contiene un contatore che indica quante risorse sono state reindicizzate correttamente.

Le ricerche nell'archivio continuano a funzionare normalmente durante l'esecuzione dell'operazione a lunga esecuzione, ma i parametri di ricerca personalizzata 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 con esito positivo prima di eseguire la ricerca con parametri appena aggiunti o modificati.

In caso di errori, vengono visualizzati in Cloud Logging.

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

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

curl

Il seguente esempio mostra una richiesta POST che utilizza 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 ha esito positivo, 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 dell'operazione 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 esecuzione, 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'LRO, 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'LRO ha esito positivo, la risposta contiene il numero di risorse FHIR reindicizzate correttamente e un tipo di risposta google.protobuf.Empty.

PowerShell

L'esempio seguente 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 ha esito positivo, 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 dell'operazione 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 esecuzione, 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'LRO, 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'LRO ha esito positivo, la risposta contiene il numero di risorse FHIR reindicizzate correttamente e un tipo di risposta google.protobuf.Empty.

Puoi eseguire una ricerca utilizzando un SearchParameter personalizzato come faresti con qualsiasi altro tipo di ricerca. Utilizza il valore code della risorsa del parametro di ricerca come key per la query di ricerca. Per ulteriori informazioni, consulta la sezione Ricerca di risorse FHIR.

Campi delle risorse SearchParameter

La seguente sezione descrive i campi della risorsa SearchParameter che sono pertinenti alle ricerche personalizzate. Questi campi sono disponibili sia nella versione STU3 che in quella R4 di FHIR.

uri e version

Il campo uri, obbligatorio, e i campi version, 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 è presente più di un tipo, il campo expression deve avere una clausola per ogni tipo. Non esiste 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 sullo 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 -
    • Trattino basso _

La convenzione standard FHIR per il campo code è minuscola 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. Il valore 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 utilizzati per la query dei parametri di ricerca. Questo campo utilizza un insieme limitato di sintassi e funzioni di FHIRPath.

Sintassi dei campi

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.

Clausole multiple

Il campo expression può contenere più clausole separate da |. In questo caso, il parametro di ricerca corrisponde a una qualsiasi delle clausole che 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 è 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 sia 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 tipi di ricerca diversi. Puoi selezionare questi tipi di ricerca con Observation.value.as(Quantity) o Observation.value.as(String).

Selezione delle 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 definiscano i tipi di risorse che possono essere la destinazione di questa ricerca dei riferimenti.

Ad esempio, se il campo Patient.generalPractitioner consente i riferimenti a Practitioner, PractitionerRole e Organization, un parametro di ricerca può corrispondere in modo specifico ai riferimenti a Practitioner, PractitionerRole o Organization. Per trovare una corrispondenza con tutti i tipi di riferimento, 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 dall'archivio FHIR su un parametro di ricerca standard dello stesso tipo.

Se stai implementando parametri di ricerca ottenuti da una guida all'implementazione 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 affinché l'API Cloud Healthcare lo supporti. Se i parametri di ricerca non vengono convertiti, il metodo configureSearch li rifiuta. I seguenti vincoli si applicano ai parametri di ricerca dalle guide all'implementazione:

  • Se il parametro di ricerca è identico ai parametri della specifica FHIR di base, il metodo configureSearch rifiuta i parametri di ricerca duplicati. Ometti questi duplicati durante la chiamata a configureSearch. Per saperne di più, visita 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 saperne di più, visita expression.

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

  • La sintassi di trasmissione del tipo alternativa ([field] as [data type]) non è supportata. Converti nell'equivalente supportato [field].as([data type]). Per saperne di più, visita .as([data type]).

  • La convenzione [reference field].where(resolve() is [resource type]) per vincolare il tipo di una risorsa di riferimento non è supportata. Rimuovi la clausola where() e archivia il tipo di risorsa di riferimento nel campo SearchParameter.target. Per saperne di più, visita target.

  • Alcune guide all'implementazione utilizzano espressioni per le estensioni che omettono alcuni dei componenti del percorso richiesti dall'archivio 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 eseguire una ricerca nel campo di un'estensione

I passaggi seguenti mostrano un esempio di ricerca di testo all'interno dell'estensione mothersMaidenName in Risorse per i pazienti.

  1. Crea una risorsa Paziente di esempio:

    curl

    L'esempio seguente mostra come creare una risorsa Paziente effettuando una richiesta POST utilizzando curl. Questa risorsa Patient 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 ha esito positivo, il server restituisce una risposta simile al seguente esempio 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

    L'esempio seguente mostra come creare una risorsa Patient effettuando una richiesta POST mediante Windows PowerShell. L'estensione mothersMaidenName di questa risorsa Patient è 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 ha esito positivo, il server restituisce una risposta simile al seguente esempio 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 parametro di ricerca personalizzato:

    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 ha esito positivo, 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 mostrato 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-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 ha esito positivo, 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 come target 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 maggiori informazioni, consulta .as([data type]).

  3. Attiva il parametro di ricerca:

    curl

    Per attivare il parametro di ricerca personalizzato, effettua una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca attivato.

    Il seguente esempio mostra una richiesta POST che utilizza 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 ha esito positivo, 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, effettua una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca attivato.

    L'esempio seguente 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 ha esito positivo, 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 personalizzato:

    curl

    Il seguente esempio mostra come cercare nelle risorse pazienti la stringa Marca 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 ha esito positivo, il server restituisce la risposta come codice 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 che include 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 nelle risorse pazienti la stringa "Marca" nell'estensione "mothersMaidenName" creando una richiesta "GET" utilizzando 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 ha esito positivo, il server restituisce la risposta come codice 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 che include 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 cercare in un campo di estensione a due livelli

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

  1. Crea una risorsa Paziente di esempio:

    curl

    L'esempio seguente mostra come creare una risorsa Paziente effettuando una richiesta POST utilizzando curl. Questa risorsa Patient ha impostato l'estensione us-core-ethnicity.

    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 ha esito positivo, il server restituisce una risposta simile al seguente esempio 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

    L'esempio seguente mostra come creare una risorsa Patient effettuando una richiesta POST mediante Windows PowerShell. Per questa risorsa Patient è stata impostata l'estensione us-core-ethnicity.

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

    Se la richiesta ha esito positivo, il server restituisce una risposta simile al seguente esempio 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 parametro di ricerca personalizzato:

    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 ha esito positivo, 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" creando 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 ha esito positivo, 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, effettua una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca attivato.

    Il seguente esempio mostra una richiesta POST che utilizza 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 ha esito positivo, 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, effettua una richiesta POST e specifica l'URL canonico per ogni parametro di ricerca attivato.

    L'esempio seguente 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 ha esito positivo, 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 personalizzato:

    curl

    Il seguente esempio mostra come cercare il codice urn:oid:2.16.840.1.113883.6.238|2028-9 nell'estensione us-core-ethnicity nelle risorse pazienti 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 ha esito positivo, il server restituisce la risposta come codice 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 che include 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

    L'esempio seguente mostra come cercare nelle risorse Patient il codice "urn:oid:2.16.840.1.113883.6.238|2028-9" nell'estensione "us-core-ethnicity" effettuando una richiesta "GET" utilizzando 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 ha esito positivo, il server restituisce la risposta come codice 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 che include 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"
    }