

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Búsqueda de recursos del FHIR en AWS HealthLake
<a name="searching-fhir-resources"></a>

Utilice la [https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)interacción del FHIR para buscar un conjunto de recursos del FHIR en un banco de HealthLake datos en función de algunos criterios de filtrado. La `search` interacción se puede realizar mediante una solicitud `GET` o`POST`. Para las búsquedas que incluyan información de identificación personal (PII) o información de salud protegida (PHI), se recomienda utilizar `POST` solicitudes, ya que la PII y la PHI se agregan como parte del cuerpo de la solicitud y se cifran durante el tránsito.

**nota**  
La `search` interacción entre el FHIR que se describe en este capítulo se basa en el estándar R4 del HL7 FHIR para el intercambio de datos de atención médica. Como es una representación de un servicio de la HL7 FHIR, no se ofrece a través de y. AWS CLI AWS SDKs Para obtener más información, consulte la documentación de [https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)la API **R4 RESTful del FHIR**.

HealthLake admite un subconjunto de parámetros de búsqueda del FHIR R4. Para obtener más información, consulte [Parámetros de búsqueda FHIR R4 para HealthLake](reference-fhir-search-parameters.md).

**Topics**
+ [Buscando con GET](searching-fhir-resources-get.md)
+ [¿Buscando con POST](searching-fhir-resources-post.md)
+ [Niveles de consistencia de búsqueda](searching-fhir-consistency-levels.md)

# Búsqueda de recursos del FHIR con GET
<a name="searching-fhir-resources-get"></a>

Puede utilizar `GET` las solicitudes para buscar en un banco HealthLake de datos. Cuando se usa`GET`, HealthLake permite proporcionar parámetros de búsqueda como parte de la URL, pero no como parte del cuerpo de la solicitud. Para obtener más información, consulte [Parámetros de búsqueda FHIR R4 para HealthLake](reference-fhir-search-parameters.md).

**Importante**  
Para las búsquedas que incluyen información de identificación personal (PII) o información de salud protegida (PHI), las mejores prácticas de seguridad recomiendan utilizar `POST` solicitudes, ya que la PII y la PHI se añaden como parte del cuerpo de la solicitud y se cifran en tránsito. Para obtener más información, consulte [Búsqueda de recursos del FHIR con POST](searching-fhir-resources-post.md).

El siguiente procedimiento va seguido de ejemplos que se utilizan `GET` para buscar en un almacén de HealthLake datos.

**Para buscar en un HealthLake banco de datos con `GET`**  


1. Recopilar HealthLake `region` y `datastoreId` valorar. Para obtener más información, consulte [Obtención de propiedades de los almacenes de datos](managing-data-stores-describe.md).

1. Determine el tipo de recurso del FHIR para buscar y recopilar el `id` valor asociado. Para obtener más información, consulte [Tipos de recurso](reference-fhir-resource-types.md). 

1. Cree una URL para la solicitud utilizando los valores recopilados para HealthLake `region` y`datastoreId`. Incluya también el `Resource` tipo de FHIR y los [parámetros de búsqueda](reference-fhir-search-parameters.md) compatibles. Para ver la ruta URL completa en el siguiente ejemplo, desplázate sobre el botón **Copiar**.

   ```
   GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource{?[parameters]{&_format=[mime-type]}}
   ```

1. Envíe la `GET` solicitud con la [versión 4 de AWS Signature](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) o SMART con la autorización del FHIR. El siguiente `curl` ejemplo devuelve el número total de `Patient` recursos de un almacén de HealthLake datos. Para ver el ejemplo completo, desplácese sobre el botón **Copiar**.

------
#### [ SigV4 ]

   Autorización SigV4

   ```
   curl --request GET \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_total=accurate' \   
     --aws-sigv4 'aws:amz:region:healthlake' \
     --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
     --header "x-amz-security-token:$AWS_SESSION_TOKEN" \                          
     --header 'Accept: application/json'
   ```

------
#### [ SMART on FHIR ]

   Ejemplo de autorización SMART on FHIR para el tipo de [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html)datos.

   ```
   {
       "AuthorizationStrategy": "SMART_ON_FHIR",
       "FineGrainedAuthorizationEnabled": true,
       "IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name",
       "Metadata": "{\"issuer\":\"https://ehr.example.com\", \"jwks_uri\":\"https://ehr.example.com/.well-known/jwks.json\",\"authorization_endpoint\":\"https://ehr.example.com/auth/authorize\",\"token_endpoint\":\"https://ehr.token.com/auth/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_basic\",\"foo\"],\"grant_types_supported\":[\"client_credential\",\"foo\"],\"registration_endpoint\":\"https://ehr.example.com/auth/register\",\"scopes_supported\":[\"openId\",\"profile\",\"launch\"],\"response_types_supported\":[\"code\"],\"management_endpoint\":\"https://ehr.example.com/user/manage\",\"introspection_endpoint\":\"https://ehr.example.com/user/introspect\",\"revocation_endpoint\":\"https://ehr.example.com/user/revoke\",\"code_challenge_methods_supported\":[\"S256\"],\"capabilities\":[\"launch-ehr\",\"sso-openid-connect\",\"client-public\",\"permission-v2\"]}"
   }
   ```

   La persona que llama puede asignar permisos en la lambda de autorización. Para obtener más información, consulte [OAuth osciloscopios 2.0](reference-smart-on-fhir-oauth-scopes.md).

------
#### [ AWS Console ]

**nota**  
La HealthLake consola solo admite la autorización SiGv4. La autorización SMART on FHIR se admite mediante AWS CLI y. AWS SDKs

   1. Inicie sesión en la página [Ejecutar consultas](https://console.aws.amazon.com/healthlake/home#/crud) de la HealthLake consola.

   2. En la sección de **configuración de consultas**, realice las siguientes selecciones.
   + **ID de almacén de datos**: elija un ID de almacén de datos para generar una cadena de consulta.
   + **Tipo de consulta**: elija`Search with GET`.
   + **Tipo de recurso**: elija el [tipo de recurso](reference-fhir-resource-types.md) del FHIR en el que desea buscar.
   + **Parámetros de búsqueda**: seleccione un [parámetro de búsqueda](reference-fhir-search-parameters.md) o una combinación de parámetros de búsqueda para centrar la consulta en registros específicos.

   3. Elija **Ejecutar consulta**.

------

## Ejemplos: busque con GET
<a name="searching-fhir-resources-get-examples"></a>

Las siguientes pestañas proporcionan ejemplos para buscar tipos de recursos específicos del FHIR con. `GET` Los ejemplos muestran cómo especificar los parámetros de búsqueda en la solicitud URLs.

**nota**  
La HealthLake consola solo admite la autorización SiGv4. La autorización SMART on FHIR se admite mediante AWS CLI y. AWS SDKs  
HealthLake admite un subconjunto de parámetros de búsqueda del FHIR R4. Para obtener más información, consulte [Parámetros de búsqueda](reference-fhir-search-parameters.md).

------
#### [ Patient (age) ]

Si bien la edad no es un tipo de recurso definido en el FHIR, se captura como un elemento del tipo de recurso. [https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html) Utilice el siguiente ejemplo para realizar una solicitud de búsqueda `GET` basada en tipos de [https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)recursos mediante el elemento [BirthDate](https://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate) y el [comparador de `eq` búsquedas](reference-fhir-search-parameters.md#search-comparators) para buscar personas nacidas en el año 1997.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?birthdate=eq1997
```

------
#### [ Condition ]

Utilice el siguiente ejemplo para realizar una `GET` solicitud sobre el tipo de [https://hl7.org/fhir/R4/condition.html](https://hl7.org/fhir/R4/condition.html)recurso. La búsqueda busca condiciones en el almacén de HealthLake datos que contienen el código médico de SNOMED`72892002`, que se traduce como. `Normal pregnancy`

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Condition?code=72892002
```

------
#### [ DocumentationReference ]

En el siguiente ejemplo, se muestra cómo crear una `GET` solicitud sobre el tipo de [https://hl7.org/fhir/R4/documentreference.html](https://hl7.org/fhir/R4/documentreference.html)recurso para `Patient` personas con diagnóstico de estreptococos y a quienes también se les ha recetado amoxicilina.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/DocumentReference?_lastUpdated=le2021-12-19&infer-icd10cm-entity-text-concept-score;=streptococcal|0.6&infer-rxnorm-entity-text-concept-score=Amoxicillin|0.8
```

------
#### [ Location ]

Utilice el siguiente ejemplo para realizar una solicitud sobre el tipo de recurso`GET`. [https://hl7.org/fhir/R4/location.html](https://hl7.org/fhir/R4/location.html) La siguiente búsqueda busca ubicaciones en el banco de HealthLake datos que contienen el nombre de la ciudad Boston como parte de la dirección.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Location?address=boston
```

------
#### [ Observation ]

Utilice el siguiente ejemplo para realizar una solicitud de búsqueda `GET` basada en el tipo [https://hl7.org/fhir/R4/observation.html](https://hl7.org/fhir/R4/observation.html)de recurso. Esta búsqueda utiliza el [parámetro `value-concept` de búsqueda](reference-fhir-search-parameters.md) para buscar el código médico`266919005`, que se traduce como`Never smoker`.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Observation?value-concept=266919005
```

------

# Búsqueda de recursos del FHIR con POST
<a name="searching-fhir-resources-post"></a>

Puede utilizar la [https://hl7.org/fhir/R4/search.html](https://hl7.org/fhir/R4/search.html)interacción del FHIR con `POST` las solicitudes para buscar en un banco de HealthLake datos. Cuando se usa`POST`, HealthLake admite los parámetros de búsqueda en la URL o en el cuerpo de una solicitud, pero no puede usar ambos en una sola solicitud.

**Importante**  
Para las búsquedas que incluyen información de identificación personal (PII) o información de salud protegida (PHI), las mejores prácticas de seguridad recomiendan el uso de `POST` solicitudes, ya que la PII y la PHI se agregan como parte del cuerpo de la solicitud y se cifran durante el tránsito.

El siguiente procedimiento va seguido de ejemplos en los que se utiliza la `search` interacción del FHIR R4 `POST` para buscar en un almacén de datos. HealthLake Los ejemplos muestran cómo especificar los parámetros de búsqueda en el cuerpo de la solicitud JSON.

**Para buscar en un HealthLake banco de datos con `POST`**  


1. Recopile HealthLake `region` y `datastoreId` valore. Para obtener más información, consulte [Obtención de propiedades de los almacenes de datos](managing-data-stores-describe.md).

1. Determine el tipo de recurso del FHIR para buscar y recopilar el `id` valor asociado. Para obtener más información, consulte [Tipos de recurso](reference-fhir-resource-types.md). 

1. Cree una URL para la solicitud utilizando los valores recopilados para HealthLake `region` y`datastoreId`. Incluya también el `Resource` tipo y la `_search` interacción del FHIR. Para ver la ruta URL completa en el siguiente ejemplo, desplázate sobre el botón **Copiar**.

   ```
   POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/_search
   ```

1. Cree un cuerpo JSON para la solicitud y especifique los datos del FHIR que desee buscar. Para realizar este procedimiento, buscará `Observation` recursos para encontrar pacientes que nunca hayan fumado. Para especificar el estado del código médico`Never smoker`, configúrelo `value-concept=266919005` en el cuerpo de la solicitud en JSON. Guarde el archivo como `search-observation.json`.

   ```
   value-concept=266919005
   ```

1. Envíe la solicitud . La `search` interacción con el FHIR utiliza la `GET` solicitud con la [versión 4 de AWS Signature](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) o SMART si cuenta con la autorización del FHIR.
**nota**  
Al realizar una `POST` solicitud con parámetros de búsqueda en el cuerpo de la solicitud, utilícelos `Content-Type: application/x-www-form-urlencoded` como parte del encabezado.

   En el siguiente `curl` ejemplo, se realiza una solicitud de búsqueda basada en POST para el tipo `Observation` de recurso. La solicitud utiliza el parámetro [https://hl7.org/fhir/R4/observation.html#search](https://hl7.org/fhir/R4/observation.html#search)de búsqueda para buscar un código médico `266919005` que indique un valor`Never smoker`. Para ver el ejemplo completo, desplázate sobre el botón **Copiar**.

------
#### [ SigV4 ]

   Autorización SigV4

   ```
   curl --request POST \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Observation/_search' \						
     --aws-sigv4 'aws:amz:region:healthlake' \
     --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
     --header "x-amz-security-token:$AWS_SESSION_TOKEN" \
     --header "Content-Type: application/x-www-form-urlencoded"							
     --header "Accept: application/json"
     --data @search-observation.json
   ```

------
#### [ SMART on FHIR ]

   Ejemplo de autorización SMART on FHIR para el tipo de [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html)datos.

   ```
   {
       "AuthorizationStrategy": "SMART_ON_FHIR",
       "FineGrainedAuthorizationEnabled": true,
       "IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name",
       "Metadata": "{\"issuer\":\"https://ehr.example.com\", \"jwks_uri\":\"https://ehr.example.com/.well-known/jwks.json\",\"authorization_endpoint\":\"https://ehr.example.com/auth/authorize\",\"token_endpoint\":\"https://ehr.token.com/auth/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_basic\",\"foo\"],\"grant_types_supported\":[\"client_credential\",\"foo\"],\"registration_endpoint\":\"https://ehr.example.com/auth/register\",\"scopes_supported\":[\"openId\",\"profile\",\"launch\"],\"response_types_supported\":[\"code\"],\"management_endpoint\":\"https://ehr.example.com/user/manage\",\"introspection_endpoint\":\"https://ehr.example.com/user/introspect\",\"revocation_endpoint\":\"https://ehr.example.com/user/revoke\",\"code_challenge_methods_supported\":[\"S256\"],\"capabilities\":[\"launch-ehr\",\"sso-openid-connect\",\"client-public\",\"permission-v2\"]}"
   }
   ```

   La persona que llama puede asignar permisos en la lambda de autorización. Para obtener más información, consulte [OAuth osciloscopios 2.0](reference-smart-on-fhir-oauth-scopes.md).

------

## Ejemplos: buscar con POST
<a name="searching-fhir-resources-post-examples"></a>

Las siguientes pestañas proporcionan ejemplos para buscar tipos de recursos específicos del FHIR con. `POST` Los ejemplos muestran cómo especificar una solicitud en el URLs.

**nota**  
La HealthLake consola solo admite la autorización SiGv4. La autorización SMART on FHIR se admite mediante AWS CLI y. AWS SDKs  
HealthLake admite un subconjunto de parámetros de búsqueda del FHIR R4. Para obtener más información, consulte [Parámetros de búsqueda](reference-fhir-search-parameters.md).

------
#### [ Patient (age) ]

Si bien la edad no es un tipo de recurso definido en el FHIR, se captura como un elemento del tipo de recurso. [https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html) Utilice el siguiente ejemplo para realizar una solicitud de búsqueda `POST` basada en el tipo de `Patient` recurso. En el siguiente ejemplo de búsqueda, se utiliza el `eq` [comparador](reference-fhir-search-parameters.md#search-comparators) de búsquedas para buscar personas nacidas en 1997.

```
POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/_search
```

Para especificar el año 1997 en la búsqueda, añada el siguiente elemento al cuerpo de la solicitud.

```
birthdate=eq1997
```

------
#### [ Condition ]

Utilice lo siguiente para realizar una `POST` solicitud sobre el tipo `Condition` de recurso. Esta búsqueda busca ubicaciones en su almacén de HealthLake datos que contienen el código médico`72892002`.

Debe especificar la URL de la solicitud y el cuerpo de la solicitud. A continuación, se muestra un ejemplo de la URL de la solicitud.

```
POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Condition/_search
```

Para especificar el código médico que desea buscar, añada el siguiente elemento JSON al cuerpo de la solicitud.

```
code=72892002
```

------
#### [ DocumentReference ]

Para ver los resultados del procesamiento HealthLake del lenguaje natural (NLP) integrado al realizar una `POST` solicitud sobre el tipo de `DocumentReference` recurso, formatee la solicitud de la siguiente manera.

```
POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/DocumentReference/_search
```

Para especificar los parámetros de `DocumentReference` búsqueda a los que se debe hacer referencia, consulte[Tipos de parámetros de búsqueda](reference-fhir-search-parameters.md#search-parameter-types). La siguiente cadena de consulta utiliza varios parámetros de búsqueda para buscar en las operaciones de la API Amazon Comprehend Medical utilizadas para generar los resultados de la PNL integrada.

```
_lastUpdated=le2021-12-19&infer-icd10cm-entity-text-concept-score;=streptococcal|0.6&infer-rxnorm-entity-text-concept-score=Amoxicillin|0.8
```

------
#### [ Location ]

Utilice el siguiente ejemplo para realizar una `POST` solicitud sobre el tipo de `Location` recurso. La búsqueda busca ubicaciones en el almacén de HealthLake datos que contienen el nombre de la ciudad Boston como parte de la dirección.

Debe especificar la URL y el cuerpo de la solicitud. A continuación, se muestra un ejemplo de la URL de la solicitud.

```
POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Location/_search
```

Para `Boston` especificarlo en la búsqueda, agrega el siguiente elemento al cuerpo de la solicitud:

```
address=Boston
```

------
#### [ Observation ]

Utilice el siguiente ejemplo para realizar una solicitud de búsqueda `POST` basada en el tipo `Observation` de recurso. La búsqueda utiliza el parámetro de `value-concept` búsqueda para buscar el código médico `266919005` que indica`Never smoker`.

```
POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Observation/_search
```

Para especificar el estado`Never smoker`, `value-concept=266919005` establézcalo en el cuerpo del JSON.

```
value-concept=266919005
```

------

# Niveles de consistencia de búsqueda del FHIR
<a name="searching-fhir-consistency-levels"></a>

El índice HealthLake de búsqueda de AWS funciona según un modelo de coherencia eventual para `GET` y `POST` con las operaciones de BÚSQUEDA. En aras de la coherencia, si hay una actualización pendiente del índice de búsqueda de un recurso, los resultados de la búsqueda excluyen la versión N-1 del recurso hasta que se complete la actualización del índice.

 AWS HealthLake ahora incluye la posibilidad de seleccionar cómo se comportará el modelo de coherencia para los recursos actualizados. Los desarrolladores pueden incluir «coherencia eventual», el comportamiento predeterminado descrito anteriormente, o «coherencia sólida». Strong Consistency permitirá incluir en los resultados de la búsqueda la versión N-1 del recurso para los recursos con actualizaciones pendientes de los índices de búsqueda. Esto se puede utilizar en casos de uso en los que se requieran todos los recursos en el resultado, incluso cuando la actualización del índice de búsqueda aún no se haya completado. Los clientes pueden controlar este comportamiento mediante el encabezado de la `x-amz-fhir-history-consistency-level` solicitud. 

## Niveles de consistencia
<a name="fhir-search-consistency-levels"></a>

Consistencia sólida  
`x-amz-fhir-history-consistency-level: strong`Configúrelo para que devuelva todos los registros coincidentes, incluidos aquellos con actualizaciones pendientes en el índice de búsqueda. Utilice esta opción cuando necesite buscar recursos inmediatamente después de las actualizaciones.

Consistencia final  
`x-amz-fhir-history-consistency-level: eventual`Configúrelo para que se devuelvan solo los registros que hayan completado las actualizaciones del índice de búsqueda. Este es el comportamiento predeterminado si no se especifica ningún nivel de coherencia.

## Ejemplo de uso
<a name="fhir-search-usage"></a>

1. Al actualizar un recurso:

   ```
   POST <baseURL>/Patient
   Content-Type: application/fhir+json
   x-amz-fhir-history-consistency-level: strong
   
   {
     "resourceType": "Patient",
     "id": "123",
     "meta": {
       "profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"]
     },
     "identifier": [
       {
         "system": "http://example.org/identifiers",
         "value": "123"
       }
     ],
     "active": true,
     "name": [
       {
         "family": "Smith",
         "given": ["John"]
       }
     ],
     "gender": "male",
     "birthDate": "1970-01-01"
   }
   ```

1. Búsqueda posterior:

   ```
   GET <baseURL>/Patient?_id=123
   ```

## Prácticas recomendadas
<a name="fhir-search-best-practices"></a>
+ Utilice una coherencia sólida cuando necesite buscar inmediatamente recursos actualizados recientemente
+ Utilice la coherencia eventual para las consultas generales en las que la visibilidad inmediata no sea fundamental
+ Tenga en cuenta el equilibrio entre la visibilidad inmediata y el posible impacto en el rendimiento

**nota**  
La configuración del nivel de coherencia afecta a la rapidez con la que aparecen los recursos actualizados en los resultados de búsqueda, pero no afecta al almacenamiento real de los recursos.  
Si se establece el `x-amz-fhir-history-consistency-level` encabezado opcional en «fuerte», se duplica el consumo de capacidad de escritura por recurso.  
Esta función solo se aplica a los almacenes de datos que tienen activado el historial de versiones (todos los almacenes de datos creados después del 25 de octubre de 2024 lo tienen activado de forma predeterminada).