

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Recherche de ressources FHIR dans AWS HealthLake
<a name="searching-fhir-resources"></a>

Utilisez l'[https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)interaction FHIR pour rechercher un ensemble de ressources FHIR dans un magasin de HealthLake données en fonction de certains critères de filtrage. L'`search`interaction peut être effectuée à l'aide d'une `POST` demande `GET` ou. Pour les recherches impliquant des informations personnelles identifiables (PII) ou des informations de santé protégées (PHI), il est recommandé d'utiliser des `POST` demandes, car les informations personnelles et les PHI sont ajoutées dans le corps de la demande et sont cryptées pendant le transfert.

**Note**  
L'`search`interaction FHIR décrite dans ce chapitre est construite conformément à la norme HL7 FHIR R4 pour l'échange de données sur les soins de santé. Comme il s'agit d'une représentation d'un service HL7 FHIR, il n'est pas proposé par le biais de AWS CLI et AWS SDKs. Pour plus d'informations, consultez la [https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)documentation de l'** RESTful API FHIR R4**.

HealthLake prend en charge un sous-ensemble de paramètres de recherche FHIR R4. Pour de plus amples informations, veuillez consulter [Paramètres de recherche FHIR R4 pour HealthLake](reference-fhir-search-parameters.md).

**Topics**
+ [Recherche avec GET](searching-fhir-resources-get.md)
+ [Recherche avec POST](searching-fhir-resources-post.md)
+ [Niveaux de cohérence des recherches](searching-fhir-consistency-levels.md)

# Recherche de ressources FHIR avec GET
<a name="searching-fhir-resources-get"></a>

Vous pouvez utiliser des `GET` requêtes pour effectuer une recherche dans un magasin de HealthLake données. Lors de l'utilisation`GET`, HealthLake prend en charge la fourniture de paramètres de recherche dans le cadre de l'URL, mais pas dans le corps d'une requête. Pour de plus amples informations, veuillez consulter [Paramètres de recherche FHIR R4 pour HealthLake](reference-fhir-search-parameters.md).

**Important**  
Pour les recherches impliquant des informations personnelles identifiables (PII) ou des informations de santé protégées (PHI), les meilleures pratiques en matière de sécurité nécessitent l'utilisation de `POST` demandes, car les informations personnelles et les PHI sont ajoutées dans le corps de la demande et sont cryptées pendant le transfert. Pour de plus amples informations, veuillez consulter [Recherche de ressources FHIR avec POST](searching-fhir-resources-post.md).

La procédure suivante est suivie d'exemples utilisés `GET` pour effectuer des recherches dans un magasin de HealthLake données.

**Pour effectuer une recherche dans un magasin de HealthLake données avec `GET`**  


1. Collectez HealthLake `region` et `datastoreId` valorisez. Pour de plus amples informations, veuillez consulter [Obtenir les propriétés du magasin de données](managing-data-stores-describe.md).

1. Déterminez le type de ressource FHIR à rechercher et collectez la `id` valeur associée. Pour de plus amples informations, veuillez consulter [Types de ressources](reference-fhir-resource-types.md). 

1. Construisez une URL pour la demande en utilisant les valeurs collectées pour HealthLake `region` et`datastoreId`. Incluez également le `Resource` type FHIR et les [paramètres de recherche](reference-fhir-search-parameters.md) pris en charge. Pour afficher le chemin complet de l'URL dans l'exemple suivant, faites défiler le curseur sur le bouton **Copier**.

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

1. Envoyez la `GET` demande avec [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) ou SMART sur autorisation FHIR. L'`curl`exemple suivant renvoie le nombre total de `Patient` ressources dans un magasin de HealthLake données. Pour afficher l'exemple dans son intégralité, faites défiler la souris sur le bouton **Copier**.

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

   Autorisation 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 ]

   Exemple d'autorisation SMART sur FHIR pour le type de [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html)données.

   ```
   {
       "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\"]}"
   }
   ```

   L'appelant peut attribuer des autorisations dans le lambda d'autorisation. Pour de plus amples informations, veuillez consulter [OAuth Éscopes 2.0](reference-smart-on-fhir-oauth-scopes.md).

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

**Note**  
La HealthLake console prend uniquement en charge l'autorisation SigV4. L'autorisation SMART on FHIR est prise en charge via AWS CLI et AWS SDKs.

   1. Connectez-vous à la page [Exécuter une requête](https://console.aws.amazon.com/healthlake/home#/crud) sur la HealthLake console.

   2. Dans la section **Paramètres de requête**, effectuez les sélections suivantes.
   + **ID du magasin de données** : choisissez un identifiant de magasin de données pour générer une chaîne de requête.
   + **Type de requête** : choisissez`Search with GET`.
   + **Type de ressource** : choisissez le type de [ressource FHIR sur lequel](reference-fhir-resource-types.md) effectuer la recherche.
   + **Paramètres de recherche** : sélectionnez un [paramètre de recherche](reference-fhir-search-parameters.md) ou une combinaison de paramètres de recherche pour concentrer votre recherche sur des enregistrements spécifiques.

   3. Choisissez **Exécuter la requête**.

------

## Exemples : recherche avec GET
<a name="searching-fhir-resources-get-examples"></a>

Les onglets suivants fournissent des exemples de recherche sur des types de ressources FHIR spécifiques avec`GET`. Les exemples montrent comment spécifier les paramètres de recherche dans la demande URLs.

**Note**  
La HealthLake console prend uniquement en charge l'autorisation SigV4. L'autorisation SMART on FHIR est prise en charge via AWS CLI et AWS SDKs.  
HealthLake prend en charge un sous-ensemble de paramètres de recherche FHIR R4. Pour de plus amples informations, veuillez consulter [Paramètres de recherche](reference-fhir-search-parameters.md).

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

Bien que l'âge ne soit pas un type de ressource défini dans le FHIR, il est capturé en tant qu'élément du type de [https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)ressource. Utilisez l'exemple suivant pour effectuer une demande de recherche `GET` basée sur les types de [https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)ressources à l'aide de l'élément [BirthDate](https://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate) et du `eq` [comparateur](reference-fhir-search-parameters.md#search-comparators) de recherche pour rechercher des personnes nées en 1997.

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

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

Utilisez l'exemple suivant pour effectuer une `GET` demande sur le type de [https://hl7.org/fhir/R4/condition.html](https://hl7.org/fhir/R4/condition.html)ressource. La recherche permet de trouver dans votre banque de HealthLake données les conditions qui contiennent le code médical SNOMED`72892002`, qui se traduit par. `Normal pregnancy`

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

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

L'exemple suivant montre comment créer une `GET` demande sur le type de [https://hl7.org/fhir/R4/documentreference.html](https://hl7.org/fhir/R4/documentreference.html)ressource pour `Patient` les personnes ayant reçu un diagnostic de streptocoque et à qui l'amoxicilline a également été prescrite.

```
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 ]

Utilisez l'exemple suivant pour effectuer une `GET` demande sur le type de [https://hl7.org/fhir/R4/location.html](https://hl7.org/fhir/R4/location.html)ressource. La recherche suivante permet de trouver les emplacements de votre banque de HealthLake données dont l'adresse contient le nom de ville Boston.

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

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

Utilisez l'exemple suivant pour effectuer une demande de recherche `GET` basée sur le type de [https://hl7.org/fhir/R4/observation.html](https://hl7.org/fhir/R4/observation.html)ressource. Cette recherche utilise le [paramètre `value-concept` de recherche](reference-fhir-search-parameters.md) pour rechercher le code médical`266919005`, qui se traduit par`Never smoker`.

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

------

# Recherche de ressources FHIR avec POST
<a name="searching-fhir-resources-post"></a>

Vous pouvez utiliser l'[https://hl7.org/fhir/R4/search.html](https://hl7.org/fhir/R4/search.html)interaction FHIR avec les `POST` demandes de recherche dans un magasin de HealthLake données. Lors de l'utilisation`POST`, HealthLake prend en charge les paramètres de recherche dans l'URL ou dans le corps d'une requête, mais vous ne pouvez pas utiliser les deux dans une seule demande.

**Important**  
Pour les recherches impliquant des informations personnelles identifiables (PII) ou des informations de santé protégées (PHI), les meilleures pratiques de sécurité nécessitent l'utilisation de `POST` demandes, car les informations personnelles et les PHI sont ajoutées dans le corps de la demande et sont cryptées pendant le transfert.

La procédure suivante est suivie d'exemples utilisant l'`search`interaction FHIR R4 avec `POST` pour rechercher un magasin de HealthLake données. Les exemples montrent comment spécifier les paramètres de recherche dans le corps de la requête JSON.

**Pour effectuer une recherche dans un magasin de HealthLake données avec `POST`**  


1. Collectez HealthLake `region` et `datastoreId` valorisez. Pour de plus amples informations, veuillez consulter [Obtenir les propriétés du magasin de données](managing-data-stores-describe.md).

1. Déterminez le type de ressource FHIR à rechercher et collectez la `id` valeur associée. Pour de plus amples informations, veuillez consulter [Types de ressources](reference-fhir-resource-types.md). 

1. Créez une URL pour la demande en utilisant les valeurs collectées pour HealthLake `region` et`datastoreId`. Incluez également le `Resource` type de FHIR et `_search` l'interaction. Pour afficher le chemin complet de l'URL dans l'exemple suivant, faites défiler le curseur sur le bouton **Copier**.

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

1. Construisez un corps JSON pour la demande, en spécifiant les données FHIR à rechercher. Dans le cadre de cette procédure, vous allez rechercher `Observation` des ressources pour découvrir des patients qui n'ont jamais fumé. Pour spécifier le statut du code médical`Never smoker`, définissez-le `value-concept=266919005` dans le corps de la requête JSON. Enregistrez le fichier sous le nom `search-observation.json`.

   ```
   value-concept=266919005
   ```

1. Envoyez la demande . L'`search`interaction FHIR utilise la `GET` demande avec [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) ou SMART sur autorisation FHIR.
**Note**  
Lorsque vous faites une `POST` demande avec des paramètres de recherche dans le corps de la demande, `Content-Type: application/x-www-form-urlencoded` utilisez-les dans le cadre de l'en-tête.

   L'`curl`exemple suivant génère une demande de recherche basée sur le post sur le type de `Observation` ressource. La demande utilise le paramètre [https://hl7.org/fhir/R4/observation.html#search](https://hl7.org/fhir/R4/observation.html#search)de recherche pour rechercher un code médical `266919005` indiquant une valeur`Never smoker`. Pour afficher l'exemple dans son intégralité, faites défiler la souris sur le bouton **Copier**.

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

   Autorisation 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 ]

   Exemple d'autorisation SMART sur FHIR pour le type de [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html)données.

   ```
   {
       "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\"]}"
   }
   ```

   L'appelant peut attribuer des autorisations dans le lambda d'autorisation. Pour de plus amples informations, veuillez consulter [OAuth Éscopes 2.0](reference-smart-on-fhir-oauth-scopes.md).

------

## Exemples : recherche avec POST
<a name="searching-fhir-resources-post-examples"></a>

Les onglets suivants fournissent des exemples de recherche sur des types de ressources FHIR spécifiques avec`POST`. Les exemples montrent comment spécifier une demande dans le URLs.

**Note**  
La HealthLake console prend uniquement en charge l'autorisation SigV4. L'autorisation SMART on FHIR est prise en charge via AWS CLI et AWS SDKs.  
HealthLake prend en charge un sous-ensemble de paramètres de recherche FHIR R4. Pour de plus amples informations, veuillez consulter [Paramètres de recherche](reference-fhir-search-parameters.md).

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

Bien que l'âge ne soit pas un type de ressource défini dans le FHIR, il est capturé en tant qu'élément du type de [https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)ressource. Utilisez l'exemple suivant pour effectuer une demande de recherche `POST` basée sur le type de `Patient` ressource. L'exemple de recherche suivant utilise le [comparateur `eq` de](reference-fhir-search-parameters.md#search-comparators) recherche pour rechercher des personnes nées en 1997.

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

Pour spécifier l'année 1997 dans la recherche, ajoutez l'élément suivant dans le corps de la demande.

```
birthdate=eq1997
```

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

Utilisez ce qui suit pour effectuer une `POST` demande sur le type de `Condition` ressource. Cette recherche permet de trouver les emplacements de votre banque de HealthLake données qui contiennent le code médical`72892002`.

Vous devez spécifier une URL de demande et un corps de demande. Voici un exemple d'URL de demande.

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

Pour spécifier le code médical que vous souhaitez rechercher, ajoutez l'élément JSON suivant dans le corps de la requête.

```
code=72892002
```

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

Pour voir les résultats du traitement HealthLake du langage naturel (NLP) intégré lorsque vous faites une `POST` demande sur le type de `DocumentReference` ressource, formatez la demande comme suit.

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

Pour spécifier les paramètres `DocumentReference` de recherche à référencer, voir[Types de paramètres de recherche](reference-fhir-search-parameters.md#search-parameter-types). La chaîne de requête suivante utilise plusieurs paramètres de recherche pour effectuer une recherche sur les opérations de l'API Amazon Comprehend Medical utilisées pour générer les résultats NLP intégrés.

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

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

Utilisez l'exemple suivant pour effectuer une `POST` demande sur le type de `Location` ressource. La recherche permet de trouver des emplacements dans votre banque de HealthLake données dont l'adresse contient le nom de la ville de Boston.

Vous devez spécifier une URL de demande et un corps de demande. Voici un exemple d'URL de demande.

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

Pour spécifier `Boston` dans la recherche, ajoutez l'élément suivant dans le corps de la requête :

```
address=Boston
```

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

Utilisez l'exemple suivant pour effectuer une demande de recherche `POST` basée sur le type de `Observation` ressource. La recherche utilise le paramètre `value-concept` de recherche pour rechercher le code médical, `266919005` qui indique`Never smoker`.

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

Pour spécifier le statut`Never smoker`, définissez-le `value-concept=266919005` dans le corps du JSON.

```
value-concept=266919005
```

------

# Niveaux de cohérence des recherches FHIR
<a name="searching-fhir-consistency-levels"></a>

L'index HealthLake de recherche d'AWS fonctionne selon un modèle de cohérence éventuelle pour `GET` et `POST` avec les opérations de recherche. Pour des raisons de cohérence, si une mise à jour de l'index de recherche est en attente pour une ressource, les résultats de la recherche excluent la version N-1 de la ressource jusqu'à ce que la mise à jour de l'index soit terminée.

 AWS inclut HealthLake désormais la possibilité de sélectionner le comportement du modèle de cohérence pour les ressources mises à jour. Les développeurs peuvent inclure soit la « cohérence éventuelle », le comportement par défaut décrit ci-dessus, soit la « cohérence forte ». Une forte cohérence permettra d'inclure dans les résultats de recherche la version N-1 de la ressource pour les ressources dont les mises à jour de l'index de recherche sont en attente. Cela peut être utilisé pour des scénarios d'utilisation où toutes les ressources sont requises dans le résultat même lorsque la mise à jour de l'index de recherche n'est pas encore terminée. Les clients peuvent contrôler ce comportement à l'aide de l'en-tête de `x-amz-fhir-history-consistency-level` demande. 

## Niveaux de cohérence
<a name="fhir-search-consistency-levels"></a>

Forte cohérence  
`x-amz-fhir-history-consistency-level: strong`Paramétré pour renvoyer tous les enregistrements correspondants, y compris ceux dont les mises à jour de l'index de recherche sont en attente. Utilisez cette option lorsque vous devez rechercher des ressources immédiatement après les mises à jour.

Cohérence à terme  
Paramétré `x-amz-fhir-history-consistency-level: eventual` pour renvoyer uniquement les enregistrements dont les mises à jour de l'index de recherche sont terminées. Il s'agit du comportement par défaut si aucun niveau de cohérence n'est spécifié.

## Exemple d’utilisation
<a name="fhir-search-usage"></a>

1. Lors de la mise à jour d'une ressource :

   ```
   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. Recherche ultérieure :

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

## Bonnes pratiques
<a name="fhir-search-best-practices"></a>
+ Faites preuve d'une grande cohérence lorsque vous devez rechercher immédiatement des ressources récemment mises à jour
+ Utilisez la cohérence éventuelle pour les requêtes générales pour lesquelles une visibilité immédiate n'est pas essentielle
+ Tenez compte du compromis entre visibilité immédiate et impact potentiel sur les performances

**Note**  
Le paramètre du niveau de cohérence influe sur la rapidité avec laquelle les ressources mises à jour apparaissent dans les résultats de recherche, mais n'a aucune incidence sur le stockage réel des ressources.  
Le fait de définir l'`x-amz-fhir-history-consistency-level`en-tête facultatif sur « fort » double la consommation de capacité d'écriture par ressource.  
Cette fonctionnalité s'applique uniquement aux magasins de données dont l'historique des versions est activé (tous les magasins de données créés après le 25 octobre 2024 l'ont activé par défaut).