Crea búsquedas personalizadas de FHIR

En esta página, se describe cómo configurar un almacén de FHIR para que admita parámetros de búsqueda personalizados en campos y extensiones que no estén cubiertos por los parámetros de búsqueda estándar de FHIR.

Los parámetros de búsqueda personalizados pueden ser útiles en muchas situaciones, como las siguientes:

  • Debes buscar un campo en un recurso de FHIR, pero no hay un parámetro de búsqueda admitido para el campo.
  • Debes buscar en las extensiones agregadas al modelo de datos de FHIR.

Descripción general

De forma predeterminada, la búsqueda de recursos de FHIR admite los parámetros de búsqueda estándar definidos en la especificación de FHIR, con algunas exclusiones documentadas en la declaración de capacidad de FHIR o la declaración de conformidad de FHIR.

Puedes crear uno o más parámetros de búsqueda personalizados y configurar el almacén de FHIR para admitirlos en consultas a través del método search. Los parámetros de búsqueda personalizados son útiles en las siguientes situaciones:

  • Para buscar en campos que no estén cubiertos por los parámetros de búsqueda estándar.
  • Para buscar en extensiones del modelo de datos de FHIR.

Muchas guías de implementación de FHIR definen parámetros de búsqueda, que puedes usar en tus búsquedas.

Los parámetros de búsqueda personalizados admiten el mismo comportamiento de búsqueda, incluidas las funciones de búsqueda avanzada de FHIR, que los parámetros de búsqueda estándar, como los siguientes elementos:

  • Teclas modificadoras
  • _include y _revinclude
  • Búsqueda en cadena
  • _sort

A fin de habilitar una búsqueda personalizada para tu almacén de FHIR, primero debes crear uno o más recursos SearchParameter que definan el comportamiento de la búsqueda. SearchParameter es un tipo de recurso de FHIR estándar que se puede crear, actualizar o borrar mediante los mismos métodos que cualquier otro tipo de recurso. Consulta Cómo crear un recurso de parámetro de búsqueda en la tienda.

Los recursos SearchParameter en un almacén de FHIR no se aplican hasta que se configuran con el método configureSearch. Este método habilita una lista de parámetros de búsqueda personalizados. Cada vez que se lo llama, reemplaza la lista anterior de parámetros. Se activa una operación de larga duración para que configureSearch vuelva a indexar todos los recursos relevantes dentro del almacén según la nueva configuración de búsqueda. Todos los recursos nuevos y actualizados después de la llamada de método se indexan según la configuración nueva. Se quitan todos los datos de índice de los parámetros de búsqueda personalizados que ya no están en la configuración. Para obtener más detalles sobre cómo usar configureSearch, consulta Habilita el parámetro de búsqueda personalizado en tu almacén de FHIR.

El CapabilityStatement del almacén, que se recupera mediante el método fhir.capabilities, enumera los parámetros de búsqueda estándar y personalizados. Los parámetros de búsqueda para un recurso se encuentran en el campo rest.resource.searchParam.

Crea un recurso de SearchParameter en el almacén de FHIR

En los siguientes ejemplos, se muestra cómo crear un recurso de parámetro de búsqueda personalizado con el método projects.locations.datasets.fhirStores.fhir.create. También puedes usar el método projects.locations.datasets.fhirStores.import.

Para obtener descripciones de los campos relevantes de los parámetros de búsqueda, consulta Campos de recursos de SearchParameter.

curl

En el siguiente ejemplo, se muestra una solicitud 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"

Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

En el siguiente ejemplo, se muestra una solicitud 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

Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

Habilita el parámetro de búsqueda personalizado para tu almacén de FHIR

A fin de habilitar uno o más parámetros de búsqueda personalizados para tu almacén de FHIR, realiza una solicitud POST al método [store base URL]:configureSearch y especifica la URL canónica de cada parámetro de búsqueda que habilites.

Las URL canónicas se especifican en cualquiera de los siguientes formatos:

  • uri: Selecciona el version más grande disponible en el almacén para ese URI.
  • uri|version: Selecciona una versión específica.

Por ejemplo, si el almacén contiene las versiones 1.0.0 y 1.0.1 de los parámetros de búsqueda con el URI http://example.com/search, la URL canónica http://example.com/search|1.0.0 selecciona la versión 1.0.0. La URL canónica http://example.com/search selecciona la versión 1.0.1.

La lista de URLs proporcionada a este método reemplaza cualquier configuración anterior y quita los parámetros de búsqueda personalizados que estaban vigentes. La configuración se almacena en caché en función del contenido de los recursos SearchParameter que existían en el momento en que se llamó a configureSearch. La configuración no se actualizará si los recursos SearchParameter se actualizan o se borran hasta que se vuelve a llamar a configureSearch.

Cuando la llamada de método [store base URL]:configureSearch se realiza correctamente, el valor que se muestra es el nombre de una operación de larga duración para reindexar los recursos en el almacén de acuerdo con la configuración nueva. Puedes ver el estado de la operación de larga duración con el método operations.get y puedes cancelarla con operations.cancel. El estado contiene un contador que indica cuántos recursos se reindexaron correctamente.

Las búsquedas en el almacén continúan funcionando normalmente mientras se ejecuta la operación de larga duración, excepto que los parámetros de búsqueda personalizados que se agregan o cambian con esta operación muestran resultados parciales. Es seguro cancelar la operación, pero se realiza una indexación parcial de los parámetros de búsqueda personalizados. Es importante completar una operación de reindexación exitosa completa antes de buscar con parámetros modificados o agregados recientemente.

Si hay errores, se muestran en Cloud Logging.

El método configureSearch también se puede usar con la opción "validate_only": true para validar los parámetros de búsqueda especificados sin modificar la configuración del almacén y sin reindexar ningún dato.

En los siguientes ejemplos, se muestra cómo habilitar uno o más parámetros de búsqueda personalizados para tu almacén de FHIR mediante el método projects.locations.datasets.fhirStores.configureSearch.

curl

En el siguiente ejemplo, se muestra una solicitud 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"

Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get de la operación:

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

Si la operación de larga duración sigue en ejecución, el servidor muestra una respuesta con la cantidad de recursos de FHIR pendientes de reindexación en 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"
    }
  }
}

Cuando la LRO finaliza, el servidor muestra una respuesta con el estado de la operación en 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",
  }
}

Si la LRO se ejecuta correctamente, la respuesta contiene la cantidad de recursos de FHIR que se volvieron a indexar de forma correcta y un tipo de respuesta google.protobuf.Empty.

PowerShell

En el siguiente ejemplo, se muestra una solicitud 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"

Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get de la operación:

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

Si la operación de larga duración sigue en ejecución, el servidor muestra una respuesta con la cantidad de recursos de FHIR pendientes de reindexación en 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"
    }
  }
}

Cuando la LRO finaliza, el servidor muestra una respuesta con el estado de la operación en 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",
  }
}

Si la LRO se ejecuta correctamente, la respuesta contiene la cantidad de recursos de FHIR que se volvieron a indexar de forma correcta y un tipo de respuesta google.protobuf.Empty.

Puedes realizar búsquedas con un SearchParameter personalizado de la misma manera que con cualquier otra búsqueda. Usa el valor code del recurso de parámetro de búsqueda como la key de la búsqueda. Para obtener más información, consulta Busca recursos de FHIR.

Campos de recursos SearchParameter

En la siguiente sección, se describen los campos del recurso SearchParameter que son relevantes para las búsquedas personalizadas. Estos campos están disponibles en las versiones STU3 y R4 de FHIR.

uri y version

El campo uri, que es obligatorio, y los campos version, que son opcionales, definen la URL canónica para el recurso SearchParameter. La combinación de uri y version debe ser única dentro del almacén de FHIR.

La URL canónica es la URL que se usa en la llamada configureSearch.

name, description y status

Los campos name, description y status son obligatorios, pero no tienen efecto funcional.

base

El campo base enumera los tipos de recursos de FHIR a los que se aplica esta búsqueda.

Si hay más de un tipo, el campo expression debe tener una cláusula para cada tipo. No hay diferencia entre definir un parámetro en dos tipos o definir un parámetro para cada tipo. Si defines un parámetro para varios tipos de recursos, las definiciones son más compactas.

code

El campo code define la clave que se usará en una búsqueda de FHIR. Por ejemplo, si code se define como payment-type, y base se define como Claim, una búsqueda que use este parámetro sería Claim?payment-type=ABC.

El campo code no puede tener el mismo valor que cualquier otro parámetro de búsqueda estándar o personalizado en el mismo tipo de recurso. Los parámetros de búsqueda estándar no se pueden volver a definir ni modificar mediante parámetros de búsqueda personalizados. El método configureSearch rechaza los parámetros de búsqueda duplicados.

El valor del campo code debe cumplir con los siguientes requisitos:

  • Debe comenzar con una letra
  • No puede tener más de 64 caracteres
  • Debe contener solo lo siguiente:
    • Caracteres alfanuméricos
    • Carácter de guion -
    • Carácter de guion bajo _

La convención estándar de FHIR para el campo code es minúsculas con guiones.

type

El campo type define el tipo de parámetro de búsqueda. El tipo de parámetro de búsqueda determina la semántica de las condiciones de búsqueda, como se define en la especificación de búsqueda de FHIR. Este valor de type debe ser compatible con el tipo de datos del campo especificado por el campo expression. Si no lo está, configureSearch rechaza el parámetro de búsqueda personalizado.

El campo type debe definirse como una de las siguientes opciones:

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

Los tipos composite y special no son compatibles.

expression

El campo expression define qué campos o extensiones consulta el parámetro de búsqueda. Este campo utiliza un conjunto limitado de sintaxis y funciones de FHIRPath.

Sintaxis de campo

El campo expression se define como una ruta de acceso que comienza con el tipo de recurso y sigue con uno o más campos separados por ., por ejemplo, Patient.contact.name.given. La estructura del campo de los datos de FHIR se puede encontrar en los recursos de FHIR y en los tipos de datos de FHIR.

Múltiples cláusulas

El campo expression puede contener múltiples cláusulas separadas por |. En este caso, el parámetro de búsqueda coincide si alguna de las cláusulas coincide con el recurso. Por ejemplo, un parámetro de búsqueda con la expresión Patient.name.given | Patient.name.family coincide con cualquiera de esos dos campos. Usa múltiples cláusulas cuando se especifique más de un tipo de recurso en base. Por ejemplo, Patient.name.given | Practitioner.name.given para un parámetro de búsqueda que se aplica a Patient y Practitioner.

.as([data type])

Usa la función .as([data type]) cuando un campo tenga más de un tipo de datos posible. Por ejemplo, el campo Observation.value puede contener muchos tipos diferentes, como Quantity y String, que funcionan con diferentes tipos de búsqueda. Puedes seleccionar estos tipos de búsqueda con Observation.value.as(Quantity) o Observation.value.as(String).

Selecciona extensiones

Puedes seleccionar extensiones con la función .extension([canonical url]). Debido a que las extensiones contienen un campo value que puede contener cualquier tipo de dato, la ruta completa se define como .extension([canonical url]).value.as([data type]). Las extensiones complejas pueden usar varios componentes .extension(), como Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept).

También puedes usar la función .extension.where(url='[canonical url]') para seleccionar extensiones. Este es el único contexto en el que se permite la función where().

No se admiten otras funciones FHIRPath.

target

Si el campo type se define como reference, el campo target debe contener uno o más tipos de recursos de FHIR que definan qué tipos de recursos pueden ser el destino de esta búsqueda de referencia.

Por ejemplo, si el campo Patient.generalPractitioner permite referencias a Practitioner, PractitionerRole y Organization, un parámetro de búsqueda puede coincidir específicamente con las referencias a Practitioner, PractitionerRole o Organization. Para que coincidan todos los tipos de segmentación de las referencias, incluye todos los tipos en el campo target.

modifier, comparator, multipleOr, multipleAnd y chain

Los campos modifier, comparator, multipleOr, multipleAnd y chain se ignoran. Las opciones y funcionalidades disponibles con un parámetro de búsqueda personalizado son las mismas que las que admite el almacén de FHIR en un parámetro de búsqueda estándar del mismo tipo.

Si implementas parámetros de búsqueda que se obtuvieron de una guía de implementación de FHIR, importa los recursos SearchParameter del archivo JSON de tu guía de implementación al almacén de FHIR mediante uno de los siguientes métodos:

En algunos casos, debes convertir un parámetro de búsqueda publicado para que la API de Cloud Healthcare lo admita. Si los parámetros de búsqueda no se convierten, el método configureSearch los rechaza. Las siguientes restricciones se aplican a los parámetros de búsqueda de las guías de implementación:

  • Si el parámetro de búsqueda es idéntico a los parámetros en la especificación base de FHIR, el método configureSearch rechaza los parámetros de búsqueda duplicados. Omite esos duplicados cuando llames a configureSearch. Para obtener más información, consulta code.

  • Si el parámetro de búsqueda solo contiene una expresión xpath, convierte la expresión en una expresión FHIRPath equivalente y úsala en el campo expression. Para obtener más información, consulta expression:

  • No se admiten los tipos de parámetros de búsqueda composite y special.

  • No se admite la sintaxis de conversión de tipos alternativa ([field] as [data type]). Convierte al [field].as([data type]) equivalente admitido. Para obtener más información, consulta .as([data type]):

  • No se admite la convención [reference field].where(resolve() is [resource type]) para restringir el tipo de un recurso al que se hace referencia. Quita la cláusula where() y almacena el tipo de recurso al que se hace referencia en el campo SearchParameter.target. Para obtener más información, consulta target:

  • En algunas guías de implementación, se usan expresiones para extensiones que omiten algunos de los componentes de la ruta de acceso que requiere el almacén de FHIR de la API de Cloud Healthcare. Por ejemplo, Patient.extension('url') debe modificarse como Patient.extension('url').value.as([data type]), y Patient.extension('url').extension.value debe modificarse como Patient.extension('url').extension('url2').value.as([data type]).

Ejemplos

Usa una búsqueda personalizada para buscar en un campo de extensión

En los siguientes pasos, se muestra un ejemplo de búsqueda de texto dentro de la extensión mothersMaidenName en recursos Patient.

  1. Crea un recurso Patient de muestra:

    curl

    En el siguiente ejemplo, se muestra cómo crear un recurso Patient mediante una solicitud POST con curl. Este recurso Patient tiene la extensión mothersMaidenName configurada en Marca.

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

    Si la solicitud tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra en 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

    En el siguiente ejemplo, se muestra cómo crear un recurso Patient mediante una solicitud POST con Windows PowerShell. Este recurso Patient tiene la extensión mothersMaidenName configurada en Marca.

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

    Si la solicitud tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra en 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 un recurso de parámetro de búsqueda personalizado:

    curl

    En el siguiente ejemplo, se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión mothersMaidenName mediante una solicitud POST con curl.

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

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

    A continuación, se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión “mothersMaidenName” mediante una solicitud “POST” con Windows PowerShell.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $SearchParameter = '{
        "resourceType": "SearchParameter",
        "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
        "base": ["Patient"],
        "code": "mothers-maiden-name",
        "name": "mothers-maiden-name",
        "type": "string",
        "expression": "Patient.extension(''http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName'').value.as(String)",
        "status": "active",
        "description": "search on mother''s maiden name"
    }'
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $SearchParameter `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
    

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

    { 
     "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"
     },
    }
    Para orientar un tipo de datos diferente en el campo expression, usa la función .as([data type]). Por ejemplo, para especificar la expresión de búsqueda de un valor booleano, usa .value.as(Boolean). Para obtener más información, consulta .as([data type]).

  3. Habilita el parámetro de búsqueda:

    curl

    Para habilitar el parámetro de búsqueda personalizado, realiza una solicitud POST y especifica la URL canónica de cada parámetro de búsqueda que habilites.

    En el siguiente ejemplo, se muestra una solicitud 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"
    

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

    PowerShell

    Para habilitar el parámetro de búsqueda personalizado, realiza una solicitud POST y especifica la URL canónica de cada parámetro de búsqueda que habilites.

    En el siguiente ejemplo, se muestra una solicitud 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"
    

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

  4. Busca con el parámetro de búsqueda personalizado:

    curl

    En el siguiente ejemplo, se muestra cómo buscar recursos Patient para la string Marca en la extensión mothersMaidenName mediante una solicitud GET con curl.

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

    Si la solicitud es exitosa, el servidor mostrará la respuesta como un Bundle de FHIR en formato JSON. Bundle.type es searchset y los resultados de la búsqueda son entradas en el arreglo Bundle.entry. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro de ese recurso:

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

    En el siguiente ejemplo, se muestra cómo buscar los recursos de pacientes en la string “Marca” en la extensión “mothersMaidenName” mediante una solicitud “GET” con Windows PowerShell.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca" | ConvertTo-Json
    

    Si la solicitud es exitosa, el servidor mostrará la respuesta como un Bundle de FHIR en formato JSON. Bundle.type es searchset y los resultados de la búsqueda son entradas en el arreglo Bundle.entry. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro de ese recurso:

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

Usa una búsqueda personalizada para buscar en un campo de extensión de 2 niveles

En los siguientes pasos, se muestra cómo buscar el código dentro de la extensión us-core-ethnicity en un recurso Patient.

  1. Crea un recurso Patient de muestra:

    curl

    En el siguiente ejemplo, se muestra cómo crear un recurso Patient mediante una solicitud POST con curl. Este recurso Patient tiene la extensión de us-core-ethnicity configurada.

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

    Si la solicitud tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra en 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

    En el siguiente ejemplo, se muestra cómo crear un recurso Patient mediante una solicitud POST con Windows PowerShell. Este recurso Patient tiene la extensión us-core-ethnicity configurada.

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

    Si la solicitud tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra en 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 un recurso de parámetro de búsqueda personalizado:

    curl

    En el siguiente ejemplo, se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión us-core-ethnicity mediante una solicitud POST con curl.

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

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

    En el siguiente ejemplo, se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión “mothersMaidenName” mediante una solicitud “POST” con Windows PowerShell.
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $SearchParameter = '{
        "resourceType": "SearchParameter",
        "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
        "base": ["Patient"],
        "code": "ethnicity",
        "name": "ethnicity",
        "type": "token",
        "expression": "Patient.extension(''http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'').extension(''ombCategory'').value.as(Coding)",
        "status": "active",
        "description": "search on the ombCategory of a patient."
    }'
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $SearchParameter `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
    

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

    {
      "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. Habilita el parámetro de búsqueda:

    curl

    Para habilitar el parámetro de búsqueda personalizado, realiza una solicitud POST y especifica la URL canónica de cada parámetro de búsqueda que habilites.

    En el siguiente ejemplo, se muestra una solicitud 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"
    

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

    PowerShell

    Para habilitar el parámetro de búsqueda personalizado, realiza una solicitud POST y especifica la URL canónica de cada parámetro de búsqueda que habilites.

    En el siguiente ejemplo, se muestra una solicitud 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"
    

    Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

  4. Busca con el parámetro de búsqueda personalizado:

    curl

    En el siguiente ejemplo, se muestra cómo buscar el código urn:oid:2.16.840.1.113883.6.238|2028-9 en los recursos Patient en la extensión us-core-ethnicity mediante una solicitud GET con curl.

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

    Si la solicitud es exitosa, el servidor mostrará la respuesta como un Bundle de FHIR en formato JSON. Bundle.type es searchset y los resultados de la búsqueda son entradas en el arreglo Bundle.entry. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro de ese recurso:

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

    En el siguiente ejemplo, se muestra cómo buscar el código `urn:oid:2.16.840.1.113883.6.238|2028-9` en los recursos Patient en la extensión `us-core-ethnicity` mediante una solicitud `GET` con Windows PowerShell
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9 | ConvertTo-Json
    

    Si la solicitud es exitosa, el servidor mostrará la respuesta como un Bundle de FHIR en formato JSON. Bundle.type es searchset y los resultados de la búsqueda son entradas en el arreglo Bundle.entry. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro de ese recurso:

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