

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# での FHIR リソースの検索 AWS HealthLake
<a name="searching-fhir-resources"></a>

FHIR [https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)インタラクションを使用して、いくつかのフィルター条件に基づいて HealthLake データストア内の一連の FHIR リソースを検索します。`search` インタラクションは、 `GET`または `POST`リクエストを使用して実行できます。個人を特定できる情報 (PII) または保護された医療情報 (PHI) を含む検索では、PII と PHI が`POST`リクエスト本文の一部として追加され、転送中に暗号化されるため、リクエストを使用することをお勧めします。

**注記**  
この章で説明する FHIR `search`インタラクションは、医療データ交換のための HL7 FHIR R4 標準に準拠して構築されています。HL7 FHIR サービスの表現であるため、 AWS CLI および AWS SDKs では提供されません。詳細については、FHIR R4 RESTful API ドキュメント[https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)の「」を参照してください。 ** R4 RESTful **

HealthLake は、FHIR R4 検索パラメータのサブセットをサポートしています。詳細については、「[HealthLake の FHIR R4 検索パラメータ](reference-fhir-search-parameters.md)」を参照してください。

**Topics**
+ [GET での検索](searching-fhir-resources-get.md)
+ [POST での検索](searching-fhir-resources-post.md)
+ [検索整合性レベル](searching-fhir-consistency-levels.md)

# GET を使用した FHIR リソースの検索
<a name="searching-fhir-resources-get"></a>

`GET` リクエストを使用して HealthLake データストアを検索できます。を使用する場合`GET`、HealthLake は検索パラメータを URL の一部として提供できますが、リクエスト本文の一部として提供することはできません。詳細については、「[HealthLake の FHIR R4 検索パラメータ](reference-fhir-search-parameters.md)」を参照してください。

**[重要]**  
個人を特定できる情報 (PII) または保護された医療情報 (PHI) を含む検索の場合、PII と PHI は`POST`リクエスト本文の一部として追加され、転送中に暗号化されるため、セキュリティのベストプラクティスではリクエストの使用が要求されます。詳細については、「[POST を使用した FHIR リソースの検索](searching-fhir-resources-post.md)」を参照してください。

次の手順に続いて、 を使用して HealthLake データストア`GET`を検索する例を示します。

**で HealthLake データストアを検索するには `GET`**  


1. HealthLake `region`と `datastoreId`の値を収集します。詳細については、「[データストアのプロパティの取得](managing-data-stores-describe.md)」を参照してください。

1. 関連する`id`値を検索して収集する FHIR リソースのタイプを決定します。詳細については、「[リソースタイプ:](reference-fhir-resource-types.md)」を参照してください。

1. HealthLake `region`と の収集された値を使用して、リクエストの URL を作成します`datastoreId`。FHIR `Resource`タイプとサポートされている[検索パラメータ](reference-fhir-search-parameters.md)も含めます。次の例の URL パス全体を表示するには、**コピー**ボタンをスクロールします。

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

1. [AWS 署名バージョン 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) または SMART on FHIR 認可を使用して`GET`リクエストを送信します。次の`curl`例では、HealthLake データストア内の`Patient`リソースの総数を返します。例全体を表示するには、**コピー**ボタンをスクロールします。

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

   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 ]

   [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html) データ型の FHIR 認可の SMART の例。

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

   発信者は認可 Lambda でアクセス許可を割り当てることができます。詳細については、「[OAuth 2.0 スコープ](reference-smart-on-fhir-oauth-scopes.md)」を参照してください。

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

**注記**  
HealthLake コンソールは SigV4 認可のみをサポートします。SMART on FHIR 認可は、 AWS CLI および AWS SDKs。

   1. HealthLake コンソールの[クエリの実行](https://console.aws.amazon.com/healthlake/home#/crud)ページにサインインします。

   2. **クエリ設定**セクションで、次の選択を行います。
   + **データストア ID** — データストア ID を選択してクエリ文字列を生成します。
   + **クエリタイプ** — を選択します`Search with GET`。
   + **リソースタイプ** — 検索する FHIR [リソースタイプ](reference-fhir-resource-types.md)を選択します。
   + **検索パラメータ** — [検索パラメータ](reference-fhir-search-parameters.md)または検索パラメータの組み合わせを選択して、クエリを特定のレコードに集中させます。

   3. **[Run query]** (クエリの実行) を選択します。

------

## 例: GET で検索する
<a name="searching-fhir-resources-get-examples"></a>

次のタブでは、 で特定の FHIR リソースタイプを検索するための例を示します`GET`。この例では、リクエスト URLs で検索パラメータを指定する方法を示します。

**注記**  
HealthLake コンソールは SigV4 認可のみをサポートします。SMART on FHIR 認可は、 AWS CLI および AWS SDKs。  
HealthLake は、FHIR R4 検索パラメータのサブセットをサポートしています。詳細については、「[検索パラメータ](reference-fhir-search-parameters.md)」を参照してください。

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

age は FHIR で定義されたリソースタイプではありませんが、[https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)リソースタイプの 要素としてキャプチャされます。次の例を使用して、[birthDate](https://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate) 要素を使用して[https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)リソースタイプに対して `GET`ベースの検索リクエストを行い、`eq`[検索コンパレータ](reference-fhir-search-parameters.md#search-comparators)を使用して 1997 年生まれの個人を検索します。

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

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

次の例を使用して、 [https://hl7.org/fhir/R4/condition.html](https://hl7.org/fhir/R4/condition.html)リソースタイプに対して`GET`リクエストを行います。検索では、SNOMED 医療コード を含む HealthLake データストア内の条件が検索され`72892002`、 に変換されます`Normal pregnancy`。

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

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

次の例は、レンサ球菌の診断を受け、アモキシシリンも処方された `Patient`(s) の[https://hl7.org/fhir/R4/documentreference.html](https://hl7.org/fhir/R4/documentreference.html)リソースタイプに対して`GET`リクエストを作成する方法を示しています。

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

次の例を使用して、 [https://hl7.org/fhir/R4/location.html](https://hl7.org/fhir/R4/location.html)リソースタイプに対して`GET`リクエストを行います。次の検索では、住所の一部としてボストンという都市名を含む HealthLake データストア内の場所を検索します。

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

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

次の例を使用して、[https://hl7.org/fhir/R4/observation.html](https://hl7.org/fhir/R4/observation.html)リソースタイプに対して `GET`ベースの検索リクエストを行います。この検索では、`value-concept`[検索パラメータ](reference-fhir-search-parameters.md)を使用して`266919005`、 に変換される医療コード を検索します`Never smoker`。

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

------

# POST を使用した FHIR リソースの検索
<a name="searching-fhir-resources-post"></a>

`POST` リクエストとの FHIR [https://hl7.org/fhir/R4/search.html](https://hl7.org/fhir/R4/search.html)インタラクションを使用して HealthLake データストアを検索できます。を使用する場合`POST`、HealthLake は URL またはリクエスト本文の検索パラメータをサポートしますが、両方を 1 つのリクエストで使用することはできません。

**[重要]**  
個人を特定できる情報 (PII) または保護された医療情報 (PHI) を含む検索の場合、PII と PHI は`POST`リクエスト本文の一部として追加され、転送中に暗号化されるため、セキュリティのベストプラクティスではリクエストの使用が要求されます。

次の手順に続いて、 との FHIR R4 `search`インタラクションを使用して HealthLake データストア`POST`を検索する例を示します。この例では、JSON リクエスト本文で検索パラメータを指定する方法を示します。

**で HealthLake データストアを検索するには `POST`**  


1. HealthLake `region`と `datastoreId`の値を収集します。詳細については、「[データストアのプロパティの取得](managing-data-stores-describe.md)」を参照してください。

1. 関連する`id`値を検索して収集する FHIR リソースのタイプを決定します。詳細については、「[リソースタイプ:](reference-fhir-resource-types.md)」を参照してください。

1. HealthLake `region`と の収集された値を使用して、リクエストの URL を作成します`datastoreId`。FHIR `Resource`タイプと`_search`インタラクションも含めます。次の例の URL パス全体を表示するには、**コピー**ボタンをスクロールします。

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

1. 検索する FHIR データを指定して、リクエストの JSON 本文を作成します。この手順では、`Observation`リソースを検索して、一度も喫煙したことのない患者を検出します。医療コードのステータス を指定するには`Never smoker`、JSON リクエスト本文`value-concept=266919005`で を設定します。`search-observation.json` という名前でファイルを保存します。

   ```
   value-concept=266919005
   ```

1.  リクエストを送信します。FHIR `search`インタラクションは、[AWS 署名バージョン 4 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)または SMART on FHIR 認可のいずれかで`GET`リクエストを使用します。
**注記**  
`POST` リクエスト本文の検索パラメータを使用してリクエストを行う場合は、 ヘッダー`Content-Type: application/x-www-form-urlencoded`の一部として を使用します。

   次の`curl`例では、 `Observation`リソースタイプに対して POST ベースの検索リクエストを作成します。リクエストは[https://hl7.org/fhir/R4/observation.html#search](https://hl7.org/fhir/R4/observation.html#search)検索パラメータを使用して、値 `266919005`を示す医療コードを検索します`Never smoker`。例全体を表示するには、**コピー**ボタンをスクロールします。

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

   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 ]

   [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html) データ型の FHIR 認可の SMART の例。

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

   発信者は認可 Lambda でアクセス許可を割り当てることができます。詳細については、「[OAuth 2.0 スコープ](reference-smart-on-fhir-oauth-scopes.md)」を参照してください。

------

## 例: POST で検索する
<a name="searching-fhir-resources-post-examples"></a>

次のタブでは、 で特定の FHIR リソースタイプを検索するための例を示します`POST`。この例では、URLs でリクエストを指定する方法を示します。

**注記**  
HealthLake コンソールは SigV4 認可のみをサポートします。SMART on FHIR 認可は、 AWS CLI および AWS SDKs。  
HealthLake は、FHIR R4 検索パラメータのサブセットをサポートしています。詳細については、「[検索パラメータ](reference-fhir-search-parameters.md)」を参照してください。

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

age は FHIR で定義されたリソースタイプではありませんが、[https://hl7.org/fhir/R4/patient.html](https://hl7.org/fhir/R4/patient.html)リソースタイプの 要素としてキャプチャされます。次の例を使用して、`Patient`リソースタイプに対して `POST`ベースの検索リクエストを行います。次の検索例では、`eq`[検索コンパレータ](reference-fhir-search-parameters.md#search-comparators)を使用して 1997 年生まれの個人を検索します。

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

検索で 1997 年を指定するには、リクエスト本文に次の要素を追加します。

```
birthdate=eq1997
```

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

以下を使用して、`Condition`リソースタイプに対して`POST`リクエストを行います。この検索では、医療コード を含む HealthLake データストア内の場所を検索します`72892002`。

リクエスト URL とリクエスト本文を指定する必要があります。リクエスト URL の例を次に示します。

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

検索する医療コードを指定するには、次の JSON 要素をリクエスト本文に追加します。

```
code=72892002
```

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

`DocumentReference` リソースタイプで`POST`リクエストを行うときに HealthLake の統合自然言語処理 (NLP) の結果を表示するには、次のようにリクエストをフォーマットします。

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

参照する`DocumentReference`検索パラメータを指定するには、「」を参照してください[検索パラメータタイプ](reference-fhir-search-parameters.md#search-parameter-types)。次のクエリ文字列は、複数の検索パラメータを使用して、統合された NLP 結果の生成に使用される Amazon Comprehend Medical API オペレーションを検索します。

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

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

次の例を使用して、 `Location`リソースタイプに対して`POST`リクエストを行います。検索では、住所の一部としてボストンという都市名を含む HealthLake データストア内の場所を検索します。

リクエスト URL とリクエスト本文を指定する必要があります。リクエスト URL の例を次に示します。

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

検索`Boston`で を指定するには、リクエスト本文に次の要素を追加します。

```
address=Boston
```

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

次の例を使用して、`Observation`リソースタイプに対して `POST`ベースの検索リクエストを行います。検索では、`value-concept`検索パラメータを使用して、 `266919005`を示す医療コードを検索します`Never smoker`。

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

ステータスを指定するには、JSON `Never smoker` の本文`value-concept=266919005`に を設定します。

```
value-concept=266919005
```

------

# FHIR 検索整合性レベル
<a name="searching-fhir-consistency-levels"></a>

AWS HealthLake の検索インデックスは、SEARCH オペレーションの `GET`および の結果整合性モデルで動作`POST`します。結果整合性では、リソースの検索インデックスの更新が保留中の場合、インデックスの更新が完了するまで、検索結果はリソースのバージョン N-1 を除外します。

 AWS HealthLake に、更新されたリソースに対する整合性モデルの動作を選択できるようになりました。デベロッパーには、「結果整合性」、上記のデフォルトの動作、または「強度整合性」を含めることができます。強力な整合性により、検索インデックスの更新が保留中のリソースのリソースの N-1 バージョンを検索結果に含めることができます。これは、検索インデックスの更新がまだ完了していない場合でも、結果にすべてのリソースが必要なユースケースシナリオに使用できます。お客様は、 `x-amz-fhir-history-consistency-level`リクエストヘッダーを使用してこの動作を制御できます。

## 整合性レベル
<a name="fhir-search-consistency-levels"></a>

強力な整合性  
検索インデックスの更新が保留中のレコードを含む、一致するすべてのレコードを返す`x-amz-fhir-history-consistency-level: strong`ように を設定します。更新直後にリソースを検索する必要がある場合は、このオプションを使用します。

結果整合性  
検索インデックスの更新が完了したレコードのみを返す`x-amz-fhir-history-consistency-level: eventual`ように を設定します。これは、整合性レベルが指定されていない場合のデフォルトの動作です。

## 使用例
<a name="fhir-search-usage"></a>

1. リソースを更新する場合:

   ```
   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. 後続の検索:

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

## ベストプラクティス
<a name="fhir-search-best-practices"></a>
+ 最近更新されたリソースをすぐに検索する必要がある場合は、強力な整合性を使用します。
+ 即時の可視性が重要でない一般的なクエリに結果整合性を使用する
+ 即時の可視性と潜在的なパフォーマンスへの影響のトレードオフを考慮する

**注記**  
整合性レベルの設定は、更新されたリソースが検索結果に表示される速度に影響しますが、リソースの実際のストレージには影響しません。  
オプションの`x-amz-fhir-history-consistency-level`ヘッダーを「強力な」に設定すると、リソースあたりの書き込みキャパシティ消費量が 2 倍になります。  
この機能は、バージョン履歴が有効になっているデータストアにのみ適用されます (2024 年 10 月 25 日以降に作成されたすべてのデータストアはデフォルトで有効になっています）。