

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

# AWS HealthLake リファレンス
<a name="reference"></a>

以下のサポートリファレンスマテリアルは、SMART on FHIR、FHIR、および で利用できます AWS HealthLake。

**注記**  
すべてのネイティブ HealthLake アクションとデータ型については、別のリファレンスで説明します。詳細については、「[AWS HealthLake APIリファレンス**](https://docs.aws.amazon.com/healthlake/latest/APIReference/)」を参照してください。

**Topics**
+ [FHIR での SMART](reference-smart-on-fhir.md)
+ [FHIR R4](reference-fhir.md)
+ [コンプライアンス](reference-compliance.md)
+ [HealthLake](reference-healthlake.md)

# の FHIR での SMART サポート AWS HealthLake
<a name="reference-smart-on-fhir"></a>

FHIR 対応 HealthLake データストアの代替医療アプリケーションと再利用可能なテクノロジー (SMART) を使用すると、FHIR 準拠アプリケーション上の SMART にアクセスできます。HealthLake データにアクセスするには、サードパーティーの認可サーバーを使用してリクエストを認証および承認します。したがって、 を介してユーザー認証情報を管理する代わりに AWS Identity and Access Management、FHIR 準拠の認可サーバーで SMART を使用して管理します。

**注記**  
HealthLake は、FHIR バージョン 1.0 および 2.0 で SMART をサポートしています。これらのフレームワークの詳細については、*FHIR R4 ドキュメント*の[「SMART App Launch](https://www.hl7.org/fhir/smart-app-launch/)」を参照してください。  
HealthLake データストアは、FHIR リクエストでの SMART の以下の認証および認可フレームワークをサポートしています。  
**OpenID (AuthN)**: 個人またはクライアントアプリケーションを認証するには、誰 (または何) であると主張します。
**OAuth 2.0 (AuthZ)**: 認証されたリクエストが読み書きできる HealthLake データストアの FHIR リソースを承認します。これは、認可サーバーで設定されたスコープによって定義されます。

SMART on FHIR 対応データストアは、 AWS CLI または AWS SDKs を使用して作成できます。詳細については、「[HealthLake データストアの作成](managing-data-stores-create.md)」を参照してください。

**Topics**
+ [FHIR での SMART の開始方法](reference-smart-on-fhir-getting-started.md)
+ [SMART on FHIR の HealthLake 認証要件](reference-smart-on-fhir-authentication.md)
+ [HealthLake でサポートされている FHIR OAuth 2.0 スコープでの SMART](reference-smart-on-fhir-oauth-scopes.md)
+ [を使用したトークンの検証 AWS Lambda](reference-smart-on-fhir-token-validation.md)
+ [SMART on FHIR 対応 HealthLake データストアでのきめ細かな認可の使用](reference-smart-on-fhir-fine-grained-authorization.md)
+ [FHIR 検出ドキュメントの SMART の取得](reference-smart-on-fhir-discovery-document.md)
+ [SMART 対応 HealthLake データストアでの FHIR REST API リクエストの実行](reference-smart-on-fhir-request-example.md)

# FHIR での SMART の開始方法
<a name="reference-smart-on-fhir-getting-started"></a>

以下のトピックでは、 AWS HealthLake の FHIR 認可で SMART の使用を開始する方法について説明します。これには、 AWS アカウントでプロビジョニングする必要があるリソース、FHIR 対応 HealthLake データストアでの SMART の作成、および FHIR クライアントアプリケーションが認可サーバーと HealthLake データストアとやり取りする方法の例が含まれます。

**Topics**
+ [FHIR での SMART のリソースの設定](#smart-on-fhir-resources)
+ [SMART on FHIR のクライアントアプリケーションワークフロー](#smart-on-fhir-client-app-workflow)

## FHIR での SMART のリソースの設定
<a name="smart-on-fhir-resources"></a>

次のステップでは、HealthLake が FHIR リクエストで SMART を処理する方法と、それらを成功させるために必要なリソースを定義します。以下の要素は、ワークフロー内で連携して SMART on FHIR リクエストを行います。
+ **エンドユーザー**: 一般的に、患者または臨床医は、サードパーティーの SMART on FHIR アプリケーションを使用して HealthLake データストアのデータにアクセスします。
+ **SMART on FHIR アプリケーション (クライアントアプリケーションと呼ばれます)**: HealthLake データストアにあるデータにアクセスしたいアプリケーション。
+ **認可サーバー**: ユーザーを認証し、アクセストークンを発行できる OpenID Connect 準拠サーバー。
+ **HealthLake データストア**: Lambda 関数を使用してベアラートークンを提供する FHIR REST リクエストに応答する、SMART on FHIR 対応 HealthLake データストア。

これらの要素を連携させるには、次のリソースを作成する必要があります。

**注記**  
認可サーバーを設定して必要な[スコープ](reference-smart-on-fhir-oauth-scopes.md)を定義し、[トークン](reference-smart-on-fhir-token-validation.md)イントロスペクションを処理する AWS Lambda 関数を作成したら、FHIR 対応 HealthLake データストアで SMART を作成することをお勧めします。

**1. 認可サーバーエンドポイントを設定する**  
SMART on FHIR フレームワークを使用するには、データストアで行われた FHIR REST リクエストを検証できるサードパーティー認可サーバーを設定する必要があります。詳細については、「[SMART on FHIR の HealthLake 認証要件](reference-smart-on-fhir-authentication.md)」を参照してください。

**2. HealthLake データストアのアクセスレベルを制御するための認可サーバーのスコープを定義する**  
SMART on FHIR フレームワークは、OAuth スコープを使用して、認証されたリクエストがアクセスできる FHIR リソースとその範囲を決定します。スコープの定義は、最小特権を設計する方法です。詳細については、「[HealthLake でサポートされている FHIR OAuth 2.0 スコープでの SMART](reference-smart-on-fhir-oauth-scopes.md)」を参照してください。

**3. トークンイントロスペクションを実行できる AWS Lambda 関数を設定する**  
クライアントアプリケーションから SMART on FHIR 対応データストアに送信された FHIR REST リクエストには、JSON ウェブトークン (JWT) が含まれています。詳細については、[「JWT のデコード](reference-smart-on-fhir-token-validation.md)」を参照してください。

**4. FHIR 対応 HealthLake データストアでの SMART の作成**  
FHIR HealthLake データストアで SMART を作成するには、 を指定する必要があります`IdentityProviderConfiguration`。詳細については、「[HealthLake データストアの作成](managing-data-stores-create.md)」を参照してください。

## SMART on FHIR のクライアントアプリケーションワークフロー
<a name="smart-on-fhir-client-app-workflow"></a>

次のセクションでは、クライアントアプリケーションを起動し、SMART on FHIR のコンテキスト内で HealthLake データストアで FHIR REST リクエストを正常に実行する方法について説明します。

**1. クライアントアプリケーションを使用して Well-Known Uniform Resource Identifier に`GET`リクエストを行う**  
SMART 対応クライアントアプリケーションは、HealthLake データストアの承認エンドポイントを検索する`GET`リクエストを行う必要があります。これは、Well-Known Uniform Resource Identifier (URI) リクエストを介して行われます。詳細については、「[FHIR 検出ドキュメントの SMART の取得](reference-smart-on-fhir-discovery-document.md)」を参照してください。

**2. アクセスとスコープのリクエスト**  
クライアントアプリケーションは、ユーザーがログインできるように、認可サーバーの認可エンドポイントを使用します。このプロセスはユーザーを認証します。スコープは、クライアントアプリケーションがアクセスできる HealthLake データストア内の FHIR リソースを定義するために使用されます。詳細については、「[HealthLake でサポートされている FHIR OAuth 2.0 スコープでの SMART](reference-smart-on-fhir-oauth-scopes.md)」を参照してください。

**3. アクセストークン**  
ユーザーが認証されたので、クライアントアプリケーションは認可サーバーから JWT アクセストークンを受け取ります。このトークンは、クライアントアプリケーションが HealthLake に FHIR REST リクエストを送信するときに提供されます。詳細については、「[トークンの検証](reference-smart-on-fhir-token-validation.md)」を参照してください。

**4. SMART on FHIR 対応 HealthLake データストアで FHIR REST API リクエストを行う**  
クライアントアプリケーションは、認可サーバーによって提供されるアクセストークンを使用してHealthLake データストアエンドポイントに FHIR REST API リクエストを送信できるようになりました。詳細については、「[SMART 対応 HealthLake データストアでの FHIR REST API リクエストの実行](reference-smart-on-fhir-request-example.md)」を参照してください。

**5. JWT アクセストークンを検証する**  
FHIR REST リクエストで送信されたアクセストークンを検証するには、Lambda 関数を使用します。詳細については、「[を使用したトークンの検証 AWS Lambda](reference-smart-on-fhir-token-validation.md)」を参照してください。

# SMART on FHIR の HealthLake 認証要件
<a name="reference-smart-on-fhir-authentication"></a>

SMART on FHIR 対応 HealthLake データストアの FHIR リソースにアクセスするには、クライアントアプリケーションが OAuth 2.0 準拠の認可サーバーによって承認され、FHIR REST API リクエストの一部として OAuth ベアラートークンを提示する必要があります。認可サーバーのエンドポイントを検索するには、Uniform Resource Identifier を介して FHIR Discovery Document の HealthLake SMART `Well-Known` を使用します。このプロセスについては、「[FHIR 検出ドキュメントの SMART の取得](reference-smart-on-fhir-discovery-document.md)」を参照してください。

SMART on FHIR HealthLake データストアを作成するときは、`CreateFHIRDatastore`リクエストの `metadata`要素で認可サーバーのエンドポイントとトークンエンドポイントを定義する必要があります。`metadata` 要素の定義の詳細については、「」を参照してください[HealthLake データストアの作成](managing-data-stores-create.md)。

認可サーバーエンドポイントを使用して、クライアントアプリケーションは認可サービスでユーザーを認証します。承認および認証されると、認可サービスによって JSON ウェブトークン (JWT) が生成され、クライアントアプリケーションに渡されます。このトークンには、クライアントアプリケーションが使用できる FHIR リソーススコープが含まれています。これにより、ユーザーがアクセスできるデータが制限されます。オプションで、起動スコープが指定されている場合、レスポンスにはそれらの詳細が含まれます。HealthLake でサポートされている FHIR スコープの SMART の詳細については、「」を参照してください[HealthLake でサポートされている FHIR OAuth 2.0 スコープでの SMART](reference-smart-on-fhir-oauth-scopes.md)。

認可サーバーによって付与された JWT を使用して、クライアントアプリケーションは FHIR が有効な HealthLake データストアで SMART への FHIR REST API 呼び出しを行います。JWT を検証してデコードするには、Lambda 関数を作成する必要があります。HealthLake は、FHIR REST API リクエストを受信すると、ユーザーに代わってこの Lambda 関数を呼び出します。スターター Lambda 関数の例については、「」を参照してください[を使用したトークンの検証 AWS Lambda](reference-smart-on-fhir-token-validation.md)。

## FHIR 対応 HealthLake データストアで SMART を作成するために必要な認可サーバー要素
<a name="datastore-auth-server"></a>

`CreateFHIRDatastore` リクエストでは、 `IdentityProviderConfiguration` オブジェクトの `metadata`要素の一部として認可エンドポイントとトークンエンドポイントを指定する必要があります。認可エンドポイントとトークンエンドポイントの両方が必要です。これを`CreateFHIRDatastore`リクエストで指定する方法の例については、「」を参照してください[HealthLake データストアの作成](managing-data-stores-create.md)。

## SMART on FHIR 対応 HealthLake データストアで FHIR REST API リクエストを完了するために必要なクレーム
<a name="server-response"></a>

 AWS Lambda 関数が SMART on FHIR 対応 HealthLake データストアでの有効な FHIR REST API リクエストであるためには、関数に次のクレームが含まれている必要があります。
+ `nbf`: [(前ではない) クレーム](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.5) — 「nbf」クレーム (前ではない) は、JWT を処理に受け入れることができない時刻を識別します。「nbf」クレームの処理では、現在の日付/時刻が「nbf」クレームに記載されている以前の日付/時刻以降である必要があります。提供されているサンプル Lambda 関数は、サーバーレスポンス`iat`から に変換します`nbf`。
+ `exp`: [(有効期限) クレーム — ](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4)「有効期限」 (有効期限) クレームは、JWT を処理に受け入れてはならない 以降の有効期限を識別します。
+ `isAuthorized`: ブール値を に設定します`True`。認可サーバーでリクエストが承認されたことを示します。
+ `aud`: [(対象者) クレーム](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3) — 「aud」 (対象者) クレームは、JWT の対象となる受取人を識別します。これは、FHIR 対応 HealthLake データストアエンドポイントの SMART である必要があります。
+ `scope`: これは少なくとも 1 つの FHIR リソース関連のスコープである必要があります。このスコープは認可サーバーで定義されます。HealthLake で受け入れられる FHIR リソース関連のスコープの詳細については、「」を参照してください[HealthLake の FHIR リソーススコープに関する SMART](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest)。

# HealthLake でサポートされている FHIR OAuth 2.0 スコープでの SMART
<a name="reference-smart-on-fhir-oauth-scopes"></a>

HealthLake は認可プロトコルとして OAuth 2.0 を使用します。認可サーバーでこのプロトコルを使用すると、クライアントアプリケーションがアクセスできる FHIR リソースの HealthLake データストアのアクセス許可 (作成、読み取り、更新、削除、検索) を定義できます。

SMART on FHIR フレームワークは、認可サーバーからリクエストできる一連のスコープを定義します。たとえば、患者が検査結果を表示したり、連絡先の詳細を表示したりできるようにのみ設計されたクライアントアプリケーションには、`read`スコープをリクエストする*権限*のみが必要です。

**注記**  
HealthLake は、以下で説明するように、FHIR V1 と V2 の両方で SMART をサポートします。SMART on FHIR [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy)は、データストアの作成時に次の 3 つの値のいずれかに設定されます。  
`SMART_ON_FHIR_V1` – (読み取り/検索) および `read` (`write`create/update/delete) アクセス許可を含む FHIR V1 での SMART のみをサポートします。
`SMART_ON_FHIR` – 、、、`create`、および アクセス`search`許可を含む FHIR V1 `delete`および V2 での SMART `read` `update`のサポート。
`AWS_AUTH` – デフォルトの AWS HealthLake 認可戦略。FHIR 上の SMART とは関連していません。

## スタンドアロン起動スコープ
<a name="smart-on-fhir-scopes-launch"></a>

HealthLake は、スタンドアロン起動モードスコープ をサポートしています`launch/patient`。

スタンドアロン起動モードでは、ユーザーと患者がクライアントアプリケーションに知られていないため、クライアントアプリケーションは患者の臨床データへのアクセスをリクエストします。したがって、クライアントアプリケーションの認可リクエストは、患者スコープが返されることを明示的に要求します。認証が成功すると、認可サーバーはリクエストされた起動患者スコープを含むアクセストークンを発行します。必要な患者コンテキストは、認可サーバーのレスポンスでアクセストークンとともに提供されます。


**サポートされている起動モードスコープ**  

| スコープ | 説明 | 
| --- | --- | 
| `launch/patient` | OAuth 2.0 認可リクエストのパラメータ。認可レスポンスで患者データが返されるように要求します。 | 

## HealthLake の FHIR リソーススコープに関する SMART
<a name="smart-on-fhir-scopes-rest"></a>

HealthLake は、FHIR リソーススコープで 3 つのレベルの SMART を定義します。
+ `patient` スコープは、単一の患者に関する特定のデータへのアクセスを許可します。
+ `user` スコープは、ユーザーがアクセスできる特定のデータへのアクセスを許可します。
+ `system` スコープは、HealthLake データストアにあるすべての FHIR リソースへのアクセスを許可します。

以下のセクションでは、SMART on FHIR V1 または SMART on FHIR V2 を使用して FHIR リソーススコープを構築するための構文を一覧表示します。

**注記**  
SMART on FHIR 認可戦略は、データストアの作成時に設定されます。詳細については、*AWS HealthLake API リファレンス*[https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy)の「」を参照してください。

### HealthLake でサポートされている FHIR V1 スコープの SMART
<a name="reference-smart-on-fhir-v1"></a>

FHIR V1 で SMART を使用する場合、HealthLake の FHIR リソーススコープを構築するための一般的な構文は次のとおりです。次の例の URL パス全体を表示するには、**コピー**ボタンをスクロールします。

```
('patient' | 'user' | 'system') '/' (fhir-resource | '*') '.' ('read' | 'write' | '*')
```


**FHIR v1 でサポートされる認可スコープでの SMART**  

| スコープ構文 | スコープの例 | 結果 | 
| --- | --- | --- | 
| `patient/(fhir-resource \| '*').('read' \| 'write' \| '*')` | patient/AllergyIntolerance.\$1 | 患者クライアントアプリケーションには、記録されたすべてのアレルギーに対するインスタンスレベルの読み取り/書き込みアクセス権があります。 | 
| `user/(fhir-resource \| '*').('read' \| 'write' \| '*')` | user/Observation.read | ユーザークライアントアプリケーションには、記録されたすべての観測値へのインスタンスレベルの読み取り/書き込みアクセス権があります。 | 
| system/('read' \$1 'write' \$1 \$1) | system/\$1.\$1 | システムクライアントアプリケーションには、すべての FHIR リソースデータへの読み取り/書き込みアクセス権があります。 | 

### HealthLake でサポートされている FHIR V2 スコープの SMART
<a name="reference-smart-on-fhir-v2"></a>

FHIR V2 で SMART を使用する場合、HealthLake の FHIR リソーススコープを構築するための一般的な構文は次のとおりです。次の例の URL パス全体を表示するには、**コピー**ボタンをスクロールします。

```
('patient' | 'user' | 'system') '/' (fhir-resource | '*') '.' ('c' | 'r' | 'u' | 'd' | 's')
```

**注記**  
FHIR V2 で SMART を使用するには、 値を[https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html)データ型のメンバーであるメタデータ`capabilities`文字列[https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#permissions](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#permissions)に渡す必要があります。  
HealthLake はきめ細かなスコープをサポートしています。詳細については、*「FHIR 米国コア実装ガイド*[」の「サポートされている詳細なスコープ](https://hl7.org/fhir/us/core/scopes.html#the-following-granular-scopes-shall-be-supported)」を参照してください。


**FHIR V2 でサポートされる SMART 認可スコープ**  

| スコープ構文 | V1 スコープの例 | 結果 | 
| --- | --- | --- | 
| `patient/Observation.rs` | user/Observation.read | 現在の患者のObservationリソースを読み取って検索するアクセス許可。 | 
| `system/*.cruds` | system/\$1.\$1 | システムクライアントアプリケーションには、すべての FHIR リソースデータへの完全なcreate/read/update/削除/検索アクセス権があります。 | 

# を使用したトークンの検証 AWS Lambda
<a name="reference-smart-on-fhir-token-validation"></a>

FHIR 対応データストアで HealthLake SMART を作成する場合は、`CreateFHIRDatastore`リクエストで AWS Lambda 関数の ARN を指定する必要があります。Lambda 関数の ARN は、 `IdpLambdaArn`パラメータを使用して `IdentityProviderConfiguration` オブジェクトで指定されます。

SMART on FHIR 対応データストアを作成する前に、Lambda 関数を作成する必要があります。データストアを作成すると、Lambda ARN を変更することはできません。データストアの作成時に指定した Lambda ARN を表示するには、 `DescribeFHIRDatastore` API アクションを使用します。

**FHIR REST リクエストが SMART on FHIR 対応データストアで成功するには、Lambda 関数が以下を実行する必要があります。**
+ HealthLake データストアエンドポイントに 1 秒未満でレスポンスを返します。
+ クライアントアプリケーションによって送信された REST API リクエストの承認ヘッダーで提供されるアクセストークンをデコードします。
+ FHIR REST API リクエストを実行するのに十分なアクセス許可を持つ IAM サービスロールを割り当てます。
+ FHIR REST API リクエストを完了するには、次のクレームが必要です。詳細については[必要なクレーム](reference-smart-on-fhir-authentication.md#server-response)を参照してください。
  + `nbf`
  + `exp`
  + `isAuthorized`
  + `aud`
  + `scope`

Lambda を使用する場合は、Lambda 関数に加えて実行ロールとリソースベースのポリシーを作成する必要があります。Lambda 関数の実行ロールは、実行時に必要な AWS のサービスおよびリソースにアクセスするためのアクセス許可を関数に付与する IAM ロールです。指定するリソースベースのポリシーでは、HealthLake がユーザーに代わって関数を呼び出すことを許可する必要があります。

このトピックのセクションでは、クライアントアプリケーションからのリクエスト例とデコードされたレスポンス、 AWS Lambda 関数の作成に必要なステップ、および HealthLake が引き受けることができるリソースベースのポリシーの作成方法について説明します。
+ [パート 1: Lambda 関数の作成](#smart-on-fhir-lambda-create)
+ [パート 2: AWS Lambda 関数で使用される HealthLake サービスロールの作成](#smart-on-fhir-lambda-service-role)
+ [パート 3: Lambda 関数の実行ロールの更新](#smart-on-fhir-lambda-service-role-execution-role)
+ [パート 4: Lambda 関数へのリソースポリシーの追加](#smart-on-fhir-lambda-invoke-healthlake)
+ [パート 5: Lambda 関数の同時実行のプロビジョニング](#smart-on-fhir-lambda-function-scaling)

## AWS Lambda 関数の作成
<a name="smart-on-fhir-lambda-create"></a>

このトピックで作成された Lambda 関数は、HealthLake が SMART on FHIR 対応データストアへのリクエストを受信するとトリガーされます。クライアントアプリケーションからのリクエストには、REST API コールと、アクセストークンを含む認可ヘッダーが含まれています。

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/
Authorization: Bearer i8hweunweunweofiwweoijewiwe
```

このトピックの Lambda 関数の例では AWS Secrets Manager 、 を使用して認可サーバーに関連する認証情報を隠します。Lambda 関数で認可サーバーログインの詳細を直接提供しないことを強くお勧めします。

**Example 認可ベアラートークンを含む FHIR REST リクエストの検証**  
Lambda 関数の例は、SMART on FHIR 対応データストアに送信された FHIR REST リクエストを検証する方法を示しています。この Lambda 関数を実装する手順については、 step-by-steps 「」を参照してください[を使用した Lambda 関数の作成 AWS マネジメントコンソール](#create-lambda-console)。  
FHIR REST API リクエストに有効なデータストアエンドポイント、アクセストークン、REST オペレーションが含まれていない場合、Lambda 関数は失敗します。必要な認可サーバー要素の詳細については、「」を参照してください[必要なクレーム](reference-smart-on-fhir-authentication.md#server-response)。  

```
import base64
import boto3
import logging
import json
import os
from urllib import request, parse

logger = logging.getLogger()
logger.setLevel(logging.INFO)

## Uses Secrets manager to gain access to the access key ID and secret access key for the authorization server
client = boto3.client('secretsmanager', region_name="region-of-datastore")
response = client.get_secret_value(SecretId='name-specified-by-customer-in-secretsmanager')
secret = json.loads(response['SecretString'])
client_id = secret['client_id']
client_secret = secret['client_secret']


unencoded_auth = f'{client_id}:{client_secret}'
headers = {
  'Authorization': f'Basic {base64.b64encode(unencoded_auth.encode()).decode()}',
  'Content-Type': 'application/x-www-form-urlencoded'
}

auth_endpoint = os.environ['auth-server-base-url'] # Base URL of the Authorization server
user_role_arn = os.environ['iam-role-arn'] # The IAM role client application will use to complete the HTTP request on the datastore

def lambda_handler(event, context):
    if 'datastoreEndpoint' not in event or 'operationName' not in event or 'bearerToken' not in event:
    return {}

    datastore_endpoint = event['datastoreEndpoint']
    operation_name = event['operationName']
    bearer_token = event['bearerToken']
    logger.info('Datastore Endpoint [{}], Operation Name: [{}]'.format(datastore_endpoint, operation_name))

    ## To validate the token
    auth_response = auth_with_provider(bearer_token)
    logger.info('Auth response: [{}]'.format(auth_response))
    auth_payload = json.loads(auth_response)
    ## Required parameters needed to be sent to the datastore endpoint for the HTTP request to go through
    auth_payload["isAuthorized"] = bool(auth_payload["active"])
    auth_payload["nbf"] = auth_payload["iat"]
    return {"authPayload": auth_payload, "iamRoleARN": user_role_arn}

## access the server
def auth_with_provider(token):
    data = {'token': token, 'token_type_hint': 'access_token'}
    req = request.Request(url=auth_endpoint + '/v1/introspect', data=parse.urlencode(data).encode(), headers=headers)
    with request.urlopen(req) as resp:
    return resp.read().decode()
```

### を使用した Lambda 関数の作成 AWS マネジメントコンソール
<a name="create-lambda-console"></a>

次の手順では、SMART on FHIR 対応データストアで FHIR REST API リクエストを処理するときに HealthLake が引き受けるサービスロールが既に作成されていることを前提としています。サービスロールを作成していない場合でも、Lambda 関数を作成できます。Lambda 関数が機能する前に、サービスロールの ARN を追加する必要があります。サービスロールの作成と Lambda 関数での指定の詳細については、「」を参照してください。 [JWT のデコードに使用される AWS Lambda 関数で使用する HealthLake サービスロールの作成](#smart-on-fhir-lambda-service-role)

**Lambda 関数を作成するには (AWS マネジメントコンソール)**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home/functions) ページを開きます。

1. [**関数の作成**] を選択してください。

1. **[一から作成]** を選択します。

1. **基本情報** に**関数名**を入力します。**Runtime** で、Python ベースのランタイムを選択します。

1. **[Execution role]** (実行ロール) で **[Create a new role with basic Lambda permissions]** (基本的な Lambda アクセス権限で新しいロールを作成) を選択します。

   Lambda が、Amazon CloudWatch にログをアップロードする関数許可を付与する[実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)を作成します。Lambda 関数は、関数を呼び出すときに実行ロールを引き受け、実行ロールを使用して AWS SDK の認証情報を作成します。

1. Code ****タブを選択し、サンプル Lambda 関数を追加します。

   Lambda 関数が使用するサービスロールをまだ作成していない場合は、サンプルの Lambda 関数が機能する前に作成する必要があります。Lambda 関数のサービスロールの作成の詳細については、「」を参照してください[JWT のデコードに使用される AWS Lambda 関数で使用する HealthLake サービスロールの作成](#smart-on-fhir-lambda-service-role)。

   ```
   import base64
   import boto3
   import logging
   import json
   import os
   from urllib import request, parse
   
   logger = logging.getLogger()
   logger.setLevel(logging.INFO)
   
   ## Uses Secrets manager to gain access to the access key ID and secret access key for the authorization server
   client = boto3.client('secretsmanager', region_name="region-of-datastore")
   response = client.get_secret_value(SecretId='name-specified-by-customer-in-secretsmanager')
   secret = json.loads(response['SecretString'])
   client_id = secret['client_id']
   client_secret = secret['client_secret']
   
   
   unencoded_auth = f'{client_id}:{client_secret}'
   headers = {
     'Authorization': f'Basic {base64.b64encode(unencoded_auth.encode()).decode()}',
     'Content-Type': 'application/x-www-form-urlencoded'
   }
   
   auth_endpoint = os.environ['auth-server-base-url'] # Base URL of the Authorization server
   user_role_arn = os.environ['iam-role-arn'] # The IAM role client application will use to complete the HTTP request on the datastore
   
   def lambda_handler(event, context):
       if 'datastoreEndpoint' not in event or 'operationName' not in event or 'bearerToken' not in event:
       return {}
   
       datastore_endpoint = event['datastoreEndpoint']
       operation_name = event['operationName']
       bearer_token = event['bearerToken']
       logger.info('Datastore Endpoint [{}], Operation Name: [{}]'.format(datastore_endpoint, operation_name))
   
       ## To validate the token
       auth_response = auth_with_provider(bearer_token)
       logger.info('Auth response: [{}]'.format(auth_response))
       auth_payload = json.loads(auth_response)
       ## Required parameters needed to be sent to the datastore endpoint for the HTTP request to go through
       auth_payload["isAuthorized"] = bool(auth_payload["active"])
       auth_payload["nbf"] = auth_payload["iat"]
       return {"authPayload": auth_payload, "iamRoleARN": user_role_arn}
   
   ## Access the server
   def auth_with_provider(token):
       data = {'token': token, 'token_type_hint': 'access_token'}
       req = request.Request(url=auth_endpoint + '/v1/introspect', data=parse.urlencode(data).encode(), headers=headers)
       with request.urlopen(req) as resp:
       return resp.read().decode()
   ```

### Lambda 関数の実行ロールの変更
<a name="modify-lambda-execution-role"></a>

Lambda 関数を作成したら、Secrets Manager を呼び出すために必要なアクセス許可を含めるように実行ロールを更新する必要があります。Secrets Manager では、作成する各シークレットに ARN があります。最小権限を適用するには、実行ロールが Lambda 関数の実行に必要なリソースにのみアクセスできる必要があります。

Lambda 関数の実行ロールを変更するには、IAM コンソールで検索するか、Lambda コンソールで**設定**を選択します。Lambda 関数の実行ロールの管理の詳細については、「」を参照してください[Lambda 実行ロール](#smart-on-fhir-lambda-service-role-execution-role)。

**Example へのアクセスを許可する Lambda 関数実行ロール `GetSecretValue`**  
IAM アクション`GetSecretValue`を実行ロールに追加すると、サンプルの Lambda 関数が機能するために必要なアクセス許可が付与されます。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secret-name-DKodTA"
        }
    ]
}
```

この時点で、FHIR 対応データストアで SMART に送信される FHIR REST リクエストの一部として提供されるアクセストークンを検証するために使用できる Lambda 関数を作成しました。

## JWT のデコードに使用される AWS Lambda 関数で使用する HealthLake サービスロールの作成
<a name="smart-on-fhir-lambda-service-role"></a>

**ペルソナ: IAM 管理者**  
IAM ポリシーを追加または削除し、新しい IAM ID を作成できるユーザー。  

**サービスロール**  
 サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイド**の [AWS のサービスに許可を委任するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。

JSON ウェブトークン (JWT) がデコードされると、認可 Lambda は IAM ロール ARN も返す必要があります。このロールには、REST API リクエストを実行するために必要なアクセス許可が必要です。そうしないと、アクセス許可が不十分であるために失敗します。

IAM を使用してカスタムポリシーを設定する場合は、必要な最小限のアクセス許可を付与することをお勧めします。詳細については、*IAM ユーザーガイド*の[「最小特権のアクセス許可を適用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)」を参照してください。

認可 Lambda 関数で指定する HealthLake サービスロールを作成するには、2 つのステップが必要です。
+ まず、IAM ポリシーを作成する必要があります。ポリシーは、認可サーバーでスコープを指定した FHIR リソースへのアクセスを指定する必要があります。
+ 次に、サービスロールを作成する必要があります。ロールを作成するときは、信頼関係を指定し、ステップ 1 で作成したポリシーをアタッチします。信頼関係はHealthLake をサービスプリンシパルとして指定します。このステップでは、HealthLake データストア ARN と AWS アカウント ID を指定する必要があります。

### 新しい IAM ポリシーの作成
<a name="lambda-service-role-part-1"></a>

認可サーバーで定義するスコープによって、認証されたユーザーが HealthLake データストアでアクセスできる FHIR リソースが決まります。

作成した IAM ポリシーは、定義したスコープに合わせて調整できます。

IAM ポリシーステートメントの `Action`要素で以下のアクションを定義できます。テーブル`Action`内の ごとに、 を定義できます`Resource types`。HealthLake では、データストアは、IAM アクセス許可ポリシーステートメントの `Resource`要素で定義できるサポートされている唯一のリソースタイプです。

個々の FHIR リソースは、IAM アクセス許可ポリシーの 要素として定義できるリソースではありません。


** HealthLake によって定義されたアクション**  

| アクション | 説明 | アクセスレベル | リソースタイプ (必須) | 
| --- | --- | --- | --- | 
| CreateResource | リソースの作成にアクセス許可を付与します | 書き込み | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 
| DeleteResource | リソースを削除する許可を付与 | 書き込み | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 
| ReadResource | リソースを読み取るアクセス許可を付与します | 読み取り | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 
| SearchWithGet | GET メソッドでリソースを検索する許可を付与 | 読み取り | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 
| SearchWithPost | POST メソッドでリソースを検索する許可を付与 | 読み取り | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 
| StartFHIRExportJobWithPost | GET で FHIR エクスポートジョブを開始する許可を付与 | 書き込み | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 
| UpdateResource | リソースを更新する許可を付与 | 書き込み  | データストア ARN: arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id | 

開始するには、 を使用できます`AmazonHealthLakeFullAccess`。このポリシーは、データストアで見つかったすべての FHIR リソースの読み取り、書き込み、検索、エクスポートを許可します。データストアに読み取り専用アクセス許可を付与するには、 を使用します`AmazonHealthLakeReadOnlyAccess`。

、、または IAM SDK を使用したカスタムポリシーの作成の詳細については AWS マネジメントコンソール AWS CLI、IAM *ユーザーガイド*の「IAM ポリシー[の作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。 SDKs

### HealthLake のサービスロールの作成 (IAM コンソール)
<a name="lambda-service-role-part-2"></a>

この手順を使用して、サービスロールを作成します。サービスを作成するときは、IAM ポリシーも指定する必要があります。

**HealthLake のサービスロールを作成するには (IAM コンソール)**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. IAM コンソールのナビゲーションペインで **[ロール]** を選択します。

1. 続いて、**[ロールの作成]** を選択します。

1. **信頼エンティティの選択**ページで、**カスタム信頼ポリシー**を選択します。

1. 次に、**カスタム信頼ポリシー**で、次のようにサンプルポリシーを更新します。をアカウント番号**your-account-id**に置き換え、インポートジョブまたはエクスポートジョブで使用するデータストアの ARN を追加します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Principal": {
                   "Service": "healthlake.amazonaws.com"
               },
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:healthlake:us-east-1:123456789012:datastore/fhir/your-datastore-id"
                   }
               }
           }
       ]
   }
   ```

------

1. その後、**[Next]** を選択します。

1. アクセス**許可の追加**ページで、HealthLake サービスが引き受けるポリシーを選択します。ポリシーを検索するには、アクセス**許可ポリシー**で検索します。

1. 次に、**ポリシーのアタッチ**を選択します。

1. 次に**、名前、レビュー、作成**のページで、**ロール名**に名前を入力します。

1. (オプション) **説明** に、ロールの簡単な説明を追加します。

1. 可能な場合は、このロールの目的を識別するのに役立つロール名またはロール名サフィックスを入力します。ロール名は AWS アカウントアカウント内で一意である必要があります。大文字と小文字は区別されません。例えば、**PRODROLE** と **prodrole** というロール名を両方作成することはできません。多くのエンティティによりロールが参照されるため、作成後にロール名を変更することはできません。

1. ロールの詳細を確認し、**ロールの作成**を選択します。

サンプル Lambda 関数でロール ARN を指定する方法については、「」を参照してください[AWS Lambda 関数の作成](#smart-on-fhir-lambda-create)。

## Lambda 実行ロール
<a name="smart-on-fhir-lambda-service-role-execution-role"></a>

Lambda 関数の実行ロールは、 AWS サービスとリソースへのアクセス許可を関数に付与する IAM ロールです。このページでは、Lambda 関数の実行ロールを作成、表示、および管理する方法について説明します。

デフォルトでは、 を使用して新しい Lambda 関数を作成すると、Lambda は最小限のアクセス許可で実行ロールを作成します AWS マネジメントコンソール。実行ロールで付与されたアクセス許可を管理するには、*Lambda デベロッパーガイド*の[「IAM コンソールでの実行ロールの作成](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html#permissions-executionrole-console)」を参照してください。

このトピックで提供されるサンプル Lambda 関数は、Secrets Manager を使用して認可サーバーの認証情報を隠します。

作成した IAM ロールと同様に、最小特権のベストプラクティスに従うことが重要です。開発フレーズ中に、必要以上のアクセス許可を付与することがあります。ベストプラクティスとしては、本番環境に関数を公開する前に、ポリシーを調整して必要なアクセス許可のみを含めるようにします。詳細については、*IAM ユーザーガイド*の[「最小権限の適用](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)」を参照してください。

## HealthLake に Lambda 関数のトリガーを許可する
<a name="smart-on-fhir-lambda-invoke-healthlake"></a>

HealthLake がユーザーに代わって Lambda 関数を呼び出すには、以下を実行する必要があります。
+ HealthLake が`CreateFHIRDatastore`リクエストで呼び出す Lambda 関数の ARN と`IdpLambdaArn`等しく設定する必要があります。
+ HealthLake がユーザーに代わって Lambda 関数を呼び出すことを許可するリソースベースのポリシーが必要です。

HealthLake が SMART on FHIR 対応データストアで FHIR REST API リクエストを受信すると、ユーザーに代わってデータストアの作成時に指定された Lambda 関数を呼び出すアクセス許可が必要です。HealthLake アクセスを許可するには、リソースベースのポリシーを使用します。Lambda 関数のリソースベースのポリシーの作成の詳細については、「 *AWS Lambda デベロッパーガイド*[」の「Lambda 関数を呼び出すことを AWS に許可](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-serviceinvoke)する」を参照してください。

## Lambda 関数の同時実行のプロビジョニング
<a name="smart-on-fhir-lambda-function-scaling"></a>

**重要**  
HealthLake では、Lambda 関数の最大実行時間が 1 秒 (1000 ミリ秒) 未満である必要があります。  
Lambda 関数が実行時間の制限を超えると、TimeOut 例外が発生します。

この例外が発生しないように、プロビジョニングされた同時実行を設定することをお勧めします。呼び出しの増加前にプロビジョニングされた同時実行数を割り当てることにより、すべてのリクエストが、短いレイテンシーで、初期化されたインスタンスによって処理されるようにできます。プロビジョニングされた同時実行の設定の詳細については、*Lambda デベロッパーガイド*の[「プロビジョニングされた同時実行の設定](https://docs.aws.amazon.com/ambda/latest/dg/provisioned-concurrency.html)」を参照してください。

現在、Lambda 関数の平均実行時間を確認するには、Lambda コンソールの Lambda 関数**のモニタリング**ページを使用します。デフォルトでは、Lambda コンソールには、関数コードがイベントの処理に費やした平均、最小、最大時間を示す**期間**グラフが表示されます。Lambda 関数のモニタリングの詳細については、[Lambda デベロッパーガイドの「Lambda コンソールでの関数のモニタリング](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-access-metrics.html#monitoring-console-graph-types)」を参照してください。 **

Lambda 関数の同時実行を既にプロビジョニングしていて、それをモニタリングする場合は、*Lambda デベロッパーガイド*の[「同時実行のモニタリング](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-concurrency.html)」を参照してください。

# SMART on FHIR 対応 HealthLake データストアでのきめ細かな認可の使用
<a name="reference-smart-on-fhir-fine-grained-authorization"></a>

[スコープ](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest)だけでは、リクエスタがデータストア内のどのデータにアクセスすることを許可されているかについて必要な具体性は得られません。きめ細かな認可を使用すると、FHIR 対応の HealthLake データストアで SMART へのアクセスを許可するときに、より高いレベルの特異度を実現できます。きめ細かな認可を使用するには、`CreateFHIRDatastore`リクエストの `IdentityProviderConfiguration`パラメータ`True`で を に`FineGrainedAuthorizationEnabled`等しく設定します。

きめ細かな認可を有効にした場合、認可サーバーはアクセストークン`id_token`とともに で`fhirUser`スコープを返します。これにより、クライアントアプリケーションでユーザーに関する情報を取得できます。クライアントアプリケーションは、`fhirUser`クレームを現在のユーザーを表す FHIR リソースの URI として扱う必要があります。これは、`Patient`、`Practitioner`、または `RelatedPerson` です。認可サーバーのレスポンスには、ユーザーがアクセスできるデータを定義する`user/`スコープも含まれています。これは、FHIR リソース固有のスコープに関連するスコープに定義された構文を使用します。

```
user/(fhir-resource | '*').('read' | 'write' | '*')
```

以下は、きめ細かな認可を使用してデータアクセス関連の FHIR リソースタイプをさらに指定する方法の例です。
+ `fhirUser` が の場合`Practitioner`、きめ細かな認可によって、ユーザーがアクセスできる患者のコレクションが決まります。へのアクセス`fhirUser`は、患者が一般臨床医`fhirUser`として を参照している患者に対してのみ許可されます。

  ```
  Patient.generalPractitioner : [{Reference(Practitioner)}]
  ```
+ `fhirUser` が `Patient`または `RelatedPerson`で、リクエストで参照される患者が と異なる場合`fhirUser`、きめ細かな承認により、リクエストされた患者の `fhirUser` へのアクセスが決まります。リクエストされた`Patient`リソースで関係が指定されている場合、アクセスが許可されます。

  ```
  Patient.link.other : {Reference(Patient|RelatedPerson)}
  ```

# FHIR 検出ドキュメントの SMART の取得
<a name="reference-smart-on-fhir-discovery-document"></a>

SMART は、HealthLake データストアがサポートする認可エンドポイント URLsと機能をクライアントが学習できるようにする Discovery Document を定義します。この情報は、クライアントが認可リクエストを適切なエンドポイントに転送し、HealthLake データストアがサポートする認可リクエストを構築するのに役立ちます。

クライアントアプリケーションが HealthLake への FHIR REST リクエストを成功させるには、HealthLake データストアで定義されている認可要件を収集する必要があります。このリクエストを成功させるには、ベアラートークン (認可) *は必要ありません*。

**HealthLake データストアの検出ドキュメントをリクエストするには**  


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

1. HealthLake `region`と の収集された値を使用して、リクエストの URL を作成します`datastoreId`。URL のエンドポイント`/.well-known/smart-configuration`に追加します。次の例の URL パス全体を表示するには、**コピー**ボタンをスクロールします。

   ```
   https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/.well-known/smart-configuration
   ```

1. [AWS 署名バージョン 4 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)の署名プロトコル`GET`を使用してリクエストを送信します。例全体を表示するには、**コピー**ボタンをスクロールします。

------
#### [ curl ]

   ```
   curl --request GET \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/.well-known/smart-configuration \
     --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'
   ```

------

   HealthLake データストアの検出ドキュメントは JSON BLOB として を返します。ここでは、 `authorization_endpoint`と `token_endpoint`、およびデータストアの仕様と定義された機能を確認できます。

   ```
   {
       "authorization_endpoint": "https://oidc.example.com/authorize",
       "token_endpoint": "https://oidc.example.com/oauth/token",
       "capabilities": [
           "launch-ehr",
           "client-public"
       ]
   }
   ```

   クライアントアプリケーションを起動するには、 `authorization_endpoint`と の両方`token_endpoint`が必要です。
   + **認可エンドポイント** — クライアントアプリケーションまたはユーザーを認可するために必要な URL。
   + **トークンエンドポイント** — クライアントアプリケーションが通信に使用する認可サーバーのエンドポイント。

# SMART 対応 HealthLake データストアでの FHIR REST API リクエストの実行
<a name="reference-smart-on-fhir-request-example"></a>

SMART on FHIR 対応の HealthLake データストアで FHIR REST API リクエストを行うことができます。次の例は、認可ヘッダーに JWT を含むクライアントアプリケーションからのリクエストと、Lambda がレスポンスをデコードする方法を示しています。クライアントアプリケーションリクエストが承認され、認証されたら、認可サーバーからベアラートークンを受信する必要があります。SMART on FHIR 対応 HealthLake データストアで FHIR REST API リクエストを送信するときは、認可ヘッダーのベアラートークンを使用します。

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/[ID]
Authorization: Bearer auth-server-provided-bearer-token
```

ベアラートークンが認可ヘッダーで見つかり、IAM ID AWS が検出されなかったため、HealthLake は SMART on FHIR 対応 HealthLake データストアの作成時に指定された Lambda 関数を呼び出します。トークンが Lambda 関数によって正常にデコードされると、次のレスポンス例が HealthLake に送信されます。

```
{
  "authPayload": {
    "iss": "https://authorization-server-endpoint/oauth2/token", # The issuer identifier of the authorization server
    "aud": "https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/", # Required, data store endpoint
    "iat": 1677115637,  # Identifies the time at which the token was issued
    "nbf": 1677115637,  # Required, the earliest time the JWT would be valid
    "exp": 1997877061,  # Required, the time at which the JWT is no longer valid
    "isAuthorized": "true",  # Required, boolean indicating the request has been authorized
    "uid": "100101",  # Unique identifier returned by the auth server
    "scope": "system/*.*" # Required, the scope of the request
  },
  "iamRoleARN": "iam-role-arn" #Required, IAM role to complete the request
}
```

# の FHIR R4 サポート AWS HealthLake
<a name="reference-fhir"></a>

AWS HealthLake は、ヘルスデータ交換の FHIR R4 仕様をサポートしています。以下のセクションでは、HealthLake が FHIR R4 仕様を利用して、FHIR R4 RESTful APIs を使用して HealthLake データストア内の FHIR リソース[を管理](managing-fhir-resources.md)および[検索](searching-fhir-resources.md)する方法に関するサポート情報を提供します。

**Topics**
+ [機能ステートメント](reference-fhir-capability-statement.md)
+ [プロファイルの検証](reference-fhir-profile-validations.md)
+ [リソースタイプ:](reference-fhir-resource-types.md)
+ [検索パラメータ](reference-fhir-search-parameters.md)
+ [\$1オペレーション](reference-fhir-operations.md)

# の FHIR R4 機能ステートメント AWS HealthLake
<a name="reference-fhir-capability-statement"></a>

アクティブな HealthLake データストアの FHIR 関連の機能 (動作) を確認するには、その機能ステートメントを取得する必要があります。機能ステートメントは、実際のサーバー機能のステートメント、または必要または必要なサーバー実装のステートメントとして使用されます。FHIR [https://hl7.org/fhir/R4/http.html#capabilities](https://hl7.org/fhir/R4/http.html#capabilities)インタラクションは、HealthLake データストア機能と、それがサポートする FHIR 仕様のどの部分に関する情報を取得します。HealthLake は、FHIR R4 リソースに従って FHIR [https://hl7.org/fhir/R4/structuredefinition.html](https://hl7.org/fhir/R4/structuredefinition.html)リソースタイプを検証します。

**HealthLake データストアの Capability Statement を取得するには**  


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

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

   ```
   https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/metadata
   ```

1.  リクエストを送信します。FHIR `capabilities`インタラクションは、[AWS 署名バージョン 4 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)の署名プロトコルを持つ`GET`リクエストを使用します。次の の`curl`例では、 で指定された HealthLake データストアの Capability Statement を取得します`datastoreId`。例全体を表示するには、**コピー**ボタンをスクロールします。

------
#### [ curl ]

   ```
   curl --request GET \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/metadata \
     --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'
   ```

------

   HealthLake データストアの `200` HTTP レスポンスコードと機能ステートメントを受け取ります。詳細については、**FHIR R4 ドキュメント**[https://hl7.org/fhir/R4/capabilitystatement.html](https://hl7.org/fhir/R4/capabilitystatement.html)の「」を参照してください。

# HealthLake の FHIR プロファイル検証
<a name="reference-fhir-profile-validations"></a>

AWS HealthLake は、基本 [FHIR R4 仕様](https://hl7.org/fhir/R4)をサポートしています。基本 FHIR R4 仕様には FHIR プロファイルが含まれています。プロファイルは、FHIR リソースタイプで使用され、基本リソースタイプの制約や拡張を使用してより具体的なリソースタイプ定義を定義します。たとえば、FHIR プロファイルは、拡張機能や値セットなどの必須フィールドを識別できます。リソースは複数のプロファイルをサポートできます。すべての HealthLake データストアは、FHIR プロファイルの使用をサポートしています。

**注記**  
HealthLake データストアにデータを追加するときは、FHIR プロファイルを追加*する必要はありません*。リソースが追加または更新されたときに FHIR プロファイルが指定されていない場合、リソースは基本 FHIR R4 スキーマに対してのみ検証されます。  
FHIR リソースが準拠する FHIR プロファイルは、HealthLake にインポートされる前にリソースに含まれます。したがって、FHIR プロファイルはインポート中に HealthLake によって検証されます。

FHIR プロファイルは実装ガイドで指定されています。FHIR 実装ガイド (IG) は、特定の目的で FHIR 標準を使用する方法を説明する一連の手順です。HealthLake は、以下の実装ガイドで定義されている FHIR プロファイルを検証します。


**でサポートされている FHIR プロファイル AWS HealthLake**  

| 名前 | バージョン | 実装ガイド | 機能 | 米国東部(オハイオ) | 米国東部 (バージニア北部) | 米国西部 (オレゴン) | アジアパシフィック (ムンバイ) | アジアパシフィック (シドニー) | カナダ (中部) | 欧州 (アイルランド) | 欧州 (ロンドン) | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 米国コア |  3.1.1  |  [http://hl7.org/fhir/us/core/STU3.1.1/](http://hl7.org/fhir/us/core/STU3.1.1/)  | デフォルト | X | X | X | X | X | X | X | X | 
| 米国コア |  4.0.0  |  [https://hl7.org/fhir/us/core/STU4/index.html](https://hl7.org/fhir/us/core/STU4/index.html)  | サポート | X | X | X | X | X | X | X | X | 
| 米国コア |  5.0.1  |  [https://hl7.org/fhir/us/core/STU5.0.1/index.html](https://hl7.org/fhir/us/core/STU5.0.1/index.html)  | サポート | X | X | X | X | X | X | X | X | 
| 米国コア |  6.1.0  |  [https://hl7.org/fhir/us/core/STU6.1/index.html](https://hl7.org/fhir/us/core/STU6.1/index.html)  | サポート | X | X | X | X | X | X | X | X | 
| 米国コア |  7.0.0  |  [https://hl7.org/fhir/us/core/STU7/](https://hl7.org/fhir/us/core/STU7/)  | サポート | X | X | X | X | X | X | X | X | 
| 英国コア |  2.0.1  |  [https://simplifier.net/guide/uk-core-implementation-guide-stu2/Home/ProfilesandExtensions/ProfilesIndex?version=2.0.1](https://simplifier.net/guide/uk-core-implementation-guide-stu2/Home/ProfilesandExtensions/ProfilesIndex?version=2.0.1)  | サポート | X | X | X | X |  |  | X | X | 
| CARIN ブルーボタン | 1.1.0 |  [http://hl7.org/fhir/us/carin-bb/STU1.1/](http://hl7.org/fhir/us/carin-bb/STU1.1/)  | デフォルト | X | X | X | X | X | X | X | X | 
| CARIN ブルーボタン | 1.0.0、2.0.0、2.1.0 |  [https://hl7.org/fhir/us/carin-bb/history.html](https://hl7.org/fhir/us/carin-bb/history.html)  | サポート | X | X | X | X | X | X | X | X | 
| Da Vinci Payer Data Exchange |  1.0.0  |  [https://hl7.org/fhir/us/davinci-pdex/](https://hl7.org/fhir/us/davinci-pdex/)  | デフォルト | X | X | X | X | X | X | X | X | 
| Da Vinci Payer Data Exchange |  2.0.0、2.1.0  |  [https://hl7.org/fhir/us/davinci-pdex/history.html](https://hl7.org/fhir/us/davinci-pdex/history.html)  | サポート | X | X | X | X | X | X | X | X | 
| Da Vinci Health Record Exchange (HRex) |  0.2.0  |  [https://hl7.org/fhir/us/davinci-hrex/2020Sep/](https://hl7.org/fhir/us/davinci-hrex/2020Sep/)  | デフォルト | X | X | X | X | X | X | X | X | 
| DaVinci PDEX 計画ネット |  1.1.0  |  [https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1.1/](https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1.1/)  | デフォルト | X | X | X | X | X | X | X | X | 
| DaVinci PDEX 計画ネット |  1.0.0  |  [https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1/](https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1/)  | サポート | X | X | X | X | X | X | X | X | 
| DaVinci Payer Data Exchange (PDex) 米国薬物フォーミュラリー |  1.1.0  |  [https://hl7.org/fhir/us/davinci-drug-formulary/STU1.1/](https://hl7.org/fhir/us/davinci-drug-formulary/STU1.1/)  | デフォルト | X | X | X | X | X | X | X | X | 
| DaVinci Payer Data Exchange (PDex) 米国薬物フォーミュラリー |  1.0.1、2.0.1、2.1.0  |  [https://hl7.org/fhir/us/davinci-drug-formulary/history.html](https://hl7.org/fhir/us/davinci-drug-formulary/history.html)  | サポート | X | X | X | X | X | X | X | X | 
| Da Vinci Clinical Data Exchange (CDex) |  2.1.0  |  [https://build.fhir.org/ig/HL7/davinci-ecdx/index.html](https://build.fhir.org/ig/HL7/davinci-ecdx/index.html)  | デフォルト | X | X | X | X | X | X | X | X | 
| Da Vinci 事前認可サポート (PAS) FHIR IG |  2.1.0  |  [https://hl7.org/fhir/us/davinci-pas/](https://hl7.org/fhir/us/davinci-pas/)  | デフォルト | X | X | X | X | X | X | X | X | 
| NCQA HEDIS® 実装ガイド |  0.3.1  |  [https://www.ncqa.org/resources/hedis-ig-resource-page/](https://www.ncqa.org/resources/hedis-ig-resource-page/)  | デフォルト | X | X | X | X |  |  | X | X | 
| 国際患者概要 (IPS) |  2.0.0 ブート  |  [https://hl7.org/fhir/uv/ips/2024Sep/](https://hl7.org/fhir/uv/ips/2024Sep/)  | デフォルト | X | X | X | X | X | X | X | X | 
| 品質測定 |  5.0.0  |  [https://registry.fhir.org/package/hl7.fhir.us.cqfmeasures%7C5.0.0](https://registry.fhir.org/package/hl7.fhir.us.cqfmeasures%7C5.0.0)  | デフォルト | X | X | X | X |  |  | X | X | 
| ゲノミクスレポート |  3.0.0  |  [https://build.fhir.org/ig/HL7/genomics-reporting/index.html](https://build.fhir.org/ig/HL7/genomics-reporting/index.html)  | デフォルト | X | X | X | X |  |  | X | X | 
|  米国保健局の Ayushman Bharat Digital Mission (ABDM)  | 2.0 |  [https://www.nrces.in/ndhm/fhir/r4/index.html](https://www.nrces.in/ndhm/fhir/r4/index.html)  | デフォルト | X | X | X | X |  |  | X | X | 
| CA Core\$1 | 1.1.0 |  [https://simplifier.net/ca-core](https://simplifier.net/ca-core)  | サポート |  |  |  |  |  | X |  |  | 
| CA:eReC Pan-Canadian eReferral-eConsult | 1.1.0 |  [https://simplifier.net/CA-eReC/~introduction](https://simplifier.net/CA-eReC/~introduction)  | サポート |  |  |  |  |  | X |  |  | 
| 患者概要 カナダ版 - (PS-CA) | 2.11 |  [https://simplifier.net/PS-CA-R1/~introduction](https://simplifier.net/PS-CA-R1/~introduction)  | サポート |  |  |  |  |  | X |  |  | 
| Ontario Digital Health ドラッグリポジトリ | 4.0.3 |  [https://simplifier.net/ca-on-dhdr-r4/~introduction](https://simplifier.net/ca-on-dhdr-r4/~introduction)  | サポート |  |  |  |  |  | X |  |  | 
| AU コア | 1.0.0 |  [https://hl7.org.au/fhir/core/](https://hl7.org.au/fhir/core/)  | サポート |  |  |  |  | X |  |  |  | 
| マゼンタス練習管理 | 1.2.16 |  [https://fhir-versions.dev.geniesolutions.io/1.2.16/downloads.html](https://fhir-versions.dev.geniesolutions.io/1.2.16/downloads.html)  | サポート |  |  |  |  | X |  |  |  | 

## リソースで指定された FHIR プロファイルの検証
<a name="add-fhir-profile-validation"></a>

FHIR プロファイルを検証するには、実装ガイドで指定されたプロファイル URL を使用して、個々のリソースの `profile`要素に追加します。

FHIR プロファイルは、データストアに新しいリソースを追加するときに検証されます。新しいリソースを追加するには、 `StartFHIRImportJob` API オペレーションを使用するか、新しいリソースを追加する`POST`リクエストを行うか、既存のリソースを更新する` PUT `リクエストを行います。

**Example – リソースで参照されている FHIR プロファイルを確認するには**  
プロファイル URL は、`"meta" : "profile"`キーと値のペアの `profile`要素に追加されます。このリソースはわかりやすくするために切り捨てられました。  

```
{
    "resourceType": "Patient",
    "id": "abcd1234efgh5678hijk9012",
    "meta": {
        "lastUpdated": "2023-05-30T00:48:07.8443764-07:00",
        "profile": [
            "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
        ]
    }
}
```

**Example – サポートされているデフォルト以外の FHIR プロファイルを参照する方法**  
サポートされているデフォルト以外のプロファイル (CarinBB 1.0.0 など) と照合して検証するには、プロファイル URL をバージョン (「\$1」で区切る) で追加し、ベースプロファイル URL を `meta.profile`要素に追加します。このサンプルリソースはわかりやすくするために切り捨てられました。  

```
{
    "resourceType": "ExplanationOfBenefit",
    "id": "sample-EOB",
    "meta": {
        "lastUpdated": "2024-02-02T05:56:09.4+00:00",
        "profile": [
            "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Pharmacy|1.0.0",
      "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Pharmacy“
        ]
    }
}
```

# HealthLake でサポートされている FHIR R4 リソースタイプ
<a name="reference-fhir-resource-types"></a>

次の表に、 でサポートされている FHIR R4 リソースタイプを示します AWS HealthLake。詳細については、**FHIR R4 ドキュメント**の[「リソースインデックス](https://hl7.org/fhir/R4/resourcelist.html)」を参照してください。


**HealthLake でサポートされている FHIR R4 リソースタイプ**  

|  |  |  |  | 
| --- |--- |--- |--- |
| アカウント | DetectedIssue | Invoice | プラクティショナー | 
| ActivityDefinition | デバイス | Library | PractitionerRole | 
| AdverseEvent | DeviceDefinition | リンク | 手順 | 
| AllergyIntolerance | DeviceMetric | リスト | プロベナンス | 
| 予約 | DeviceUseStatement | ロケーション | アンケート | 
| AppointmentResponse | DeviceRequest | メジャー | QuestionnaireResponse | 
| AuditEvent - 注を参照 | DiagnosticReport | MeasureReport | RelatedPerson | 
| バイナリ | DocumentManifest | メディア | RequestGroup | 
| BodyStructure | DocumentReference | 薬剤 | ResearchStudy | 
| バンドル - 注を参照 | EffectEvidenceSynthesis | MedicationAdministration | ResearchSubject | 
| CapabilityStatement | エンカウンター | MedicationDispense | RiskAssessment | 
| CarePlan | Endpoint | MedicationKnowledge | RiskEvidenceSynthesis | 
| CareTeam | EpisodeOfCare | MedicationRequest | スケジュール | 
| ChargeItem | EnrollmentRequest | MedicationStatement | ServiceRequest | 
| ChargeItemDefinition | EnrollmentResponse | MessageHeader | スロット | 
| Claim | ExplanationOfBenefit | MolecularSequence | 標本 | 
| ClaimResponse | FamilyMemberHistory | NutritionOrder | StructureDefinition | 
| コミュニケーション | フラグ | 監視結果 | StructureMap | 
| CommunicationRequest | 目標 | OperationOutcome - 注を参照 | Substance | 
| コンポジション | Group | 組織 | SupplyDelivery | 
| ConceptMap | GuidanceResponse | OrganizationAffiliation | SupplyRequest | 
| Condition | HealthcareService | パラメータ - 注を参照 | タスク | 
| 同意 | ImagingStudy | 患者 | ValueSet | 
| Contract | イミュナイゼーション | PaymentNotice | VisionPrescription | 
| カバレッジ | ImmunizationEvaluation | PaymentReconciliation | VerificationResult - 注を参照 | 
| CoverageEligibilityRequest | ImmunizationRecommendation | 個人 |  | 
| CoverageEligibilityResponse | InsurancePlan | PlanDefinition |  | 

**FHIR 仕様と HealthLake**  
FHIR `OperationOutcome`および `Parameters`リソースタイプを使用して `GET`または `POST`リクエストを行うことはできません。
**AuditEvent** — AuditEvent リソースを作成または読み取ることができますが、更新または削除することはできません。
**Bundle** — HealthLake が Bundle リクエストを管理する方法は複数あります。詳細については、[FHIR リソースのバンドル](managing-fhir-resources-bundle.md)を参照してください。
**VerificationResult** — このリソースタイプは、2023 年 12 月 9 日以降に作成されたデータストアでのみサポートされます。

# HealthLake の FHIR R4 検索パラメータ
<a name="reference-fhir-search-parameters"></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 **  
Amazon Athena を使用して SQL で HealthLake データストアをクエリすることもできます。詳細については、「統合」を参照してください。

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

## サポートされている検索パラメータタイプ
<a name="search-parameter-types"></a>

次の表は、HealthLake でサポートされている検索パラメータタイプを示しています。


**サポートされている検索パラメータタイプ**  

| 検索パラメータ  | 説明 | 
| --- | --- | 
| \$1id | リソース ID (完全な URL ではない) | 
| \$1lastUpdated | 最終更新日。サーバーには境界の精度に関する裁量があります。 | 
| \$1tag | リソースタグで検索します。 | 
| プロファイル | プロファイルでタグ付けされたすべてのリソースを検索します。 | 
| セキュリティ | このリソースに適用されたセキュリティラベルを検索します。 | 
| \$1ソース | リソースのソースを検索します。 | 
| テキスト | リソースの説明を検索します。 | 
| createdAt | カスタム拡張機能 createdAt で検索します。 | 

**注記**  
次の検索パラメータは、2023 年 12 月 9 日以降に作成されたデータストアでのみサポートされています: \$1security、\$1source、\$1text、createdAt。

次の表は、特定のリソースタイプの指定されたデータ型に基づいてクエリ文字列を変更する方法の例を示しています。わかりやすくするために、例列の特殊文字はエンコードされていません。クエリを成功させるには、クエリ文字列が適切にエンコードされていることを確認します。


**検索パラメータの例**  

| 検索パラメータタイプ | Details  | 例 | 
| --- | --- | --- | 
|  Number  | 指定されたリソース内の数値を検索します。有効数字が観察されます。有効桁数は、先頭の 0 を除く検索パラメータ値で に固有です。比較プレフィックスは許可されます。 |  `[parameter]=100` `[parameter]=1e2` `[parameter]=lt100`  | 
|  日付/DateTime  |  特定の日付または時刻を検索します。想定される形式は `yyyy-mm-ddThh:mm:ss[Z\|(+\|-)hh:mm]`ですが、異なる場合があります。 、`date`、`dateTime`、`instant`、`Period`および のデータ型を受け入れます`Timing`。検索でこれらのデータ型を使用する詳細については、**FHIR R4 RESTful API ドキュメント**の[「日付](https://www.hl7.org/fhir/search.html#date)」を参照してください。 比較プレフィックスは許可されます。  |  `[parameter]=eq2013-01-14` `[parameter]=gt2013-01-14T10:00` `[parameter]=ne2013-01-14`  | 
|  String  |  大文字と小文字を区別して一連の文字を検索します。 `HumanName` と の両方`Address`のタイプをサポートします。詳細については、**FHIR R4 ドキュメント**の [HumanName データ型](https://www.hl7.org/fhir/datatypes.html#HumanName)エントリと[`Address`データ型](https://www.hl7.org/fhir/datatypes.html#Address)エントリを参照してください。 詳細検索は`:text`、修飾子を使用してサポートされています。  |  `[base]/Patient?given=eve` `[base]/Patient?given:contains=eve`  | 
|  トークン  |  多くの場合、医療コード値のペアと比較して、文字列に対するclose-to-exact一致を検索します。 大文字と小文字の区別は、クエリの作成時に使用するコードシステムにリンクされます。サブsumption ベースのクエリは、大文字と小文字の区別に関連する問題を減らすのに役立ちます。わかりやすくするために、 `\|`はエンコードされていません。  |  `[parameter]=[system]\|[code]`: ここでは、コーディングシステム`[system]`を参照し、その特定のシステム内で見つかったコード値`[code]`を参照します。 `[parameter]=[code]`: ここで、入力はコードまたはシステムのいずれかに一致します。 `[parameter]=\|[code]`: ここで、入力はコードと一致し、システムプロパティには識別子がありません。  | 
|  複合  |  修飾子`$`と `,`オペレーションを使用して、単一のリソースタイプ内の複数のパラメータを検索します。 比較プレフィックスは許可されます。  |  `/Patient?language=FR,NL&language=EN` `Observation?component-code-value-quantity=http://loinc.org\|8480-6$lt60` `[base]/Group?characteristic-value=gender$mixed`  | 
|  数量  |  数値、システム、コードを値として検索します。番号は必須ですが、システムとコードはオプションです。数量データ型に基づきます。詳細については、**FHIR R4 ドキュメント**の[「数量](https://www.hl7.org/fhir/datatypes.html#Quantity)」を参照してください。 次の想定構文を使用します。 `[parameter]=[prefix][number]\|[system]\|[code]`  |  `[base]/Observation?value-quantity=5.4\|http://unitsofmeasure.org\|mg` `[base]/Observation?value-quantity=5.4\|http://unitsofmeasure.org\|mg` `[base]/Observation?value-quantity=5.4\|http://unitsofmeasure.org\|mg` `[base]/Observation?value-quantity=le5.4\|http://unitsofmeasure.org\|mg`  | 
|  リファレンス  |  他のリソースへの参照を検索します。  |  `[base]/Observation?subject=Patient/23` `test`  | 
|  [URI]  |  特定のリソースを明確に識別する文字列を検索します。  |  `[base]/ValueSet?url=http://acme.org/fhir/ValueSet/123`  | 
|  スペシャル  |  統合された医療 NLP 拡張機能に基づいて検索します。  | 

## HealthLake でサポートされている高度な検索パラメータ
<a name="search-parameters-advanced"></a>

HealthLake は、次の高度な検索パラメータをサポートしています。


| 名前 | 説明 | 例 | 機能 | 
| --- | --- | --- | --- | 
| \$1include | 検索リクエストで追加のリソースが返されるようにリクエストするために使用されます。ターゲットリソースインスタンスによって参照されるリソースを返します。 | Encounter?\$1include=Encounter:subject |   | 
| \$1revinclude | 検索リクエストで追加のリソースが返されるようにリクエストするために使用されます。プライマリリソースインスタンスを参照するリソースを返します。 | Patient?\$1id=patient-identifier&\$1revinclude=Encounter:patient |   | 
| \$1summary | 概要は、リソースのサブセットをリクエストするために使用できます。 | Patient?\$1summary=text | 次の概要パラメータがサポートされています: \$1summary=true、\$1summary=false、\$1summary=text、\$1summary=data。 | 
| \$1elements | 検索結果のリソースの一部として返される特定の要素のセットをリクエストします。 | Patient?\$1elements=identifier,active,link |   | 
| \$1total | 検索パラメータに一致するリソースの数を返します。 | Patient?\$1total=accurate | \$1total=accurate、 をサポートします\$1total=none。 | 
| \$1sort | カンマ区切りリストを使用して、返された検索結果のソート順を示します。- プレフィックスは、カンマ区切りリストの任意のソートルールで、降順を示すために使用できます。 | Observation?\$1sort=status,-date | タイプが のフィールドによるソートをサポートしますNumber, String, Quantity, Token, URI, Reference。によるソートDateは、2023 年 12 月 9 日以降に作成されたデータストアでのみサポートされています。最大 5 つのソートルールをサポートします。 | 
| \$1count | 検索バンドルのページごとに返されるリソースの数を制御します。 | Patient?\$1count=100 | 最大ページサイズは 100 です。 | 
| chaining | 参照されるリソースの要素を検索します。. は、連鎖検索を、参照されるリソース内の 要素に送信します。 | DiagnosticReport?subject:Patient.name=peter |   | 
| reverse chaining (\$1has) | リソースを参照するリソースの要素に基づいてリソースを検索します。 | Patient?\$1has:Observation:patient:code=1234-5 |   | 

`_include`

検索クエリ`_include`で を使用すると、追加の指定された FHIR リソースも返されます。を使用して`_include`、前方にリンクされたリソースを含めます。

**Example – を使用して`_include`、せきの診断を受けた患者または患者のグループを検索するには**  
診断コードを指定する`Condition`リソースタイプを検索し、その診断`subject`の も返すように`_include`指定します。`Condition` リソースタイプでは、患者リソースタイプまたはグループリソースタイプのいずれか`subject`を指します。  
わかりやすくするために、この例の特殊文字はエンコードされていません。クエリを成功させるには、クエリ文字列が適切にエンコードされていることを確認します。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/
Condition?code=49727002&_include=Condition:subject
```

`_include:iterate` 修飾子

修飾子を使用すると、2 `_include:iterate` つのレベルで参照されるリソースを再帰的に含めることができます。例えば、

```
GET /ServiceRequest?identifier=025C0931195&_include=ServiceRequest:requester&_include:iterate=PractitionerRole:practitioner
```

は、ServiceRequest、関連付けられた PractitionerRole (リクエスタリファレンス経由) を返し、その PractitionerRole によって参照される Practitioner を再帰的に含めます。この修飾子は、HealthLake のすべてのリソースタイプで使用できます。

`_include=*` 修飾子

`_include=*` 修飾子は、検索結果によって直接参照されるすべてのリソースを自動的に含むワイルドカードです。例えば、

```
GET /ServiceRequest?specimen.accession=12345&_include=*
```

は、各参照パスを個別に指定することなく、一致する ServiceRequest を、それが参照するすべてのリソース (患者、プラクティショナー、医療関係者など) とともに返します。この修飾子は、HealthLake のすべてのリソースタイプで使用できます。

`_revinclude`

検索クエリ`_revinclude`で を使用すると、指定された追加の FHIR リソースも返されます。を使用して`_revinclude`、後方にリンクされたリソースを含めます。

**Example – を使用して`_revinclude`、特定の患者にリンクされた関連する Encounter および Observation リソースタイプを含めるには**  
この検索を行うには、まず`_id`検索パラメータで識別子を指定`Patient`して個人を定義します。次に、 構造`Encounter:patient`と を使用して追加の FHIR リソースを指定します`Observation:patient`。  
わかりやすくするために、この例の特殊文字はエンコードされていません。クエリを成功させるには、クエリ文字列が適切にエンコードされていることを確認します。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/
Patient?_id=patient-identifier&_revinclude=Encounter:patient&_revinclude=Observation:patient
```

`_summary`

検索クエリ`_summary`で を使用すると、ユーザーは FHIR リソースのサブセットをリクエストできます。次のいずれかの値を含めることができます: `true, text, data, false`。その他の値は無効として扱われます。返されたリソースは meta.tag `'SUBSETTED'`で とマークされ、リソースが不完全であることを示します。
+ `true`: リソースの基本定義で「概要」としてマークされているサポートされているすべての要素を返します (複数可）。
+ `text`: 「text」、「id」、「meta」要素のみ、および最上位の必須要素のみを返します。
+ `data`: 「text」要素を除くすべてのパートを返します。
+ `false`: リソースのすべての部分を返します (複数可)

単一の検索リクエストでは、 を `_include`または `_revinclude` 検索パラメータと組み合わせる`_summary=text`ことはできません。

**Example – データストア内の患者リソースの「テキスト」要素を取得します。**  

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

`_elements`

検索クエリ`_elements`で を使用すると、特定の FHIR リソース要素をリクエストできます。返されたリソースは meta.tag `'SUBSETTED'`で とマークされ、リソースが不完全であることを示します。

`_elements` パラメータは、リソースのルートレベルで定義された要素など、基本要素名のカンマ区切りリストで構成されます。リストされている要素のみが返されます。`_elements` パラメータ値に無効な要素が含まれている場合、サーバーはそれらを無視し、必須要素と有効な要素を返します。

`_elements` は、含まれるリソース (検索モードが である返されたリソース`include`) には適用されません。

単一の検索リクエストでは、 を検索`_summary`パラメータと組み合わせる`_elements`ことはできません。

**Example – HealthLake データストアで患者リソースの「識別子」、「アクティブ」、「リンク」要素を取得します。**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_elements=identifier,active,link
```

`_total`

検索クエリ`_total`で を使用すると、リクエストされた検索パラメータに一致するリソースの数が返されます。HealthLake は、検索レスポンス`Bundle.total`の で一致したリソース (検索モードが である返されたリソース`match`) の総数を返します。

`_total` は `accurate`、`none`パラメータ値をサポートしています。 `_total=estimate`はサポートされていません。その他の値は無効として扱われます。 `_total`は、含まれるリソース (検索モードが である返されたリソース`include`) には適用されません。

**Example – データストア内の患者リソースの総数を取得します。**  

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

`_sort`

検索クエリ`_sort`で を使用すると、結果が特定の順序で配置されます。結果は、ソートルールのカンマ区切りリストに基づいて優先順位が付けられます。ソートルールは有効な検索パラメータである必要があります。その他の値は無効として扱われます。

1 つの検索リクエストで、最大 5 つのソート検索パラメータを使用できます。オプションで、`-`プレフィックスを使用して降順を指定できます。デフォルトでは、サーバーは昇順でソートされます。

サポートされているソート検索パラメータタイプは、 です`Number, String, Date, Quantity, Token, URI, Reference`。検索パラメータがネストされた要素を参照している場合、この検索パラメータはソートではサポートされていません。たとえば、リソースタイプの「名前」を検索する 患者 は HumanName データ型の Patient.name 要素を参照し、ネストされたと見なされます。したがって、患者リソースを「名前」でソートすることはサポートされていません。

**Example – データストアで患者リソースを取得し、生年月日で昇順にソートします。**  

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

`_count`

パラメータ`_count`は、1 ページに返されるリソースの数に関するサーバーへの指示として定義されます。

最大ページサイズは 100 です。100 を超える値は無効です。 `_count=0`はサポートされていません。

**Example – 患者リソースを検索し、検索ページサイズを 25 に設定します。**  

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

`Chaining and Reverse Chaining(_has)`

FHIR での連鎖と逆連鎖は、相互接続されたデータを取得するためのより効率的でコンパクトな方法を提供し、複数の個別のクエリの必要性を減らし、デベロッパーやユーザーにとってデータの取得をより便利にします。

いずれかのレベルの再帰が 100 を超える結果を返した場合、HealthLake はデータストアが過負荷になり、複数のページ分割が発生するのを防ぐために 4xx を返します。

**Example – 連鎖 - 患者名がペターである患者を参照するすべての DiagnosticReport を取得します。**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/DiagnosticReport?subject:Patient.name=peter
```

**Example – リバースチェイニング - 患者リソースを取得します。ここで、患者リソースは少なくとも 1 つのオブザベーションによって参照され、オブザベーションのコードは 1234 で、オブザベーションは患者検索パラメータ内の患者リソースを参照します。**  
  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_has:Observation:patient:code=1234
```

## サポートされている検索修飾子
<a name="search-parameter-modifiers"></a>

検索修飾子は文字列ベースのフィールドで使用されます。HealthLake のすべての検索修飾子は、ブールベースのロジックを使用します。たとえば、 `:contains`を指定して、検索結果に含めるために大きな文字列フィールドに小さな文字列を含めるように指定できます。


**サポートされている検索修飾子**  

| 検索修飾子 | タイプ | 
| --- | --- | 
| : 欠落 | を除くすべてのパラメータ Composite | 
| :exact | String | 
| :contains | String | 
| :not | トークン | 
| :text | トークン | 
| :identifier | リファレンス | 
| :以下 | [URI] | 

## サポートされている検索コンパレータ
<a name="search-comparators"></a>

検索コンパレータを使用して、検索の一致の性質を制御できます。数値、日付、数量フィールドを検索するときにコンパレータを使用できます。次の表に、HealthLake でサポートされている検索コンパレータとその定義を示します。


**サポートされている検索コンパレータ**  

|  検索コンパレータ  |  説明  | 
| --- | --- | 
| eq | リソースの パラメータの値は、指定された値と等しくなります。 | 
| ne | リソースの パラメータの値は、指定された値と等しくありません。 | 
| gt | リソースの パラメータの値が、指定された値を超えています。 | 
| lt | リソースの パラメータの値が、指定された値未満です。 | 
| g | リソースの パラメータの値は、指定された値以上です。 | 
| le | リソースの パラメータの値は、指定された値以下です。 | 
| sa | リソースの パラメータの値は、指定された値の後に開始されます。 | 
| EBS | リソースの パラメータの値は、指定された値より前に終了します。 | 

## HealthLake でサポートされていない FHIR 検索パラメータ
<a name="search-parameters-unsupported"></a>

HealthLake は、次の表に示すものを除き、すべての FHIR 検索パラメータをサポートします。FHIR 検索パラメータの完全なリストについては、[FHIR 検索パラメータレジストリを参照してください。](https://hl7.org/fhir/R4/searchparameter-registry.html)


**サポートされていない検索パラメータ**  

|  |  | 
| --- |--- |
| バンドル構成 | Location-near | 
| バンドル識別子 | Consent-source-reference | 
| バンドルメッセージ | 契約患者 | 
| バンドルタイプ | リソースの内容 | 
| バンドルタイムスタンプ | リソースクエリ | 

# HealthLake `$operations`の FHIR R4
<a name="reference-fhir-operations"></a>

 FHIR \$1 オペレーション (「ドルオペレーション」とも呼ばれます) は、FHIR 仕様の標準 CRUD (`Create`、、`Read``Update`、`Delete`) オペレーションを超えて拡張される特殊なサーバー側の関数です。これらのオペレーションは「\$1」プレフィックスで識別され、標準の REST API コールを使用して実行するのが困難または非効率的な複雑な処理、データ変換、一括オペレーションを可能にします。\$1 オペレーションは、システムレベル、リソースタイプレベル、または特定のリソースインスタンスで呼び出すことができ、FHIR データを操作する柔軟な方法を提供します。 は複数の FHIR AWS HealthLake をサポートします`$operations`。詳細については、以下の個々のページを参照してください。

**Topics**
+ [HealthLake の FHIR R4 `$attribution-status`オペレーション](reference-fhir-operations-attribution-status.md)
+ [を使用したリソースタイプの削除 `$bulk-delete`](reference-fhir-operations-bulk-delete.md)
+ [`$bulk-member-match` HealthLake の オペレーション](reference-fhir-operations-bulk-member-match.md)
+ [HealthLake の FHIR R4 `$confirm-attribution-list`オペレーション](reference-fhir-operations-confirm-attribution-list.md)
+ [HealthLake の FHIR R4 `$davinci-data-export`オペレーション](reference-fhir-operations-davinci-data-export.md)
+ [を使用した臨床ドキュメントの生成 `$document`](reference-fhir-operations-document.md)
+ [を使用してリソースを完全に削除する `$erase`](reference-fhir-operations-erase.md)
+ [を使用した患者データの取得 `Patient/$everything`](reference-fhir-operations-everything.md)
+ [を使用した ValueSet コードの取得 `$expand`](reference-fhir-operations-expand.md)
+ [FHIR を使用した HealthLake データのエクスポート `$export`](reference-fhir-operations-export.md)
+ [HealthLake の FHIR `$inquire`オペレーション](reference-fhir-operations-inquire.md)
+ [を使用した概念の詳細の取得 `$lookup`](reference-fhir-operations-lookup.md)
+ [`$member-add` HealthLake の オペレーション](reference-fhir-operations-member-add.md)
+ [`$member-match` HealthLake の オペレーション](reference-fhir-operations-member-match.md)
+ [`$member-remove` HealthLake の オペレーション](reference-fhir-operations-member-remove.md)
+ [を使用した患者部門リソースの削除 `$purge`](reference-fhir-operations-purge.md)
+ [HealthLake の FHIR `$questionnaire-package`オペレーション](reference-fhir-operations-questionnaire-package.md)
+ [HealthLake の FHIR `$submit`オペレーション](reference-fhir-operations-submit.md)
+ [を使用した FHIR リソースの検証 `$validate`](reference-fhir-operations-validate.md)

# HealthLake の FHIR R4 `$attribution-status`オペレーション
<a name="reference-fhir-operations-attribution-status"></a>

特定のメンバーの属性ステータスを取得し、患者に関連するすべての属性リソースを含むバンドルを返します。このオペレーションは、[FHIR メンバー属性 (ATR) リスト IG 2.1.0 実装の一部です。](https://build.fhir.org/ig/HL7/davinci-atr/spec.html)

## Endpoint
<a name="attribution-status-endpoint"></a>

```
POST [base]/Group/[id]/$attribution-status
```

## リクエストパラメーター
<a name="attribution-status-parameters"></a>

オペレーションでは、次のオプションパラメータを使用できます。


| パラメータ | Type | 説明 | 
| --- | --- | --- | 
| memberId | 識別子 | 属性ステータスがリクエストされたメンバーの MemberId  | 
| patientReference | リファレンス | プロデューサーのシステム内の患者リソースへの参照 | 

**注記**  
検証目的で`patientReference`、 `memberId`または のいずれか、または両方を指定できます。

## リクエスト例
<a name="attribution-status-request-example"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "memberId",
      "valueIdentifier": {
        "system": "http://example.org",
        "value": "MBR123456789"
      }
    },
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/patient-123",
        "display": "John Doe"
      }
    }
  ]
}
```

## 応答
<a name="attribution-status-response"></a>

患者に関連する属性リソースを含むバンドルを返します。


| [リソース]  | カーディナリティ | ロケーション | 
| --- | --- | --- | 
| 患者 | 1..1 | Group.member.entity | 
| カバレッジ | 0..1 | Group.member.extension:coverageReference | 
| Organization/Practitioner/PractitionerRole | 0..1 | Group.member.extension:attributedProvider | 
| 任意のリソース | 0..1 | Group.member.extension:associatedData | 

### レスポンス例
<a name="attribution-status-response-example"></a>

```
{
  "resourceType": "Bundle",
  "id": "bundle-response",
  "meta": {
    "lastUpdated": "2014-08-18T01:43:33Z"
  },
  "type": "collection",
  "entry": [
    {
      "fullUrl": "http://example.org/fhir/Patient/12423",
      "resource": {
        "resourceType": "Patient",
        "id": "12423",
        "meta": {
          "versionId": "1",
          "lastUpdated": "2014-08-18T01:43:31Z"
        },
        "active": true,
        "name": [
          {
            "use": "official",
            "family": "Chalmers",
            "given": ["Peter", "James"]
          }
        ],
        "gender": "male",
        "birthDate": "1974-12-25"
      }
    },
    {
      "fullUrl": "http://example.org/fhir/Coverage/123456",
      "resource": {
        "resourceType": "Coverage",
        "id": "1"
        // ... additional Coverage resource details
      }
    },
    {
      "fullUrl": "http://example.org/fhir/Organization/666666",
      "resource": {
        "resourceType": "Organization",
        "id": "2"
        // ... additional Organization resource details
      }
    }
  ]
}
```

## エラー処理
<a name="attribution-status-error-handling"></a>

オペレーションは、次のエラー条件を処理します。


| エラー | HTTP ステータス | 説明 | 
| --- | --- | --- | 
| 無効なオペレーションリクエスト | 400 | 非準拠のリクエストパラメータまたは構造 | 
| グループリソースが見つかりません | 404 | 指定されたグループ ID は存在しません | 
| 患者リソースが見つかりません | 404 | 指定された患者リファレンスは存在しません | 

## 認可とセキュリティ
<a name="attribution-status-authorization"></a>

SMART スコープの要件  
クライアントには、グループリソースおよび関連する属性リソースを読み取るための適切な権限が必要です  
標準の FHIR 認可メカニズムがすべてのオペレーションに適用されます

# を使用したリソースタイプの削除 `$bulk-delete`
<a name="reference-fhir-operations-bulk-delete"></a>

AWS HealthLake は `$bulk-delete`オペレーションをサポートし、データストア内の特定のタイプのすべてのリソースを削除できます。このオペレーションは、以下が必要な場合に特に役立ちます。
+ 季節的な監査とクリーンアップを実行する
+ 大規模なデータライフサイクルの管理
+ 特定のリソースタイプを削除する
+ データ保持ポリシーに準拠する

## 使用方法
<a name="bulk-delete-usage"></a>

`$bulk-delete` オペレーションは POST メソッドを使用して呼び出すことができます。

```
POST [base]/[ResourceType]/$bulk-delete?isHardDelete=false&deleteAuditEvent=true
```

## パラメータ
<a name="bulk-delete-parameters"></a>


| パラメータ | タイプ | [Required] (必須) | デフォルト | 説明  | 
| --- | --- | --- | --- | --- | 
| isHardDelete | boolean | 不可 | false | true の場合、ストレージからリソースを完全に削除します | 
| deleteAuditEvent | boolean | なし | true | true の場合、関連する監査イベントを削除します | 
| \$1since | string | 不可 | データストアの作成時刻 | 入力すると、開始カットオフ時間を選択して、lastModified時間に基づいてリソースを検索します。開始または終了では使用できません | 
| start | string | 不可 | データストアの作成時刻 | 入力すると、カットオフ時間を選択して、lastModified時間に基づいてリソースを検索します。末尾で使用できます | 
| end | string | 不可 | ジョブの送信時間 | 入力すると、終了カットオフ時間を選択して、lastModified時間に基づいてリソースを検索します。 | 

## 例
<a name="bulk-delete-examples"></a>

**リクエストの例**  


```
POST [base]/Observation/$bulk-delete?isHardDelete=false
```

**レスポンスの例**  


```
{
      "jobId": "jobId",
      "jobStatus": "SUBMITTED"
    }
```

## ジョブのステータス
<a name="bulk-delete-job-status"></a>

一括削除ジョブのステータスを確認するには:

```
GET [base]/$bulk-delete/[jobId]
```

オペレーションはジョブステータス情報を返します。

```
{
      "datastoreId": "datastoreId",
      "jobId": "jobId",
      "status": "COMPLETED",
      "submittedTime": "2025-10-09T15:09:51.336Z"
    }
```

## 行動
<a name="bulk-delete-behavior"></a>

`$bulk-delete` オペレーション:

1. 大量のリソースを処理するために非同期的に処理する

1. データ整合性のために ACID トランザクションを維持します

1. リソース削除数を含むジョブステータスの追跡を提供します

1. ソフト削除モードとハード削除モードの両方をサポート

1. 削除アクティビティの包括的な監査ログ記録が含まれます

1. 履歴バージョンと監査イベントの選択的な削除を許可する

## 監査ログ記録
<a name="bulk-delete-audit-logging"></a>

`$bulk-delete` オペレーションは、詳細なオペレーション情報とともに StartFHIRBulkDeleteJob および DescribeFHIRBulkDeleteJobとしてログに記録されます。

## 制限事項
<a name="bulk-delete-limitations"></a>
+ `isHardDelete` が true に設定されている場合、ハード削除されたリソースは検索結果や`_history`クエリに表示されません。
+ このオペレーションで削除されるリソースは、処理中に一時的にアクセスできない場合があります。
+ ストレージ計測は履歴バージョンでのみ調整されます - deleteVersionHistory=false はデータストアストレージを調整しません

# `$bulk-member-match` HealthLake の オペレーション
<a name="reference-fhir-operations-bulk-member-match"></a>

AWS HealthLake は、複数のメンバー一致リクエストを非同期的に処理する `$bulk-member-match`オペレーションをサポートします。このオペレーションにより、医療組織は、属性情報とカバレッジ情報を 1 回の一括リクエストで使用して、さまざまな医療システム全体で何百人ものメンバーの一意の識別子を効率的に照合できます。この機能は、大規模なpayer-to-payerデータ交換、メンバー移行、CMS コンプライアンス要件に不可欠であり、FHIR [仕様](https://build.fhir.org/ig/HL7/davinci-epdx/OperationDefinition-BulkMemberMatch.html)に従います。

**注記**  
`$bulk-member-match` オペレーションは、現在実験段階にあり、変更される可能性のある基盤となる FHIR 仕様に基づいています。仕様が進化するにつれて、この API の動作とインターフェイスはそれに応じて更新されます。開発者は、AWS HealthLake リリースノートと関連する FHIR 仕様の更新をモニタリングして、統合に影響を与える可能性のある変更を常に把握することをお勧めします。

このオペレーションは、以下が必要な場合に特に役立ちます。
+ オープン登録期間中に大規模なメンバーマッチングを処理する
+ 支払者間の一括メンバー移行を容易にする
+ 大規模な CMS コンプライアンスデータ交換要件をサポート
+ 医療ネットワーク全体でメンバーコホートを効率的にマッチングする
+ API コールを最小限に抑え、大量のマッチングシナリオの運用効率を向上させる

## 使用方法
<a name="bulk-member-match-usage"></a>

`$bulk-member-match` オペレーションは、POST メソッドを使用してグループリソースで呼び出される非同期オペレーションです。

```
POST [base]/Group/$bulk-member-match
```

一括一致リクエストを送信したら、以下を使用してジョブステータスをポーリングできます。

```
GET [base]/$bulk-member-match-status/{jobId}
```

## サポートされているパラメータ
<a name="bulk-member-match-parameters"></a>

HealthLake は、次の FHIR `$bulk-member-match`パラメータをサポートしています。


| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| `MemberPatient` | 患者 | はい | 一致するメンバーの属性情報を含む患者リソース。 | 
| `CoverageToMatch` | カバレッジ | はい | 既存のレコードとの照合に使用されるカバレッジリソース。 | 
| `CoverageToLink` | カバレッジ | いいえ | 一致するプロセス中にリンクされるカバレッジリソース。 | 
| `Consent` | 同意 | はい | 認可のための同意リソースも保存されます。これは、同意*を必要としない*個々の`$member-match`オペレーションとは異なります。 | 

## 一括メンバー一致ジョブを送信する POST リクエスト
<a name="bulk-member-match-request-example"></a>

次の例は、一括メンバー一致ジョブを送信する POST リクエストを示しています。各メンバーは、必要な `MemberPatient`、`CoverageToMatch`、および `Consent`リソースとオプションの を含む`MemberBundle`パラメータでラップされます`CoverageToLink`。

```
POST [base]/Group/$bulk-member-match
Content-Type: application/fhir+json
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "MemberBundle",
      "part": [
        {
          "name": "MemberPatient",
          "resource": {
            "resourceType": "Patient",
            "identifier": [
              {
                "system": "http://example.org/patient-id",
                "value": "patient-0"
              }
            ],
            "name": [
              {
                "family": "Smith",
                "given": ["James"]
              }
            ],
            "gender": "male",
            "birthDate": "1950-01-01"
          }
        },
        {
          "name": "CoverageToMatch",
          "resource": {
            "resourceType": "Coverage",
            "status": "active",
            "identifier": [
              {
                "system": "http://example.org/coverage-id",
                "value": "cov-0"
              }
            ],
            "subscriberId": "sub-0",
            "beneficiary": {
              "reference": "Patient/patient123"
            },
            "relationship": {
              "coding": [
                {
                  "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
                  "code": "self"
                }
              ]
            },
            "payor": [
              {
                "reference": "Organization/org123"
              }
            ]
          }
        },
        {
          "name": "Consent",
          "resource": {
            "resourceType": "Consent",
            "status": "active",
            "scope": {
              "coding": [
                {
                  "system": "http://terminology.hl7.org/CodeSystem/consentscope",
                  "code": "patient-privacy"
                }
              ]
            },
            "category": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
                    "code": "IDSCL"
                  }
                ]
              }
            ],
            "patient": {
              "reference": "Patient/patient123"
            },
            "performer": [
              {
                "reference": "Patient/patient123"
              }
            ],
            "sourceReference": {
              "reference": "http://example.org/DocumentReference/consent-source"
            },
            "policy": [
              {
                "uri": "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular"
              }
            ],
            "provision": {
              "type": "permit",
              "period": {
                "start": "2024-01-01",
                "end": "2025-12-31"
              },
              "actor": [
                {
                  "role": {
                    "coding": [
                      {
                        "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
                        "code": "performer"
                      }
                    ]
                  },
                  "reference": {
                    "identifier": {
                      "system": "http://hl7.org/fhir/sid/us-npi",
                      "value": "9876543210"
                    },
                    "display": "Old Health Plan"
                  }
                },
                {
                  "role": {
                    "coding": [
                      {
                        "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                        "code": "IRCP"
                      }
                    ]
                  },
                  "reference": {
                    "identifier": {
                      "system": "http://hl7.org/fhir/sid/us-npi",
                      "value": "0123456789"
                    },
                    "display": "New Health Plan"
                  }
                }
              ],
              "action": [
                {
                  "coding": [
                    {
                      "system": "http://terminology.hl7.org/CodeSystem/consentaction",
                      "code": "disclose"
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "name": "CoverageToLink",
          "resource": {
            "resourceType": "Coverage",
            "status": "active",
            "identifier": [
              {
                "system": "http://example.org/coverage-link-id",
                "value": "cov-link-0"
              }
            ],
            "subscriberId": "new-sub-0",
            "beneficiary": {
              "reference": "Patient/patient123"
            },
            "relationship": {
              "coding": [
                {
                  "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
                  "code": "self"
                }
              ]
            },
            "payor": [
              {
                "identifier": {
                  "system": "http://hl7.org/fhir/sid/us-npi",
                  "value": "0123456789"
                },
                "display": "New Health Plan"
              }
            ]
          }
        }
      ]
    }
  ]
}
```

## 完了したジョブレスポンスと出力
<a name="bulk-member-match-response-example"></a>

ジョブが完了すると、レスポンスにはジョブメタデータと、一致結果を分類する 3 つのグループリソースを含む FHIR パラメータリソースが含まれます。

```
{
  "datastoreId": "datastoreId",
  "jobId": "jobId",
  "status": "COMPLETED",
  "submittedTime": "2026-03-20T18:45:26.321Z",
  "numberOfMembers": 3,
  "numberOfMembersProcessedSuccessfully": 3,
  "numberOfMembersWithCustomerError": 0,
  "numberOfMembersWithServerError": 0,
  "output": {
    "resourceType": "Parameters",
    "meta": {
      "profile": [
        "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-out"
      ]
    },
    "parameter": [
      {
        "name": "MatchedMembers",
        "resource": {
          "resourceType": "Group",
          "id": "group1",
          "text": {
            "status": "generated",
            "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Matched members group</div>"
          },
          "contained": [
            {
              "resourceType": "Patient",
              "id": "1",
              "identifier": [
                {
                  "system": "http://example.org/patient-id",
                  "value": "patient-0"
                }
              ],
              "name": [
                {
                  "family": "Smith",
                  "given": ["James"]
                }
              ],
              "gender": "male",
              "birthDate": "1950-01-01"
            }
          ],
          "type": "person",
          "actual": true,
          "code": {
            "coding": [
              {
                "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS",
                "code": "match",
                "display": "Matched"
              }
            ]
          },
          "quantity": 1,
          "member": [
            {
              "entity": {
                "extension": [
                  {
                    "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters",
                    "valueReference": {
                      "reference": "#1"
                    }
                  }
                ],
                "reference": "Patient/patient123"
              }
            }
          ]
        }
      },
      {
        "name": "NonMatchedMembers",
        "resource": {
          "resourceType": "Group",
          "id": "Group2",
          "text": {
            "status": "generated",
            "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Non-matched members group</div>"
          },
          "contained": [
            {
              "resourceType": "Patient",
              "id": "1",
              "identifier": [
                {
                  "system": "http://example.org/patient-id",
                  "value": "patient-501"
                }
              ],
              "name": [
                {
                  "family": "Carter",
                  "given": ["Emily"]
                }
              ],
              "gender": "female",
              "birthDate": "1985-06-15"
            }
          ],
          "type": "person",
          "actual": true,
          "code": {
            "coding": [
              {
                "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS",
                "code": "nomatch",
                "display": "Not Matched"
              }
            ]
          },
          "quantity": 1,
          "member": [
            {
              "entity": {
                "extension": [
                  {
                    "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters",
                    "valueReference": {
                      "reference": "#1"
                    }
                  }
                ],
                "reference": "Patient/patient123"
              }
            }
          ]
        }
      },
      {
        "name": "ConsentConstrainedMembers",
        "resource": {
          "resourceType": "Group",
          "id": "group3",
          "text": {
            "status": "generated",
            "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Consent constrained members group</div>"
          },
          "contained": [
            {
              "resourceType": "Patient",
              "id": "1",
              "identifier": [
                {
                  "system": "http://example.org/patient-id",
                  "value": "patient-502"
                }
              ],
              "name": [
                {
                  "family": "Nguyen",
                  "given": ["David"]
                }
              ],
              "gender": "male",
              "birthDate": "1972-11-22"
            }
          ],
          "type": "person",
          "actual": true,
          "code": {
            "coding": [
              {
                "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS",
                "code": "consentconstraint",
                "display": "Consent Constraint"
              }
            ]
          },
          "quantity": 1,
          "member": [
            {
              "entity": {
                "extension": [
                  {
                    "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters",
                    "valueReference": {
                      "reference": "#1"
                    }
                  }
                ],
                "reference": "Patient/123"
              }
            }
          ]
        }
      }
    ]
  }
}
```

## 出力グループのリソース
<a name="bulk-member-match-output-groups"></a>

完了したジョブは、3 つのグループリソースを含む Parameters リソースを返します。

**MatchedMembers グループ**  
正常に一致したすべてのメンバーに対する患者参照が含まれ、同意制約として分類されません。

`Group.quantity` フィールドには、それぞれのグループのメンバーの合計数が含まれます。

**NonMatchedMembers グループ**  
一致が見つからないか、複数の一致が特定されたメンバーへの参照が含まれます。

**ConsentConstrainedMembers グループ**  
同意の制約によりデータ共有が妨げられている、正常に一致したすべてのメンバーに対する患者リファレンスが含まれます。以下の条件の両方が存在する場合、同意リソースは制約されていると見なされます。  
+ **ポリシー URI は で終わり`#sensitive`**ます。これは最も明確で直接的なシグナルです。送信側の支払者は、「このメンバーのデータは機密です — 慎重に処理してください」と明示的に述べています。

  ```
  "policy": [{ "uri": "...hrex-consent.html#sensitive" }]
  ```
+ **最上位のプロビジョニングタイプは `deny`**です — メンバーはデータ共有を広く拒否しています。

  ```
  "provision": { "type": "deny" }
  ```

## \$1davinci-data-export との統合
<a name="bulk-member-match-davinci-integration"></a>

によって返される MatchedMembers Group リソース`$bulk-member-match`は、一括メンバーデータを取得する `$davinci-data-export`オペレーションで直接使用できます。

```
POST [base]/Group/{matched-group-id}/$davinci-data-export
GET [base]/Group/{matched-group-id}
```

この統合により、一致したメンバーを最初に一括で識別し、結果のグループリソースを使用して完全なヘルスレコードをエクスポートする効率的なワークフローが可能になります。

## パフォーマンス特性
<a name="bulk-member-match-performance"></a>

`$bulk-member-match` オペレーションは大量の処理用に設計されており、非同期的に実行されます。
+ **同時実行**数: データストアあたり最大 5 回の同時オペレーション。
+ **スケーラビリティ**: リクエストごとに最大 500 のメンバーを処理します (5 MB のペイロード制限）。
+ **並列オペレーション**: インポート、エクスポート、一括削除の同時オペレーションと互換性があります。

## Authorization
<a name="bulk-member-match-authorization"></a>

API は、以下の必要なスコープで SMART on FHIR 認可プロトコルを使用します。
+ `system/Patient.read` — 患者リソースを検索して一致させるために必要です。
+ `system/Coverage.read` — カバレッジ情報を検証するために必要です。
+ `system/Group.write` — 結果グループリソースを作成するために必要です。
+ `system/Organization.read` — 条件付き。カバレッジが組織を参照する場合は必須です。
+ `system/Practitioner.read` — 条件付き。カバレッジが実務者を参照する場合は必須です。
+ `system/PractitionerRole.read` — 条件付き、カバレッジが実務者ロールを参照する場合は必須です。
+ `system/Consent.write` — 条件付き。同意リソースが指定されている場合は必須です。

オペレーションは、プログラムによるアクセスの AWS IAM 署名バージョン 4 (SigV4) 認可もサポートしています。

## エラー処理
<a name="bulk-member-match-errors"></a>

オペレーションは、次のエラー条件を処理します。
+ **400 不正なリクエスト**: 無効なリクエスト形式、必須パラメータの欠落、またはペイロードがサイズ制限 (500 メンバーまたは 5 MB) を超えています。
+ **422 未処理のエンティティ**: ジョブ実行中の処理エラー。
+ **個々のメンバーエラー**: 特定のメンバーが処理に失敗すると、オペレーションは残りのメンバーを続行し、適切な理由コードを使用して NonMatchedMembers グループにエラーの詳細を含めます。たとえば、患者が `birthDate`パラメータを欠落`MemberBundle`している は、次のエラーを返します。

  ```
  "errors": [
    {
      "memberIndex": 1,
      "jsonBlob": {
        "resourceType": "OperationOutcome",
        "issue": [
          {
            "severity": "error",
            "code": "invalid",
            "diagnostics": "MemberPatient.birthDate is required"
          }
        ],
        "statusCode": 400
      }
    }
  ]
  ```

エラーの詳細は、ステータスポーリングエンドポイントを通じて利用でき、以下が含まれます。
+ `numberOfMembersWithCustomerError`: 検証エラーまたは入力エラーがあるメンバーの数。
+ `numberOfMembersWithServerError`: サーバー側の処理エラーがあるメンバーの数。

## 関連の オペレーション
<a name="bulk-member-match-related"></a>
+ [`$member-match` HealthLake の オペレーション](reference-fhir-operations-member-match.md) — 個々のメンバーマッチングオペレーション。
+ [HealthLake の FHIR R4 `$davinci-data-export`オペレーション](reference-fhir-operations-davinci-data-export.md) — グループリソースを使用した一括データエクスポート。
+ [HealthLake `$operations`の FHIR R4](reference-fhir-operations.md) — サポートされているオペレーションの完全なリスト。

# HealthLake の FHIR R4 `$confirm-attribution-list`オペレーション
<a name="reference-fhir-operations-confirm-attribution-list"></a>

コンシューマーが属性リストに加える変更がないことをプロデューサーに示します。このオペレーションは、リストから非アクティブなメンバーを削除し、ステータスを「最終」に変更して、オペレーションを承認することで、属性リストを確定します。このオペレーションは、[FHIR メンバー属性 (ATR) リスト IG 2.1.0 実装の一部です。](https://build.fhir.org/ig/HL7/davinci-atr/spec.html)

## Endpoint
<a name="confirm-attribution-list-endpoint"></a>

```
POST [base]/Group/[id]/$confirm-attribution-list
```

## リクエスト
<a name="confirm-attribution-list-request"></a>

パラメータは必要ありません。

```
POST [base]/Group/[id]/$confirm-attribution-list
```

## 応答
<a name="confirm-attribution-list-response"></a>

確認メッセージを含む HTTP 201 を返します。

### レスポンス例
<a name="confirm-attribution-list-response-example"></a>

```
HTTP Status Code: 201

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "message",
      "valueString": "Accepted."
    }
  ]
}
```

## 確認後のグループステータス
<a name="confirm-attribution-list-group-status"></a>

確認に成功すると、グループリソースの属性リストのステータスが「最終」に設定されます。

```
{
  "resourceType": "Group",
  "id": "fullexample",
  "extension": [
    {
      "url": "http://hl7.org/fhir/us/davinci-atr/StructureDefinition/ext-attributionListStatus",
      "valueCode": "final"
    }
  ]
  // ... other Group properties
}
```

## エラー処理
<a name="confirm-attribution-list-error-handling"></a>

オペレーションは、次のエラー条件を処理します。


| エラー | HTTP ステータス | 説明 | 
| --- | --- | --- | 
| 無効なオペレーションリクエスト | 400 | 非準拠のリクエストパラメータまたは構造 | 
| グループリソースが見つかりません | 404 | 指定されたグループ ID は存在しません | 

## 認可とセキュリティ
<a name="confirm-attribution-list-authorization"></a>

SMART スコープの要件  
クライアントには、グループリソースおよび関連する属性リソースを読み取るための適切な権限が必要です  
の場合`$confirm-attribution-list`、クライアントにはグループリソースを変更するための書き込み権限も必要です。  
標準の FHIR 認可メカニズムがすべてのオペレーションに適用されます

# HealthLake の FHIR R4 `$davinci-data-export`オペレーション
<a name="reference-fhir-operations-davinci-data-export"></a>

`$davinci-data-export` オペレーションは、医療データのエクスポートに使用できる非同期 FHIR オペレーションです AWS HealthLake。このオペレーションは、メンバー属性 (ATR)、PDex プロバイダーアクセス、Payer-to-Payer、メンバーアクセス APIs など、複数のエクスポートタイプをサポートしています。これは、DaVinci 実装ガイドの要件を満たすように設計された、標準の FHIR `$export`オペレーションの特殊なバージョンです。

## 主な機能
<a name="davinci-data-export-features"></a>
+ *非同期処理*: 標準の FHIR 非同期リクエストパターンに従います
+ *グループレベルのエクスポート*: 特定のグループリソース内のメンバーのデータをエクスポートします。
+ *複数のエクスポートタイプ*: ATR (メンバー属性）、PDex プロバイダーアクセス、Payer-to-Payer、メンバーアクセス APIsをサポート
+ *包括的なプロファイルのサポート*: US Core、CARIN Blue ボタン、PDex プロファイルが含まれます
+ *柔軟なフィルタリング*: 患者、リソースタイプ、時間範囲によるフィルタリングをサポート
+ *NDJSON 出力*: データを改行区切りの JSON 形式で提供します

## オペレーションエンドポイント
<a name="davinci-data-export-endpoint"></a>

```
GET [base]/Group/[id]/$davinci-data-export
POST [base]/Group/[id]/$davinci-data-export
```

## リクエストパラメーター
<a name="davinci-data-export-parameters"></a>


| パラメータ | カーディナリティ | 説明 | 
| --- | --- | --- | 
| patient | 0..\$1 | エクスポートするデータを持つ特定のメンバー。省略すると、グループ内のすべてのメンバーがエクスポートされます。 | 
| \$1type | 0..1 | エクスポートする FHIR リソースタイプのカンマ区切りリスト。 | 
| \$1since | 0..1 | この日時以降に更新されたリソースのみを含めます。 | 
| \$1until | 0..1 | この日時より前に更新されたリソースのみを含めます。 | 
| exportType | 0..1 | 実行するエクスポートのタイプ。有効な値は、hl7.fhir.us.davinci-atr、hl7.fhir.us.davinci-pdex、hl7.fhir.us.davinci-pdex.p2p、hl7.fhir.us.davinci-pdex.member です。デフォルト: hl7.fhir.us.davinci-atr。 | 
| \$1includeEOB2xWoFinancial | 0..1 | 財務データが削除された CARIN BB 2.x ExplanationOfBenefit リソースを含めるかどうかを指定します。デフォルト: false。 | 

### サポートされているリソースタイプ
<a name="davinci-data-export-supported-resources"></a>

サポートされているリソースタイプは、指定したエクスポートタイプによって異なります。ATR エクスポートでは、次のリソースタイプがサポートされています。
+ `Group`
+ `Patient`
+ `Coverage`
+ `RelatedPerson`
+ `Practitioner`
+ `PractitionerRole`
+ `Organization`
+ `Location`

PDex エクスポート (プロバイダーアクセス、Payer-to-Payer、メンバーアクセス) では、前述のタイプに加えて、すべての臨床リソースタイプとクレームリソースタイプがサポートされています。サポートされているリソースタイプの詳細なリストについては、[US Core Implementation Guide (STU 6.1)](https://hl7.org/fhir/us/core/STU6.1/)、[CARIN Blue Button Implementation Guide](https://hl7.org/fhir/us/carin-bb/)、[Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/) を参照してください。

## エクスポートタイプ
<a name="davinci-data-export-types"></a>

`$davinci-data-export` オペレーションでは、次のエクスポートタイプがサポートされています。エクスポートタイプは、 `exportType`パラメータを使用して指定します。


| エクスポートタイプ | 目的 | データスコープ | 一時的な制限 | 
| --- | --- | --- | --- | 
| hl7.fhir.us.davinci-atr | メンバー属性リスト | 属性関連のリソース | なし | 
| hl7.fhir.us.davinci-pdex | プロバイダーアクセス API | 属性患者の臨床データとクレームデータ | 5 年 | 
| hl7.fhir.us.davinci-pdex.p2p | Payer-to-Payer Exchange | 保険移行の履歴メンバーデータ | 5 年 | 
| hl7.fhir.us.davinci-pdex.member | メンバーアクセス API | メンバー自身のヘルスデータ | 5 年 | 

**注記**  
PDex エクスポートの場合、5 年間の時間制限は ATR リソースタイプ (`Group`、`Patient`、、`Coverage`、、、`RelatedPerson``Practitioner``PractitionerRole`、`Organization`) には適用されません`Location`。これらのリソースは、年齢に関係なく常に含まれます。

### ATR (hl7.fhir.us.davinci-atr)
<a name="davinci-data-export-type-atr"></a>

ATR エクスポートタイプを使用すると、メンバー属性リストデータをエクスポートできます。このエクスポートタイプを使用して、グループ内のメンバーの属性関連のリソースを取得します。詳細については、[「Da Vinci ATR Export Operation](https://build.fhir.org/ig/HL7/davinci-atr/OperationDefinition-davinci-data-export.html)」を参照してください。

サポートされているリソースタイプ  
`Group`, `Patient`, `Coverage`, `RelatedPerson`, `Practitioner`, `PractitionerRole`, `Organization`, `Location`

一時フィルタリング  
一時的なフィルタリングは適用されません。一致するすべてのリソースは、日付に関係なくエクスポートされます。

### PDex エクスポートタイプ
<a name="davinci-data-export-type-pdex"></a>

すべての PDex エクスポートタイプは、サポートされている同じプロファイルとフィルタリングロジックを共有します。詳細については、[「Da Vinci PDex Provider Access API](https://build.fhir.org/ig/HL7/davinci-epdx/provider-access-api.html)」を参照してください。次のプロファイルがサポートされています。
+ US Core 3.1.1、6.1.0、および 7.0.0
+ PDex 事前認可 (メンバーアクセスではサポートされていません)
+ CARIN BB 2.x ベースプロファイル: 入院患者用、入院患者用、専門のNonClinician、口腔用、治療用

プロバイダーアクセス (`hl7.fhir.us.davinci-pdex`)  
ネットワーク内プロバイダーが属性患者の患者データを取得できるようにします。

Payer-to-Payer (`hl7.fhir.us.davinci-pdex.p2p`)  
患者が保険を変更するときに、支払者間のデータ交換を有効にします。

メンバーアクセス (`hl7.fhir.us.davinci-pdex.member`)  
メンバーが自分のヘルスデータにアクセスできるようにします。このエクスポートタイプには、クレームリソースに財務データが含まれる場合があります。

## プロファイルのサポートと包含ロジック
<a name="davinci-data-export-profile-support"></a>

PDex エクスポートの場合、 `$davinci-data-export`オペレーションは `meta.profile`要素のプロファイル宣言を使用して、エクスポートに含めるリソースを決定します。

### ExplanationOfBenefit リソース処理
<a name="davinci-data-export-carin-handling"></a>

`ExplanationOfBenefit` (EOB) リソースは、`meta.profile`宣言に基づいて PDex エクスポートに含まれるか除外されます。
+ CARIN BB 1.x プロファイルを持つ ExplanationOfBenefit リソースはエクスポートから除外されます。
+ `meta.profile` 設定されていない ExplanationOfBenefit リソースはエクスポートから除外されます。
+ CARIN BB 2.x Basis プロファイルを持つ ExplanationOfBenefit リソースは常に含まれます。
+ 財務データを含む CARIN BB 2.x プロファイルを持つ ExplanationOfBenefit リソースは、デフォルトで除外されます。`_includeEOB2xWoFinancial=true` を設定すると、それらは削除された財務データに含まれ、リソースは対応する Basis プロファイルに変換されます。
+ PDex 事前認可プロファイルを持つ ExplanationOfBenefit リソースは常に含まれます。

### 財務データ変換
<a name="davinci-data-export-financial-transformation"></a>

を設定すると`_includeEOB2xWoFinancial=true`、オペレーションは財務データを削除して [CARIN BB 2.x](https://hl7.org/fhir/us/carin-bb/) ExplanationOfBenefit リソースを対応する Basis プロファイルに変換します。たとえば、`C4BB ExplanationOfBenefit Oral`リソースは に変換され`C4BB ExplanationOfBenefit Oral Basis`、FHIR 仕様に従ってレコードから財務データが削除されます。

変換中は、次の財務データ要素が削除されます。
+ `total` 要素のすべてのスライス
+ `amounttype` スライスを含むすべての`adjudication`要素
+ 金額情報を含むすべての`item.adjudication`要素

このオペレーションは、変換中にプロファイルメタデータも更新します。
+ `meta.profile` が Basis プロファイルの正規 URL に更新されました
+ バージョンが CARIN BB 2.x Basis バージョンに更新されました
+ データストア内の既存のリソースは変更されません
+ エクスポートされたリソースはデータストアに保持されません

### プロファイル検出ルール
<a name="davinci-data-export-profile-detection"></a>

オペレーションでは、次のルールを使用してプロファイルを検出および検証します。
+ バージョン検出は`meta.profile`正規 URLsに基づいています
+ 宣言されたプロファイルのいずれかがエクスポート基準に一致する場合、リソースが含まれます。
+ プロファイルの検証はエクスポート処理中に行われます

## PDex エクスポートの 5 年間の一時フィルタリング
<a name="davinci-data-export-temporal-filtering"></a>

すべての PDex エクスポートタイプについて、HealthLake はリソースが最後に更新された日時に基づいて 5 年間の時間フィルターを適用します。時間フィルターは、経過時間に関係なく常にエクスポートされる次のコア属性リソースタイプを除くすべてのリソースに適用されます。
+ `Patient`
+ `Coverage`
+ `Organization`
+ `Practitioner`
+ `PractitionerRole`
+ `RelatedPerson`
+ `Location`
+ `Group`

これらの管理リソースと属性リソースは、エクスポートされたデータに不可欠なコンテキストを提供するため、除外されます。ATR エクスポートは一時的なフィルタリングの対象ではありません。

## リクエスト例
<a name="davinci-data-export-examples"></a>

次の例は、さまざまなエクスポートタイプのエクスポートジョブを開始する方法を示しています。

*ATR エクスポート*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Group,Patient,Coverage,Practitioner,Organization&exportType=hl7.fhir.us.davinci-atr

POST https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Group,Patient,Coverage,Practitioner,Organization&exportType=hl7.fhir.us.davinci-atr
Content-Type: application/json

{
  "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role",
  "JobName": "attribution-export-job",
  "OutputDataConfig": {
    "S3Configuration": {
      "S3Uri": "s3://your-export-bucket/EXPORT-JOB",
      "KmsKeyId": "arn:aws:kms:region:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  }
}
```

*ExplanationOfBenefit 財務データの削除によるプロバイダーアクセスのエクスポート*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Patient,Observation,Condition,MedicationRequest,ExplanationOfBenefit&exportType=hl7.fhir.us.davinci-pdex&_includeEOB2xWoFinancial=true
```

*Payer-to-Payer エクスポート*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Patient,Coverage,ExplanationOfBenefit,Condition,Procedure&exportType=hl7.fhir.us.davinci-pdex.p2p&_includeEOB2xWoFinancial=true
```

*特定の患者のメンバーアクセスエクスポート*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Patient,Observation,Condition,ExplanationOfBenefit,MedicationRequest&exportType=hl7.fhir.us.davinci-pdex.member&patient=Patient/example-patient-id
```

## レスポンス例
<a name="davinci-data-export-sample-response"></a>

```
{
  "datastoreId": "eaee622d8406b41eb86c0f4741201ff9",
  "jobStatus": "SUBMITTED",
  "jobId": "48d7b91dae4a64d00d54b70862f33f61"
}
```

## リソース関係
<a name="davinci-data-export-resource-relationships"></a>

オペレーションは、メンバー属性リスト内の関係に基づいてリソースをエクスポートします。

```
Group (Attribution List)
├── Patient (Members)
├── Coverage → RelatedPerson (Subscribers)
├── Practitioner (Attributed Providers)
├── PractitionerRole → Location
└── Organization (Attributed Providers)
```

### リソースソース
<a name="davinci-data-export-resource-sources"></a>


| [リソース]  | ソースの場所 | 説明 | 
| --- | --- | --- | 
| Patient | Group.member.entity | 属性リストのメンバーである患者 | 
| Coverage | Group.member.extension:coverageReference | 患者メンバーシップにつながるカバレッジ | 
| Organization | Group.member.extension:attributedProvider | 患者が属する組織 | 
| Practitioner | Group.member.extension:attributedProvider | 患者が属する個々の実務者 | 
| PractitionerRole | Group.member.extension:attributedProvider | 患者が属するプラクティショナーロール | 
| RelatedPerson | Coverage.subscriber | カバレッジのサブスクライバー | 
| Location | PractitionerRole.location | プラクティショナーロールに関連付けられた場所 | 
| Group | 入力エンドポイント | 属性リスト自体 | 

## ジョブ管理
<a name="davinci-data-export-job-management"></a>

ジョブのステータスを確認する  
`GET [base]/export/[job-id]`

ジョブをキャンセルする  
`DELETE [base]/export/[job-id]`

### ジョブのライフサイクル
<a name="davinci-data-export-job-lifecycle"></a>
+ `SUBMITTED` - ジョブが受信およびキューに入れられました
+ `IN_PROGRESS` - ジョブはアクティブに処理中です
+ `COMPLETED` - ジョブが正常に終了し、ダウンロード可能なファイル
+ `FAILED` - ジョブでエラーが発生しました

## [Output Format] (出力形式)
<a name="davinci-data-export-output-format"></a>
+ *ファイル形式*: NDJSON (Newline Delimited JSON)
+ *File Organization*: リソースタイプごとにファイルを区切ります。
+ *ファイル拡張*子: .ndjson
+ *場所*: 指定された S3 バケットとパス

## エラー処理
<a name="davinci-data-export-error-handling"></a>

オペレーションは、以下の条件で HTTP 400 Bad Request with an OperationOutcome を返します。

認可エラー  
で指定された IAM ロールには、エクスポートオペレーションを実行するための十分なアクセス許可`DataAccessRoleArn`がありません。必要な S3 および KMS アクセス許可の完全なリストについては、[「エクスポートジョブのアクセス許可の設定](getting-started-setting-up.md#setting-up-export-permissions)」を参照してください。

パラメータ検証エラー  
+ `patient` パラメータは としてフォーマットされていません `Patient/id,Patient/id,...`
+ 1 つ以上の患者参照が無効であるか、指定されたグループに属していません
+ `exportType` パラメータ値はサポートされているエクスポートタイプではありません
+ `_type` パラメータには、指定されたエクスポートタイプでサポートされていないリソースタイプが含まれています
+ `_type` パラメータに`hl7.fhir.us.davinci-atr`エクスポートタイプに必要なリソースタイプ (`Group`、`Patient`、`Coverage`) がありません
+ `_includeEOB2xWoFinancial` パラメータ値が有効なブール値ではありません

リソース検証エラー  
+ 指定されたグループリソースがデータストアに存在しません
+ 指定されたグループリソースにはメンバーがありません
+ 1 人以上のグループメンバーが、データストアに存在しない患者リソースを参照する

## セキュリティと認可
<a name="davinci-data-export-security"></a>
+ 標準の FHIR 認可メカニズムが適用されます
+ データアクセスロールには、S3 および KMS オペレーションに必要な IAM アクセス許可が必要です。必要なアクセス許可の完全なリストについては、[「エクスポートジョブのアクセス許可の設定](getting-started-setting-up.md#setting-up-export-permissions)」を参照してください。

## ベストプラクティス
<a name="davinci-data-export-best-practices"></a>
+ *リソースタイプの選択*: エクスポートサイズと処理時間を最小限に抑えるために必要なリソースタイプのみをリクエストする
+ *時間ベースのフィルタリング*: 増分エクスポートに `_since`パラメータを使用する
+ *患者のフィルタリング*: 特定のメンバーのデータのみが必要な場合は、 `patient`パラメータを使用します。
+ *ジョブのモニタリング*: 大規模なエクスポートのジョブステータスを定期的にチェックする
+ *エラー処理*: 失敗したジョブに適切な再試行ロジックを実装する
+ *テンポラルフィルターの認識*: PDex エクスポートの場合は、リソースタイプを選択するときに 5 年間のテンポラルフィルターを検討してください。
+ *財務データの削除*: 財務情報のないクレームデータ`_includeEOB2xWoFinancial=true`が必要な場合に使用します。
+ *プロファイル管理*: リソースに適切なプロファイル宣言があることを確認し、取り込み前にターゲットプロファイルと照合して検証し、プロファイルのバージョニングを使用してエクスポート動作を制御します。

## 制限事項
<a name="davinci-data-export-limitations"></a>
+ `patient` パラメータでは最大 500 人の患者を指定できます
+ エクスポートはグループレベルのオペレーションのみに制限されます
+ は、エクスポートタイプごとに事前定義されたリソースタイプのセットのみをサポートします。
+ 出力は常に NDJSON 形式です
+ PDex のエクスポートは、5 年間の臨床データとクレームデータに制限されます。
+ 財務データ変換は、CARIN BB 2.x ExplanationOfBenefit プロファイルにのみ適用されます。

## その他のリソース
<a name="davinci-data-export-additional-resources"></a>
+ [Da Vinci メンバー属性リスト IG](https://build.fhir.org/ig/HL7/davinci-atr/)
+ [Da Vinci Payer Data Exchange IG](https://hl7.org/fhir/us/davinci-pdex/)
+ [CARIN コンシューマー向け支払者データ交換 IG](https://build.fhir.org/ig/HL7/carin-bb/)
+ [US Core 実装ガイド](https://www.hl7.org/fhir/us/core/)
+ [FHIR バルクデータアクセス仕様](https://hl7.org/fhir/uv/bulkdata/)

# を使用した臨床ドキュメントの生成 `$document`
<a name="reference-fhir-operations-document"></a>

AWS HealthLake は Composition リソースの `$document`オペレーションをサポートするようになりました。これにより、Composition と参照されるすべてのリソースを 1 つのまとまりのあるパッケージにバンドルすることで、完全な臨床ドキュメントを生成できます。このオペレーションは、以下を必要とするヘルスケアアプリケーションにとって不可欠です。
+ 標準化された臨床文書を作成する
+ 完全な患者レコードを交換する
+ 包括的な臨床ドキュメントを保存する
+ 関連するすべてのコンテキストを含むレポートを生成する

## 使用方法
<a name="document-usage"></a>

`$document` オペレーションは、GET メソッドと POST メソッドの両方を使用して Composition リソースで呼び出すことができます。

**サポートされているオペレーション**  


```
GET/POST [base]/Composition/[id]/$document
```

## サポートされているパラメータ
<a name="document-parameters"></a>

HealthLake は、次の FHIR `$document`パラメータをサポートしています。


| パラメータ | タイプ | [Required] (必須) | デフォルト | 説明  | 
| --- | --- | --- | --- | --- | 
| persist | boolean | 不可 | false | サーバーが生成されたドキュメントバンドルを保存するかどうかを示すブール値 | 

## 例
<a name="document-examples"></a>

**GET リクエスト**  


```
GET [base]/Composition/180f219f-97a8-486d-99d9-ed631fe4fc57/$document?persist=true
```

**パラメータを使用した POST リクエスト**  


```
POST [base]/Composition/180f219f-97a8-486d-99d9-ed631fe4fc57/$document
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "persist",
      "valueBoolean": true
    }
  ]
}
```

**レスポンス例**  
オペレーションは、コンポジションと参照されるすべてのリソースを含む「ドキュメント」タイプの Bundle リソースを返します。

```
{
  "resourceType": "Bundle",
  "id": "180f219f-97a8-486d-99d9-ed631fe4fc57",
  "type": "document",
  "identifier": {
    "system": "urn:ietf:rfc:3986",
    "value": "urn:uuid:0c3151bd-1cbf-4d64-b04d-cd9187a4c6e0"
  },
  "timestamp": "2024-06-21T15:30:00Z",
  "entry": [
    {
      "fullUrl": "http://example.org/fhir/Composition/180f219f-97a8-486d-99d9-ed631fe4fc57",
      "resource": {
        "resourceType": "Composition",
        "id": "180f219f-97a8-486d-99d9-ed631fe4fc57",
        "status": "final",
        "type": {
          "coding": [
            {
              "system": "http://loinc.org",
              "code": "34133-9",
              "display": "Summary of Episode Note"
            }
          ]
        },
        "subject": {
          "reference": "Patient/example"
        },
        "section": [
          {
            "title": "Allergies",
            "entry": [
              {
                "reference": "AllergyIntolerance/123"
              }
            ]
          }
        ]
      }
    },
    {
      "fullUrl": "http://example.org/fhir/Patient/example",
      "resource": {
        "resourceType": "Patient",
        "id": "example",
        "name": [
          {
            "family": "Smith",
            "given": ["John"]
          }
        ]
      }
    },
    {
      "fullUrl": "http://example.org/fhir/AllergyIntolerance/123",
      "resource": {
        "resourceType": "AllergyIntolerance",
        "id": "123",
        "patient": {
          "reference": "Patient/example"
        },
        "code": {
          "coding": [
            {
              "system": "http://snomed.info/sct",
              "code": "418689008",
              "display": "Allergy to penicillin"
            }
          ]
        }
      }
    }
  ]
}
```

## 行動
<a name="document-behavior"></a>

`$document` オペレーション:

1. 指定されたコンポジションリソースをドキュメントの基盤として使用します。

1. コンポジションによって直接参照されるすべてのリソースを識別して取得します

1. コンポジションと参照されるすべてのリソースを「document」タイプのバンドルにパッケージ化します

1. 永続パラメータが true に設定されている場合、生成されたドキュメントバンドルをデータストアに保存します。

1. 包括的なドキュメント生成のために コンポジションによって間接的に参照されるリソースを識別して取得します

`$document` オペレーションは現在、次の形式のリソースリファレンスの取得をサポートしています。

1. 

   ```
   GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id
   ```

1. リソース/ID

コンポジションリソース内のサポートされていないリソース参照は、生成されたドキュメントから除外されます。

## エラー処理
<a name="document-error-handling"></a>

オペレーションは、次のエラー条件を処理します。
+ 400 不正なリクエスト: 無効な`$document`オペレーション (非準拠リクエスト）、または永続化が true に設定されている場合に参照が除外されたために結果のドキュメントが FHIR 検証に失敗した場合
+ 404 Not Found: コンポジションリソースが見つかりません

`$document` オペレーション仕様の詳細については、[FHIR R4 コンポジション`$document`](https://www.hl7.org/fhir/R4/composition-operation-document.html)ドキュメントを参照してください。

# を使用してリソースを完全に削除する `$erase`
<a name="reference-fhir-operations-erase"></a>

AWS HealthLake は `$erase`オペレーションをサポートし、特定のリソースとその履歴バージョンを完全に削除できます。このオペレーションは、以下が必要な場合に特に役立ちます。
+ 個々のリソースを完全に削除する
+ 特定のバージョン履歴を削除する
+ 個々のリソースライフサイクルを管理する
+ 特定のデータ削除要件に準拠する

## 使用方法
<a name="erase-usage"></a>

`$erase` オペレーションは 2 つのレベルで呼び出すことができます。

**リソースインスタンスレベル**  


```
POST [base]/[ResourceType]/[ID]/$erase?deleteAuditEvent=true
```

**バージョン固有のレベル**  


```
POST [base]/[ResourceType]/[ID]/_history/[VersionID]/$erase
```

## パラメータ
<a name="erase-parameters"></a>


| パラメータ | タイプ | [Required] (必須) | デフォルト | 説明  | 
| --- | --- | --- | --- | --- | 
| deleteAuditEvent | boolean | 不可 | false | true の場合、関連する監査イベントを削除します | 

## 例
<a name="erase-examples"></a>

**リクエストの例**  


```
POST [base]/Patient/example-patient/$erase
```

**レスポンスの例**  


```
{
      "jobId": "5df47e2f51ff3c731847678cb8cad48e",
      "jobStatus": "SUBMITTED"
    }
```

## ジョブのステータス
<a name="erase-job-status"></a>

消去ジョブのステータスを確認するには:

```
GET [base]/$erase/[jobId]
```

オペレーションはジョブステータス情報を返します。

```
{
      "datastoreId": "36622996b1fcecb7e12ee2ee085308d3",
      "jobId": "5df47e2f51ff3c731847678cb8cad48e",
      "status": "COMPLETED",
      "submittedTime": "2025-10-30T16:39:24.160Z"
    }
```

## 行動
<a name="erase-behavior"></a>

`$erase` オペレーション:

1. 非同期的に処理してデータの整合性を確保する

1. ACID トランザクションを維持します

1. ジョブステータスの追跡を提供します

1. 指定されたリソースとそのバージョンを完全に削除します

1. 削除アクティビティの包括的な監査ログ記録が含まれます

1. 監査イベントの選択的な削除をサポート

## 監査ログ記録
<a name="erase-audit-logging"></a>

`$erase` オペレーションは、ユーザー ID、タイムスタンプ、リソースの詳細とともに DeleteResource としてログに記録します。

## 制限事項
<a name="erase-limitations"></a>
+ `$erased` リソースは検索結果や`_history`クエリに表示されません。
+ 消去されるリソースは、処理中に一時的にアクセスできない場合があります。
+ リソースが完全に削除されるとすぐにストレージ計測が調整されます

# を使用した患者データの取得 `Patient/$everything`
<a name="reference-fhir-operations-everything"></a>

 `Patient/$everything` オペレーションは、FHIR `Patient`リソースとその に関連する他のリソースをクエリするために使用されます`Patient`。オペレーションを使用して、レコード全体へのアクセスを患者に提供したり、プロバイダーが患者に関連する一括データダウンロードを実行したりできます。HealthLake は、特定の患者の `Patient/$everything`をサポートします`id`。

`Patient/$everything` は、以下の例に示すように呼び出すことができる FHIR REST API オペレーションです。

------
#### [ GET request ]

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything
```

------

**注記**  
応答するリソースは、リソースタイプとリソース でソートされます`id`。  
レスポンスには常に が入力されます`Bundle.total`。

## `Patient/$everything` 個のパラメータ
<a name="patient-everything-query-params"></a>

HealthLake は、次のクエリパラメータをサポートしています。


| パラメータ | Details | 
| --- | --- | 
|  開始  |  指定された開始日より後にすべての`Patient`データを取得します。  | 
|  end  |  指定された終了日より前にすべての`Patient`データを取得します。  | 
|  since  |  指定された日付以降に更新されたすべての`Patient`データを取得します。  | 
|  \$1type  |  特定のリソースタイプの`Patient`データを取得します。  | 
|  \$1count  |  `Patient` データを取得し、ページサイズを指定します。  | 

**Example - 指定された開始日以降にすべての患者データを取得する**  
`Patient/$everything` は、`start`フィルターを使用して、特定の日付より後のデータのみをクエリできます。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?start=2024-03-15T00:00:00.000Z
```

**Example - 指定された終了日より前にすべての`Patient`データを取得する**  
患者 \$1すべての は、`end`フィルターを使用して、特定の日付より前のデータのみをクエリできます。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?end=2024-03-15T00:00:00.000Z
```

**Example - 指定された日付以降に更新されたすべての`Patient`データを取得する**  
`Patient/$everything` は、`since`フィルターを使用して、特定の日付以降に更新されたデータのみをクエリできます。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?since=2024-03-15T00:00:00.000Z
```

**Example - 特定のリソースタイプの`Patient`データを取得する**  
患者 \$1Everything は`_type`フィルターを使用して、レスポンスに含める特定のリソースタイプを指定できます。複数のリソースタイプをカンマ区切りリストで指定できます。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?_type=Observation,Condition
```

**Example - `Patient` データを取得し、ページサイズを指定する**  
患者 \$1すべての は、 `_count` を使用してページサイズを設定できます。  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?_count=15
```

## `Patient/$everything`  `start` および `end` 属性
<a name="reference-patient-everything-start-end-attributes"></a>

HealthLake は、 `Patient/ $everything``start`および `end`クエリパラメータに対して次のリソース属性をサポートしています。


| [リソース]  | リソースエレメント | 
| --- | --- | 
| アカウント | Account.servicePeriod.start | 
| AdverseEvent | AdverseEvent.date | 
| AllergyIntolerance | AllergyIntolerance.recordedDate | 
| 予約 | Appointment.start | 
| AppointmentResponse | AppointmentResponse.start | 
| AuditEvent | AuditEvent.period.start | 
| Basic | Basic.created | 
| BodyStructure | NO\$1DATE | 
| CarePlan | CarePlan.period.start | 
| CareTeam | CareTeam.period.start | 
| ChargeItem | ChargeItem.occurrenceDateTime,ChargeItem.occurrencePeriod.start,ChargeItem.occurrenceTiming.event | 
| Claim | Claim.billablePeriod.start | 
| ClaimResponse | ClaimResponse.created | 
| ClinicalImpression | ClinicalImpression.date | 
| コミュニケーション | Communication.sent | 
| CommunicationRequest | CommunicationRequest.occurrenceDateTime,CommunicationRequest.occurrencePeriod.start | 
| コンポジション | Composition.date | 
| Condition | Condition.recordedDate | 
| 同意 | consent.dateTime | 
| カバレッジ | Coverage.period.start | 
| CoverageEligibilityRequest | CoverageEligibilityRequest.created | 
| CoverageEligibilityResponse | CoverageEligibilityResponse.created | 
| DetectedIssue | DetectedIssue.identified | 
| DeviceRequest | DeviceRequest.authoredOn | 
| DeviceUseStatement | DeviceUseStatement.recordedOn | 
| DiagnosticReport | DiagnosticReport.effective | 
| DocumentManifest | DocumentManifest.created | 
| DocumentReference | DocumentReference.context.period.start | 
| エンカウンター | Encounter.period.start | 
| EnrollmentRequest | EnrollmentRequest.created | 
| EpisodeOfCare | EpisodeOfCare.period.start | 
| ExplanationOfBenefit | ExplanationOfBenefit.billablePeriod.start | 
| FamilyMemberHistory | NO\$1DATE | 
| フラグ | Flag.period.start | 
| 目標 | Goal.statusDate | 
| Group | NO\$1DATE | 
| ImagingStudy | ImagingStudy.started | 
| イミュナイゼーション | Immunization.recorded | 
| ImmunizationEvaluation | ImmunizationEvaluation.date | 
| ImmunizationRecommendation | ImmunizationRecommendation.date | 
| Invoice | Invoice.date | 
| リスト | List.date | 
| MeasureReport | MeasureReport.period.start | 
| メディア | Media.issued | 
| MedicationAdministration | MedicationAdministration.effective | 
| MedicationDispense | MedicationDispense.whenPrepared | 
| MedicationRequest | MedicationRequest.authoredOn | 
| MedicationStatement | MedicationStatement.dateAsserted | 
| MolecularSequence | NO\$1DATE | 
| NutritionOrder | NutritionOrder.dateTime | 
| 監視結果 | 観測効果 | 
| 患者 | NO\$1DATE | 
| 個人 | NO\$1DATE | 
| 手順 | Procedure.perform | 
| プロベナンス | Provenance.occurredPeriod.start,Provenance.occurredDateTime | 
| QuestionnaireResponse | QuestionnaireResponse.authored | 
| RelatedPerson | NO\$1DATE | 
| RequestGroup | RequestGroup.authoredOn | 
| ResearchSubject | ResearchSubject.period | 
| RiskAssessment | RiskAssessment.occurrenceDateTime, RiskAssessment.occurrencePeriod.start | 
| スケジュール | Schedule.planningHorizon | 
| ServiceRequest | ServiceRequest.authoredOn | 
| 標本 | ".receivedTime | 
| SupplyDelivery | SupplyDelivery.occurrenceDateTime, SupplyDelivery.occurrencePeriod.start, SupplyDelivery.occurrenceTiming.event | 
| SupplyRequest | SupplyRequest.authoredOn | 
| VisionPrescription | VisionPrescription.dateWritten | 

# を使用した ValueSet コードの取得 `$expand`
<a name="reference-fhir-operations-expand"></a>

AWS HealthLake は、顧客として取り込まれた ValueSets の `$expand`オペレーションをサポートするようになりました。これにより、それらの ValueSet リソースに含まれるコードの完全なリストを取得できます (複数可）。このオペレーションは、以下が必要な場合に特に役立ちます。
+ 検証目的で可能なすべてのコードを取得する
+ ユーザーインターフェイスで使用可能なオプションを表示する
+ 特定の用語コンテキスト内で包括的なコード検索を実行する

## 使用方法
<a name="expand-usage"></a>

`$expand` オペレーションは、GET メソッドと POST メソッドの両方を使用して ValueSet リソースで呼び出すことができます。

**サポートされているオペレーション**  


```
GET/POST [base]/ValueSet/[id]/$expand
GET [base]/ValueSet/$expand?url=http://example.com
POST [base]/ValueSet/$expand
```

## サポートされているパラメータ
<a name="expand-parameters"></a>

HealthLake は、FHIR R4 `$expand`パラメータのサブセットをサポートしています。


| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| url | uri | 不可 | 拡張する ValueSet の正規 URL | 
| id | id | 不可 | 拡張する ValueSet リソース ID (GET または POST オペレーションの場合) | 
| filter | string | 不可 | コード拡張結果をフィルタリングする | 
| count | integer | 不可 | 返されるコードの数 | 
| offset | integer | 不可 | 戻る前にスキップする一致するコードの数。フィルタリング後、元の ValueSet の完全なフィルタリングされていないコンテンツではなく、一致するコードにのみ適用されます。 | 

## 例
<a name="expand-examples"></a>

**ID による GET リクエスト**  


```
GET [base]/ValueSet/example-valueset/$expand
```

**フィルターを使用した URL による GET リクエスト**  


```
GET [base]/ValueSet/$expand?url=http://example.com/ValueSet/my-valueset&filter=male&count=5
```

**パラメータを含む POST リクエスト (ID 別)**  


```
POST [base]/ValueSet/example-valueset/$expand
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "count",
      "valueInteger": 10
    },
    {
      "name": "filter",
      "valueString": "admin"
    }
  ]
}
```

**パラメータを含む POST リクエスト (URL による)**  


```
POST [base]/ValueSet/$expand
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "url",
      "valueUri": "http://hl7.org/fhir/ValueSet/administrative-gender"
    },
    {
      "name": "count",
      "valueInteger": 10
    }
  ]
}
```

**レスポンス例**  
オペレーションは、展開されたコードを含む `expansion`要素を持つ ValueSet リソースを返します。

```
{
  "resourceType": "ValueSet",
  "id": "administrative-gender",
  "status": "active",
  "expansion": {
    "identifier": "urn:uuid:12345678-1234-1234-1234-123456789abc",
    "timestamp": "2024-01-15T10:30:00Z",
    "total": 4,
    "parameter": [
      {
        "name": "count",
        "valueInteger": 10
      }
    ],
    "contains": [
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "male",
        "display": "Male"
      },
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "female",
        "display": "Female"
      },
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "other",
        "display": "Other"
      },
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "unknown",
        "display": "Unknown"
      }
    ]
  }
}
```

レスポンスは以下のとおりです。
+ expansion.total: 展開された ValueSet のコードの合計数
+ expansion.contains: システム、コード、および表示値を含む拡張コードの配列
+ expansion.parameter: 拡張リクエストで使用されるパラメータ

`$expand` オペレーション仕様の詳細については、[FHIR R4 ValueSet `$expand`](https://build.fhir.org/valueset-operation-expand.html) ドキュメントを参照してください。

# FHIR を使用した HealthLake データのエクスポート `$export`
<a name="reference-fhir-operations-export"></a>

FHIR \$1export オペレーションを使用して、HealthLake データストアからデータを一括エクスポートできます。HealthLake は、 `POST`および `GET`リクエスト`$export`を使用した FHIR をサポートしています。でエクスポートリクエストを行うには`POST`、必要なアクセス許可を持つ IAM ユーザー、グループ、またはロールがあり、リクエスト`$export`の一部として を指定し、リクエスト本文に必要なパラメータを含める必要があります。

**注記**  
FHIR を使用して行われたすべての HealthLake エクスポートリクエスト`$export`は `ndjson`形式で返され、Amazon S3 バケットにエクスポートされます。各 Amazon S3 オブジェクトには 1 つの FHIR リソースタイプのみが含まれます。  
 AWS アカウントサービスクォータごとにエクスポートリクエストをキューに入れることができます。詳細については、「[Service Quotas](reference-healthlake-endpoints-quotas.md#reference-healthlake-quotas)」を参照してください。

HealthLake は、次の 3 種類の一括エクスポートエンドポイントリクエストをサポートしています。


**HealthLake バルク`$export`タイプ**  

| エクスポートタイプ | 説明 | 構文 | 
| --- | --- | --- | 
| システム | HealthLake FHIR サーバーからすべてのデータをエクスポートします。 | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/$export`  | 
| すべての患者 | 患者リソースタイプに関連付けられたリソースタイプを含む、すべての患者に関連するすべてのデータをエクスポートします。 | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export` `GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export` | 
| 患者のグループ | グループ ID で指定された患者のグループに関連するすべてのデータをエクスポートします。 | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export` `GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export` | 

## [開始する前に]
<a name="export-rest-before-you-begin"></a>

HealthLake 用の FHIR REST API を使用してエクスポートリクエストを行うには、次の要件を満たします。
+ エクスポートリクエストを行うために必要なアクセス許可を持つユーザー、グループ、またはロールを設定しておく必要があります。詳細については[`$export` リクエストの承認](#export-rest-auth)を参照してください。
+ データをエクスポートする Amazon S3 バケットへの HealthLake アクセスを許可するサービスロールを作成しておく必要があります。サービスロールでは、サービスプリンシパルとして HealthLake も指定する必要があります。アクセス許可の設定の詳細については、「」を参照してください[エクスポートジョブのアクセス許可の設定](getting-started-setting-up.md#setting-up-export-permissions)。

## `$export` リクエストの承認
<a name="export-rest-auth"></a>

FHIR REST API を使用してエクスポートリクエストを成功させるには、IAM または OAuth2.0. サービスロールも必要です。

**IAM を使用したリクエストの承認**  
`$export` リクエストを行うときは、ユーザー、グループ、またはロールに IAM アクションがポリシーに含まれている必要があります。詳細については、「[エクスポートジョブのアクセス許可の設定](getting-started-setting-up.md#setting-up-export-permissions)」を参照してください。

**SMART on FHIR (OAuth 2.0) を使用したリクエストの承認**  
SMART on FHIR 対応 HealthLake データストアに`$export`リクエストを行うときは、適切なスコープを割り当てる必要があります。詳細については、「[HealthLake の FHIR リソーススコープに関する SMART](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest)」を参照してください。

**注記**  
`GET` リクエスト`$export`を含む FHIR では、ファイルのエクスポートと取得をリクエストするために、同じ認証方法またはベアラートークン (SMART on FHIR の場合) が必要です。`$export` で FHIR を使用してエクスポートされたファイルは`GET`、48 時間ダウンロードできます。

## `$export` リクエストを行う
<a name="export-rest-request"></a>

このセクションでは、FHIR REST API を使用してエクスポートリクエストを行うときに必要な手順について説明します。

 AWS アカウントで誤って課金されないように、`$export`構文を指定せずにリクエストを実行して`POST`リクエストをテストすることをお勧めします。

リクエストを行うには、以下を実行する必要があります。

1. サポートされているエンドポイント`$export`の`POST`リクエスト URL で を指定します。

1. 必要なヘッダーパラメータを指定します。

1. 必要なパラメータを定義するリクエスト本文を指定します。

### ステップ 1: サポートされている[エンドポイント](reference-healthlake-endpoints-quotas.md#reference-healthlake-endpoints)`$export`の`POST`リクエスト URL で を指定します。
<a name="export-rest-request-step-1"></a>

HealthLake は、3 種類の一括エクスポートエンドポイントリクエストをサポートしています。一括エクスポートリクエストを行うには、サポートされている 3 つのエンドポイントのいずれかに対して `POST`ベースのリクエストを行う必要があります。次の例は、リクエスト URL `$export`で を指定する場所を示しています。
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/$export`
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export`
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export`

`POST` リクエスト文字列では、以下のサポートされている検索パラメータを使用できます。

#### サポートされている検索パラメータ
<a name="export-rest-query-parameters"></a>

HealthLake は、一括エクスポートリクエストで次の検索修飾子をサポートしています。

次の例には、リクエストを送信する前にエンコードする必要がある特殊文字が含まれています。


| 名前 | 必須? | 説明 | 例 | 
| --- | --- | --- | --- | 
| \$1outputFormat | いいえ | リクエストされたバルクデータファイルを生成する形式。使用できる値は、application/fhir\$1ndjson、application/ndjson、 ですndjson。 |  | 
| \$1type | いいえ | エクスポートジョブに含めるカンマ区切りの FHIR リソースタイプの文字列。すべてのリソースをエクスポートするとコストがかかる\$1type可能性があるため、 を含めることをお勧めします。 | &\$1type=MedicationStatement, Observation | 
| \$1since | いいえ | 日付タイムスタンプ以降に変更されたリソースタイプ。リソースタイプに最終更新時刻がない場合、レスポンスに含まれます。 | &\$1since=2024-05-09T00%3A00%3A00Z | 
| \$1until | いいえ | 日付タイムスタンプ以前に変更されたリソースタイプ。と組み合わせて使用\$1sinceして、エクスポートする特定の時間範囲を定義します。リソースタイプに最終更新時刻がない場合、レスポンスから除外されます。 | &\$1until=2024-12-31T23%3A59%3A59Z | 

### ステップ 2: 必要なヘッダーパラメータを指定する
<a name="export-rest-request-step-2"></a>

FHIR REST API を使用してエクスポートリクエストを行うには、次のヘッダーパラメータを指定する必要があります。
+ Content-Type：`application/fhir+json`
+ 優先: `respond-async`

次に、リクエスト本文で必要な要素を指定する必要があります。

### ステップ 3: で必要なパラメータを定義するリクエスト本文を指定します。
<a name="export-rest-request-step-3"></a>

エクスポートリクエストには、 `JSON`形式の本文も必要です。本文には、次のパラメータを含めることができます。


| Key | 必須? | 説明 | 値 | 
| --- | --- | --- | --- | 
| DataAccessRoleArn | はい | HealthLake サービスロールの ARN。使用するサービスロールは、サービスプリンシパルとして HealthLake を指定する必要があります。 | arn:aws:iam::444455556666:role/your-healthlake-service-role | 
| JobName | いいえ | エクスポートリクエストの名前。 | your-export-job-name | 
| S3Uri | はい | OutputDataConfig キーの一部。エクスポートされたデータがダウンロードされる送信先バケットの S3 URI。 | s3://amzn-s3-demo-bucket/EXPORT-JOB/ | 
| KmsKeyId | はい | OutputDataConfig キーの一部。Amazon S3 バケットの保護に使用される AWS KMS キーの ARN。 | arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab | 

**Example FHIR REST API を使用して行われたエクスポートリクエストの本文**  
FHIR REST API を使用してエクスポートリクエストを行うには、次に示すように本文を指定する必要があります。  

```
{
  "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role",
  "JobName": "your-export-job",
  "OutputDataConfig": {
    "S3Configuration": {
      "S3Uri": "s3://amzn-s3-demo-bucket/EXPORT-JOB",
      "KmsKeyId": "arn:aws:kms:region-of-bucket:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  }
}
```

リクエストが成功すると、次のレスポンスを受け取ります。

*レスポンスヘッダー*

```
content-location: https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/export/your-export-request-job-id
```

*レスポンス本文*

```
{
  "datastoreId": "your-data-store-id",
  "jobStatus": "SUBMITTED",
  "jobId": "your-export-request-job-id"
}
```

## エクスポートリクエストの管理
<a name="export-rest-management"></a>

エクスポートリクエストが成功したら、 を使用して現在のエクスポートリクエストのステータスを`$export`記述し、現在のエクスポートリクエストをキャンセル`$export`して、リクエストを管理できます。

REST API を使用してエクスポートリクエストをキャンセルすると、キャンセルリクエストを送信した時点までにエクスポートされたデータの一部に対してのみ課金されます。

以下のトピックでは、現在のエクスポートリクエストのステータスを取得またはキャンセルする方法について説明します。

### エクスポートリクエストのキャンセル
<a name="export-rest-management-describe"></a>

エクスポートリクエストをキャンセルするには、`DELETE`リクエストを行い、リクエスト URL にジョブ ID を指定します。

```
DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/export/your-export-request-job-id
```

リクエストが成功すると、以下が表示されます。

```
{
  "exportJobProperties": {
    "jobId": "your-original-export-request-job-id",
    "jobStatus": "CANCEL_SUBMITTED",
    "datastoreId": "your-data-store-id"
  }
}
```

リクエストが成功しない場合、次の情報が表示されます。

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-supported",
      "diagnostics": "Interaction not supported."
    }
  ]
}
```

### エクスポートリクエストの説明
<a name="export-rest-management-describe"></a>

エクスポートリクエストのステータスを取得するには、 `export`と を使用して`GET`リクエストを行います`export-request-job-id`。

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/export/your-export-request-id
```

JSON レスポンスには `ExportJobProperties` オブジェクトが含まれます。これには、次のキーと値のペアが含まれる場合があります。


| 名前 | 必須? | 説明 | 値 | 
| --- | --- | --- | --- | 
| DataAccessRoleArn | いいえ | HealthLake サービスロールの ARN。使用するサービスロールは、サービスプリンシパルとして HealthLake を指定する必要があります。 | arn:aws:iam::444455556666:role/your-healthlake-service-role | 
| SubmitTime | いいえ | エクスポートジョブが送信された日付。 | Apr 21, 2023 5:58:02 | 
| EndTime | いいえ | エクスポートジョブが完了した時刻。 | Apr 21, 2023 6:00:08 PM | 
| JobName | いいえ | エクスポートリクエストの名前。 | your-export-job-name | 
| JobStatus | いいえ |  | 次の値を指定できます。<pre>SUBMITTED | IN_PROGRESS | COMPLETED_WITH_ERRORS | COMPLETED |<br />      FAILED</pre> | 
| S3Uri | はい | [OutputDataConfig](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_OutputDataConfig.html) オブジェクトの一部。エクスポートされたデータがダウンロードされるレプリケート先バケットの Amazon S3 URI。 | s3://amzn-s3-demo-bucket/EXPORT-JOB/ | 
| KmsKeyId | はい | [OutputDataConfig](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_OutputDataConfig.html) オブジェクトの一部。Amazon S3 バケットの保護に使用される AWS KMS キーの ARN。 | arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab | 

**Example : FHIR REST API を使用して行われた describe エクスポートリクエストの本文**  
成功すると、次の JSON レスポンスが表示されます。  

```
{
  "exportJobProperties": {
    "jobId": "your-export-request-id",
    "JobName": "your-export-job",
    "jobStatus": "SUBMITTED",
    "submitTime": "Apr 21, 2023 5:58:02 PM",
    "endTime": "Apr 21, 2023 6:00:08 PM",
    "datastoreId": "your-data-store-id",
    "outputDataConfig": {
      "s3Configuration": {
        "S3Uri": "s3://amzn-s3-demo-bucket/EXPORT-JOB",
        "KmsKeyId": "arn:aws:kms:region-of-bucket:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab""
      }
    },
    "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role",
  }
}
```

# HealthLake の FHIR `$inquire`オペレーション
<a name="reference-fhir-operations-inquire"></a>

`$inquire` オペレーションを使用すると、以前に送信された事前承認リクエストのステータスを確認できます。このオペレーションでは、[Da Vinci 事前認可サポート (PAS) 実装ガイド](https://hl7.org/fhir/us/davinci-pas/)を実装し、現在の認可決定を取得するための標準化された FHIR ベースのワークフローを提供します。

## 仕組み
<a name="inquire-how-it-works"></a>
+ **問い合わせの送信**: 確認したいクレームとサポート情報を含む FHIR バンドルを送信する
+ **検索**: HealthLake は、データストア内の対応する ClaimResponse を検索します。
+ **取得**: 最新の認可ステータスが取得されます
+ **応答**: 現在の認可ステータス (キューに入れられた、承認された、拒否されたなど) の即時応答を受け取ります。

**注記**  
`$inquire` は、既存の認可ステータスを取得する**読み取り専用オペレーション**です。データストア内のリソースは変更または更新されません。

## API エンドポイント
<a name="inquire-api-endpoint"></a>

```
POST /datastore/{datastoreId}/r4/Claim/$inquire  
Content-Type: application/fhir+json
```

## リクエスト構造
<a name="inquire-request-structure"></a>

### バンドルの要件
<a name="inquire-bundle-requirements"></a>

リクエストは、以下を含む FHIR Bundle リソースである必要があります。
+ **Bundle.type**: である必要があります `"collection"`
+ **Bundle.entry**: 以下を含むクレームリソースを **1** つだけ含める必要があります。
  + `use = "preauthorization"`
  + `status = "active"`
+ **参照リソース**: クレームによって参照されるすべてのリソースをバンドルに含める必要があります

**Query-by-Example**  
入力バンドルのリソースは検索テンプレートとして機能します。HealthLake は、提供された情報を使用して、対応する ClaimResponse を見つけます。

### 必要なリソース
<a name="inquire-required-resources"></a>


| [リソース]  | カーディナリティ | プロファイル | 説明 | 
| --- | --- | --- | --- | 
| クレーム | 1 | PAS クレームの照会 | 照会する以前の認可 | 
| 患者 | 1 | PAS 受取人患者 | 患者の人口統計情報 | 
| 組織 (保険者) | 1 | PAS 保険会社組織 | 保険会社 | 
| 組織 (プロバイダー) | 1 | PAS リクエスト組織 | リクエストを送信した医療プロバイダー | 

### 重要な検索条件
<a name="inquire-search-criteria"></a>

HealthLake は、以下を使用して ClaimResponse を検索します。
+ クレームからの**患者リファレンス** 
+ クレームからの**保険者リファレンス** 
+ クレームからの**プロバイダーリファレンス** 
+ クレームから**作成日** (時間フィルターとして)

**患者固有のクエリのみ**  
すべての問い合わせは、特定の患者に関連付ける必要があります。患者識別を使用しないシステム全体のクエリは許可されません。

## リクエスト例
<a name="inquire-example-request"></a>

```
POST /datastore/example-datastore/r4/Claim/$inquire  
Content-Type: application/fhir+json  
Authorization: Bearer <your-token>  
  
{  
  "resourceType": "Bundle",  
  "id": "PASClaimInquiryBundleExample",  
  "meta": {  
    "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle"]  
  },  
  "identifier": {  
    "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
    "value": "5269368"  
  },  
  "type": "collection",  
  "timestamp": "2005-05-02T14:30:00+05:00",  
  "entry": [  
    {  
      "fullUrl": "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
      "resource": {  
        "resourceType": "Claim",  
        "id": "MedicalServicesAuthorizationExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry"]  
        },  
        "status": "active",  
        "type": {  
          "coding": [{  
            "system": "http://terminology.hl7.org/CodeSystem/claim-type",  
            "code": "professional"  
          }]  
        },  
        "use": "preauthorization",  
        "patient": {  
          "reference": "Patient/SubscriberExample"  
        },  
        "created": "2005-05-02T11:01:00+05:00",  
        "insurer": {  
          "reference": "Organization/InsurerExample"  
        },  
        "provider": {  
          "reference": "Organization/UMOExample"  
        }  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Patient/SubscriberExample",  
      "resource": {  
        "resourceType": "Patient",  
        "id": "SubscriberExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary"]  
        },  
        "name": [{  
          "family": "SMITH",  
          "given": ["JOE"]  
        }],  
        "gender": "male"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/UMOExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "UMOExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"]  
        },  
        "name": "Provider Organization"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/InsurerExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "InsurerExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"]  
        },  
        "name": "Insurance Company"  
      }  
    }  
  ]  
}
```

## レスポンスの形式
<a name="inquire-response-format"></a>

### 成功レスポンス (200 OK)
<a name="inquire-success-response"></a>

PAS Inquiry Response Bundle には、以下が含まれています。
+ 現在の認可ステータスの **ClaimResponse**。検索条件に一致する場合は複数の **ClaimResponse** 
+ リクエストのすべての元のリソース (エコーバック)
+ レスポンスがアセンブルされた時刻のタイムスタンプ

**考えられる ClaimResponse の結果**  



| 結果 | 説明 | 
| --- | --- | 
| queued | 承認リクエストはまだレビュー保留中です | 
| complete | 認可の決定が行われました (承認/拒否dispositionを確認してください) | 
| error | 処理中にエラーが発生しました | 
| partial | 部分的な認可が付与されました | 

```
{  
  "resourceType": "Bundle",  
  "identifier": {  
        "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
        "value": "5269367"  
  },  
  "type": "collection",  
  "timestamp": "2005-05-02T14:30:15+05:00",  
  "entry": [  
    {  
      "fullUrl": "http://example.org/fhir/ClaimResponse/InquiryResponseExample",  
      "resource": {  
        "resourceType": "ClaimResponse",  
        "id": "InquiryResponseExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse-inquiry"]  
        },  
        "status": "active",  
        "type": {  
          "coding": [{  
            "system": "http://terminology.hl7.org/CodeSystem/claim-type",  
            "code": "professional"  
          }]  
        },  
        "use": "preauthorization",  
        "patient": {  
          "reference": "Patient/SubscriberExample"  
        },  
        "created": "2005-05-02T11:05:00+05:00",  
        "insurer": {  
          "reference": "Organization/InsurerExample"  
        },  
        "request": {  
          "reference": "Claim/MedicalServicesAuthorizationExample"  
        },  
        "outcome": "complete",  
        "disposition": "Approved",  
        "preAuthRef": "AUTH12345"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
      "resource": {  
        "resourceType": "Claim",  
        "id": "MedicalServicesAuthorizationExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry"]  
        },  
        "status": "active",  
        "type": {  
          "coding": [{  
            "system": "http://terminology.hl7.org/CodeSystem/claim-type",  
            "code": "professional"  
          }]  
        },  
        "use": "preauthorization",  
        "patient": {  
          "reference": "Patient/SubscriberExample"  
        },  
        "created": "2005-05-02T11:01:00+05:00",  
        "insurer": {  
          "reference": "Organization/InsurerExample"  
        },  
        "provider": {  
          "reference": "Organization/UMOExample"  
        }  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Patient/SubscriberExample",  
      "resource": {  
        "resourceType": "Patient",  
        "id": "SubscriberExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary"]  
        },  
        "name": [{  
          "family": "SMITH",  
          "given": ["JOE"]  
        }],  
        "gender": "male"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/UMOExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "UMOExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"]  
        },  
        "name": "Provider Organization"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/InsurerExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "InsurerExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"]  
        },  
        "name": "Insurance Company"  
      }  
    }  
  ]  
}
```

## エラーレスポンス
<a name="inquire-error-responses"></a>

### 400 Bad Request
<a name="inquire-400-error"></a>

リクエスト形式が無効であるか、検証が失敗した場合に返されます。

```
{  
    "resourceType": "OperationOutcome",  
    "issue": [  
        {  
            "severity": "error",  
            "code": "required",  
            "diagnostics": "Reference 'Patient/SubscriberExample' at path 'patient' for 'CLAIM' resource not found(at Bundle.entry[0].resource)"  
        }  
    ]  
}
```

### 401 Unauthorized
<a name="inquire-401-error"></a>

認証情報がないか無効である場合に返されます。

```
{  
    "resourceType": "OperationOutcome",  
    "issue": [  
        {  
            "severity": "error",  
            "code": "forbidden",  
            "diagnostics": "Invalid authorization header"  
        }  
    ]  
}
```

### 403 Forbidden
<a name="inquire-403-error"></a>

認証されたユーザーに、リクエストされたリソースへのアクセス許可がない場合に返されます。

```
{  
    "resourceType": "OperationOutcome",  
    "issue": [  
        {  
            "severity": "error",  
            "code": "exception",  
            "diagnostics": "Insufficient SMART scope permissions."  
        }  
    ]  
}
```

### 400 見つからない場合
<a name="inquire-400-none-found"></a>

問い合わせに一致する ClaimResponse が見つからない場合に返されます。

```
{  
  "resourceType": "OperationOutcome",
  "issue": [{
    "severity": "error",
    "code": "not-found",
    "diagnostics": "Resource not found. No ClaimResponse found from the input Claim that matches the specified Claim properties patient, insurer, provider, and created(at Bundle.entry[0].resource)"
  }]
}
```

### 415 サポートされていないメディアタイプ
<a name="inquire-415-error"></a>

Content-Type ヘッダーが application/fhir\$1json でない場合に返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "value",  
    "diagnostics": "Incorrect MIME-type. Update request Content-Type header."  
  }]  
}
```

### 429 Too Many Requests
<a name="inquire-429-error"></a>

レート制限を超えたときに返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "throttled",  
    "diagnostics": "Rate limit exceeded. Please retry after some time."  
  }]  
}
```

## 検証ルール
<a name="inquire-validation-rules"></a>

HealthLake は、問い合わせに対して包括的な検証を実行します。

### バンドルの検証
<a name="inquire-bundle-validation"></a>
+ PAS 照会リクエストバンドルプロファイルに準拠する必要があります
+ `Bundle.type` は である必要があります `"collection"`
+ クレームリソースを 1 つだけ含める必要があります
+ 参照されるすべてのリソースをバンドルに含める必要があります

### クレームの検証
<a name="inquire-claim-validation"></a>
+ PAS クレーム照会プロファイルに準拠する必要があります
+ `Claim.use` は である必要があります `"preauthorization"`
+ `Claim.status` は である必要があります `"active"`
+ 必須フィールド: `patient`、`insurer`、`provider`、 `created`

### リソースの検証
<a name="inquire-resource-validation"></a>
+ すべてのリソースは、それぞれの PAS 問い合わせプロファイルに準拠する必要があります
+ 必要なサポートリソースが存在する必要があります (「」、「保険組織」、「プロバイダー組織」)
+ クロスリファレンスは、バンドル内で有効で解決可能である必要があります

## パフォーマンス仕様
<a name="inquire-performance-specs"></a>


| メトリクス |  の仕様 | 
| --- | --- | 
| リソース数の制限 | バンドルあたり 500 リソース | 
| バンドルサイズ制限 | 最大 5 MB | 

## 必要なアクセス許可
<a name="inquire-required-permissions"></a>

`$inquire` オペレーションを使用するには、IAM ロールに次のものがあることを確認します。
+ `healthlake:InquirePreAuthClaim` - オペレーションを呼び出すには

**FHIR スコープでの SMART**  
**最低限必要なスコープ:**
+ **SMART v1**: `user/ClaimResponse.read`
+ **SMART v2**: `user/ClaimResponse.s`

## 重要な実装上の注意事項
<a name="inquire-implementation-notes"></a>

### 検索動作
<a name="inquire-search-behavior"></a>

問い合わせを送信すると、HealthLake は以下を使用して ClaimResponse を検索します。
+ 入力クレームからの**患者リファレンス** 
+ 入力クレームからの**保険者リファレンス** 
+ 入力クレームからの**プロバイダーリファレンス** 
+ 入力クレームから**作成日** (タイムフィルターとして)

**複数の一致**: 複数の ClaimResponses が検索条件に一致する場合、HealthLake は一致するすべての結果を返します。最新の`ClaimResponse.created`ステータスを特定するには、最新のタイムスタンプを使用する必要があります。

### クレームの更新
<a name="inquire-updated-claims"></a>

同じ事前承認 (クレーム v1.1、v1.2、v1.3 など) に複数の更新を送信した場合、`$inquire`オペレーションは提供された検索条件に基づいて**最新バージョン**に関連付けられた ClaimResponse を取得します。

### 読み取り専用オペレーション
<a name="inquire-read-only"></a>

`$inquire` オペレーション:
+ 既存の認可ステータス****を取得します
+ 最新の ClaimResponse ****を返します
+ リソースを変更または更新**しない** 
+ 新しいリソースを作成し**ない** 
+ 新しい認可処理**をトリガーしない** 

## ワークフローの例
<a name="inquire-workflow-example"></a>

**一般的な事前認可照会ワークフロー**  


```
1. Provider submits PA request  
   POST /Claim/$submit  
   → Returns ClaimResponse with outcome="queued"  
  
2. Payer reviews request (asynchronous)  
   → Updates ClaimResponse status internally  
  
3. Provider checks status  
   POST /Claim/$inquire  
   → Returns ClaimResponse with outcome="queued" (still pending)  
  
4. Provider checks status again later  
   POST /Claim/$inquire  
   → Returns ClaimResponse with outcome="complete", disposition="Approved"
```

## 関連の オペレーション
<a name="inquire-related-operations"></a>
+ `Claim/$submit` - 新しい事前承認リクエストを送信するか、既存の承認リクエストを更新します。
+ `Patient/$everything` - 事前認可コンテキストの包括的な患者データを取得する

# を使用した概念の詳細の取得 `$lookup`
<a name="reference-fhir-operations-lookup"></a>

AWS HealthLake は CodeSystem リソースの `$lookup`オペレーションをサポートするようになりました。これにより、コードなどの識別情報を提供することで、コードシステム内の特定の概念に関する詳細を取得できます。このオペレーションは、以下が必要な場合に特に役立ちます。
+ 特定の医療コードに関する詳細情報を取得する
+ コードの意味とプロパティを検証する
+ アクセス概念の定義と関係
+ 正確な用語データで臨床上の意思決定をサポートする

## 使用方法
<a name="lookup-usage"></a>

`$lookup` オペレーションは、GET メソッドと POST メソッドの両方を使用して CodeSystem リソースで呼び出すことができます。

**サポートされているオペレーション**  


```
GET [base]/CodeSystem/$lookup?system=http://snomed.info/sct&code=73211009&version=20230901
POST [base]/CodeSystem/$lookup
```

## サポートされているパラメータ
<a name="lookup-parameters"></a>

HealthLake は、FHIR R4 `$lookup`パラメータのサブセットをサポートしています。


| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| code | コード | はい | 検索する概念コード (SNOMED CT の「71620000」など) | 
| system | uri | はい | コードシステムの正規 URL (「[http://snomed.info/sct](http://snomed.info/sct)」など) | 
| version | string | 不可 | コードシステムの特定のバージョン | 

## 例
<a name="lookup-examples"></a>

**GET リクエスト**  


```
GET [base]/CodeSystem/$lookup?system=http://snomed.info/sct&code=71620000&version=2023-09
```

**POST リクエスト**  


```
POST [base]/CodeSystem/$lookup
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "system",
      "valueUri": "http://snomed.info/sct"
    },
    {
      "name": "code",
      "valueCode": "71620000"
    },
    {
      "name": "version",
      "valueString": "2023-09"
    }
  ]
}
```

**レスポンス例**  
オペレーションは、概念の詳細を含む Parameters リソースを返します。

```
{
    "resourceType": "Parameters",
    "parameter": [{
            "name": "name",
            "valueString": "SNOMED CT Fractures"
        },
        {
            "name": "version",
            "valueString": "2023-09"
        },
        {
            "name": "display",
            "valueString": "Fracture of femur"
        },
        {
            "name": "property",
            "part": [{
                    "name": "code",
                    "valueCode": "child"
                },
                {
                    "name": "value",
                    "valueCode": "263225007"
                },
                {
                    "name": "description",
                    "valueString": "Fracture of neck of femur"
                }
            ]
        },
        {
            "name": "property",
            "part": [{
                    "name": "code",
                    "valueCode": "child"
                },
                {
                    "name": "value",
                    "valueCode": "263227004"
                },
                {
                    "name": "description",
                    "valueString": "Fracture of shaft of femur"
                }
            ]
        }
    ]
}
```

## レスポンスパラメータ
<a name="lookup-response-parameters"></a>

レスポンスには、使用可能な場合、次のパラメータが含まれます。


| パラメータ | Type | 説明 | 
| --- | --- | --- | 
| name | string | コードシステムの名前 | 
| version | string | コードシステムのバージョン | 
| display | string | 概念の表示名 | 
| designation | BackboneElement | この概念の追加表現。 | 
| property | BackboneElement | 概念の追加プロパティ (定義、関係など) | 

## 行動
<a name="lookup-behavior"></a>

`$lookup` オペレーション:

1. 必要なパラメータを検証します (`code` および `system`)

1. データストアに保存されている指定されたコードシステム内の概念を検索します。

1. 表示名、指定、プロパティなど、詳細な概念情報を返します。

1. `version` パラメータが指定されている場合のバージョン固有のルックアップをサポート

1. HealthLake データストアに明示的に保存されているコードシステムでのみ動作します

## エラー処理
<a name="lookup-error-handling"></a>

オペレーションは、次のエラー条件を処理します。
+ 400 不正なリクエスト: 無効な`$lookup`オペレーション (非準拠のリクエストまたは必須パラメータの欠落)
+ 404 Not Found: コードシステムが見つからないか、指定されたコードシステムでコードが見つかりません

## 注意
<a name="lookup-caveats"></a>

このリリースでは、以下はサポートされていません。
+ `$lookup` 外部用語サーバーを呼び出して オペレーションを実行する
+ `$lookup` HealthLake によって管理されているが、データストアに明示的に保存されていない CodeSystems での オペレーション

`$lookup` オペレーション仕様の詳細については、[FHIR R4 CodeSystem `$lookup`](https://www.hl7.org/fhir/R4/codesystem-operation-lookup.html) ドキュメントを参照してください。

# `$member-add` HealthLake の オペレーション
<a name="reference-fhir-operations-member-add"></a>

FHIR `$member-add`オペレーションは、メンバー (患者) をグループリソース、特にメンバー属性リストに追加します。このオペレーションは DaVinci メンバー属性実装ガイドの一部であり、メンバー属性を管理するための調整プロセスをサポートしています。

## オペレーションエンドポイント
<a name="member-add-endpoint"></a>

```
POST [base]/datastore/{datastoreId}/r4/Group/{groupId}/$member-add
Content-Type: application/json
```

## パラメータ
<a name="member-add-parameters"></a>

オペレーションは、次のパラメータの組み合わせを持つ FHIR Parameters リソースを受け入れます。

### パラメータオプション
<a name="member-add-parameter-options"></a>

次のいずれかのパラメータの組み合わせを使用できます。

オプション 1: メンバー ID \$1 プロバイダー NPI  
`memberId` \$1 `providerNpi`  
`memberId` \$1 `providerNpi` \$1 `attributionPeriod`

オプション 2: 患者リファレンス \$1 プロバイダーリファレンス  
`patientReference` \$1 `providerReference`  
`patientReference` \$1 `providerReference` \$1 `attributionPeriod`

### パラメータの詳細
<a name="member-add-parameter-details"></a>

memberId (オプション)  
グループに追加するメンバーの識別子。  
タイプ: Identifier  
システム: 患者識別子システム  

```
{
  "name": "memberId",
  "valueIdentifier": {
    "system": "http://example.org/patient-id",
    "value": "patient-new"
  }
}
```

providerNpi (オプション)  
属性プロバイダーの国民プロバイダー識別子 (NPI)。  
タイプ: Identifier  
システム: http://terminology.hl7.org/CodeSystem/NPI  

```
{
  "name": "providerNpi",
  "valueIdentifier": {
    "system": "http://terminology.hl7.org/CodeSystem/NPI",
    "value": "1234567890"
  }
}
```

patientReference (オプション)  
追加する患者リソースへの直接参照。  
タイプ: リファレンス  

```
{
  "name": "patientReference",
  "valueReference": {
    "reference": "Patient/patient-123"
  }
}
```

providerReference (オプション)  
プロバイダーリソースへの直接参照。  
タイプ: リファレンス  

```
{
  "name": "providerReference",
  "valueReference": {
    "reference": "Practitioner/provider-456"
  }
}
```

attributionPeriod (オプション)  
患者がプロバイダーに属している期間。  
タイプ: Period  

```
{
  "name": "attributionPeriod",
  "valuePeriod": {
    "start": "2024-07-15",
    "end": "2025-07-14"
  }
}
```

## リクエストの例
<a name="member-add-examples"></a>

### メンバー ID とプロバイダー NPI の使用
<a name="member-add-example-id-npi"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "memberId",
      "valueIdentifier": {
        "system": "http://example.org/patient-id",
        "value": "patient-new"
      }
    },
    {
      "name": "providerNpi",
      "valueIdentifier": {
        "system": "http://terminology.hl7.org/CodeSystem/NPI",
        "value": "1234567890"
      }
    },
    {
      "name": "attributionPeriod",
      "valuePeriod": {
        "start": "2024-07-15",
        "end": "2025-07-14"
      }
    }
  ]
}
```

### 患者とプロバイダーのリファレンスの使用
<a name="member-add-example-references"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/patient-123"
      }
    },
    {
      "name": "providerReference",
      "valueReference": {
        "reference": "Practitioner/provider-456"
      }
    },
    {
      "name": "attributionPeriod",
      "valuePeriod": {
        "start": "2024-07-15",
        "end": "2025-07-14"
      }
    }
  ]
}
```

## レスポンスの形式
<a name="member-add-response"></a>

### 追加応答の成功
<a name="member-add-success-response"></a>

```
HTTP Status: 200 OK
Content-Type: application/fhir+json

{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "success",
      "code": "informational",
      "details": {
        "text": "Member Patient/patient-new successfully added to the Member Attribution List."
      }
    }
  ]
}
```

### エラーレスポンス
<a name="member-add-error-responses"></a>

無効なリクエスト構文  
HTTP ステータス: 400 Bad Request  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "invalid",
      "details": {
        "text": "Invalid parameter combination provided"
      }
    }
  ]
}
```

リソースが見つかりません  
HTTP ステータス: 404 Not Found  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-found",
      "details": {
        "text": "Resource not found."
      }
    }
  ]
}
```

バージョンの競合  
HTTP ステータス: 409 競合  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "conflict",
      "details": {
        "text": "Resource version conflict detected"
      }
    }
  ]
}
```

無効な属性ステータス  
HTTP ステータス: 422 Unprocessable Entity  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "business-rule",
      "details": {
        "text": "Cannot add member to Attribution List with status 'final'. Status must be 'draft' or 'open'."
      }
    }
  ]
}
```

## ビジネスルール
<a name="member-add-business-rules"></a>

属性ステータスの検証  
オペレーションは、グループの属性ステータスが次の場合にのみ実行できます。  
+ `draft`
+ `open`
ステータスが の場合、オペレーションは許可されません`final`。

重複メンバーの防止  
システムは、次の一意の組み合わせに基づいて重複したメンバーを追加することを防ぎます。  
+ メンバー識別子
+ 支払者識別子
+ カバレッジ識別子

カバレッジ期間の検証  
`attributionPeriod` を指定する場合、メンバーのカバレッジ期間の範囲内にある必要があります。システムは以下を行います。  
+ メンバーのカバレッジリソースを検索する
+ 複数の が存在する場合は、最新のカバレッジ (最高の versionId) を使用する
+ 属性期間がカバレッジ期間を超えないことを確認する

リファレンスの検証  
ID と参照の両方が同じリソース (患者またはプロバイダー) に提供されると、システムはそれらが同じリソースに対応していることを検証します。  
ID フィールドと reference.identifier フィールドの両方が同じリソース (患者またはプロバイダー) に提供されると、エラーがスローされます。

## 認証と認可
<a name="member-add-auth"></a>

オペレーションでは、以下に対して SMART on FHIR 認可が必要です。
+ 読み取りアクセス許可 - 患者、プロバイダー、およびグループのリソースを検証するには
+ 検索アクセス許可 - 識別子でリソースを検索するには
+ アクセス許可を更新する - グループリソースを変更するには

## 運用上の動作
<a name="member-add-behavior"></a>

リソースの更新  
+ グループリソースバージョン ID を更新します。
+ オペレーションの前に、元のリソース状態の履歴エントリを作成します。
+ 以下を使用して Group.member 配列にメンバー情報を追加します。
  + entity.reference での患者リファレンス
  + 期間の属性期間
  + 拡張フィールドのカバレッジとプロバイダー情報

検証ステップ  
+ パラメータの検証 - 有効なパラメータの組み合わせを確認します
+ リソースの存在 - 患者、プロバイダー、グループリソースが存在することを検証します
+ 属性ステータス - グループステータスが変更を許可することを確認します
+ 重複チェック - 既存のメンバーの追加を防止
+ カバレッジ検証 - アトリビューション期間がカバレッジ範囲内であることを確認します

## 制限事項
<a name="member-add-limitations"></a>
+ 参照されるすべてのリソースは、同じデータストア内に存在する必要があります
+ オペレーションはメンバー属性リストグループのリソースでのみ機能します
+ アトリビューション期間はカバレッジ範囲内である必要があります
+ 「最終」ステータスのグループは変更できません

# `$member-match` HealthLake の オペレーション
<a name="reference-fhir-operations-member-match"></a>

AWS HealthLake は、患者リソースの `$member-match`オペレーションをサポートするようになりました。これにより、医療組織は人口統計情報とカバレッジ情報を使用して、さまざまな医療システム全体でメンバーの一意の識別子を見つけることができます。このオペレーションは、CMS コンプライアンスを達成し、患者のプライバシーを維持しながらpayer-to-payerデータ交換を促進するために不可欠です。

このオペレーションは、以下が必要な場合に特に役立ちます。
+ 組織間の安全な医療データ交換を有効にする
+ さまざまなシステムにわたる患者のケアの継続性を維持する
+ CMS コンプライアンス要件のサポート
+ 医療ネットワーク全体で正確なメンバー識別を容易にする

## 使用方法
<a name="member-match-usage"></a>

`$member-match` オペレーションは、POST メソッドを使用して患者リソースで呼び出すことができます。

```
POST [base]/Patient/$member-match
```

## サポートされているパラメータ
<a name="member-match-parameters"></a>

HealthLake は、次の FHIR `$member-match`パラメータをサポートしています。


| パラメータ | タイプ | [Required] (必須) | デフォルト | 説明  | 
| --- | --- | --- | --- | --- | 
| MemberPatient | 患者 | はい | — | 一致するメンバーの属性情報を含む患者リソース | 
| CoverageToMatch | カバレッジ | はい | — | 既存のレコードとの照合に使用されるカバレッジリソース | 
| CoverageToLink | カバレッジ | 不可 | — | マッチングプロセス中にリンクされるカバレッジリソース | 
| 同意 | 同意 | 不可 | — | 認可のための同意リソース | 

## 例
<a name="member-match-examples"></a>

### パラメータを使用した POST リクエスト
<a name="member-match-request-example"></a>

```
POST [base]/Patient/$member-match
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "MemberPatient",
      "resource": {
        "resourceType": "Patient",
        "name": [
          {
            "family": "Jones",
            "given": ["Sarah"]
          }
        ],
        "gender": "female",
        "birthDate": "1985-05-15"
      }
    },
    {
      "name": "CoverageToMatch",
      "resource": {
        "resourceType": "Coverage",
        "status": "active",
        "beneficiary": {
          "reference": "Patient/1"
        },
        "relationship": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
              "code": "self",
              "display": "Self"
            }
          ]
        },
        "payor": [
          {
            "reference": "Organization/payer456"
          }
        ]
      }
    },
    {
      "name": "Consent",
      "resource": {
        "resourceType": "Consent",
        "status": "active",
        "scope": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/consentscope",
              "code": "patient-privacy"
            }
          ]
        },
        "category": [
          {
            "coding": [
              {
                "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
                "code": "IDSCL"
              }
            ]
          }
        ],
        "patient": {
          "reference": "Patient/1"
        },
        "performer": [
          {
            "reference": "Patient/patient123"
          }
        ],
        "sourceReference": {
          "reference": "Document/someconsent"
        },
        "policy": [
          {
            "uri": "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular"
          }
        ]
      }
    }
  ]
}
```

### レスポンス例
<a name="member-match-response-example"></a>

オペレーションは、一致する結果を含む Parameters リソースを返します。

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "MemberIdentifier",
      "valueIdentifier": {
        "system": "http://hospital.org/medical-record-number",
        "value": "MRN-123456"
      }
    },
    {
      "name": "MemberId",
      "valueReference": {
        "reference": "Patient/patient123"
      }
    },
    {
      "name": "matchAlgorithm",
      "valueString": "DEMOGRAPHIC_MATCH"
    },
    {
      "name": "matchDetails",
      "valueString": "Demographic match: DOB + Name"
    },
    {
      "name": "matchedFields",
      "valueString": "given,birthdate,gender,family"
    }
  ]
}
```

## レスポンスパラメータ
<a name="member-match-response-parameters"></a>

一致が見つかった場合、レスポンスには次のパラメータが含まれます。


| パラメータ | Type | 説明 | 
| --- | --- | --- | 
| MemberIdentifier | 識別子 | 一致したメンバーの一意の識別子 | 
| MemberId | リファレンス | 患者リソースへの参照 | 
| matchAlgorithm | String | 使用される一致アルゴリズムのタイプ (EXACT\$1MATCH、STRONG\$1MATCH、または DEMOGRAPHIC\$1MATCH) | 
| matchDetails | String | マッチングプロセスに関する詳細情報 | 
| matchedFields | String | 正常に一致した特定のフィールドのリスト | 

## 一致するアルゴリズム
<a name="member-match-algorithms"></a>

`$member-match` API は、正確なメンバー識別を確保するために、多層マッチングアプローチを採用しています。

EXACT\$1MATCH  
Coverage SubscriberId と組み合わせて患者識別子を使用します  
メンバーマッチングの最高信頼度を提供します

STRONG\$1MATCH  
最小カバレッジ情報で患者識別子を使用します  
完全一致基準が満たされない場合に高い信頼性を提供します

DEMOGRAPHIC\$1MATCH  
基本的な属性情報に依存する  
識別子ベースのマッチングができない場合に使用されます。

## 行動
<a name="member-match-behavior"></a>

`$member-match` オペレーション:
+ 患者属性、カバレッジの詳細、およびオプションの同意情報を入力として受け入れます
+ 後続のインタラクションに使用できる一意のメンバー識別子を返します。
+ 多層マッチング (完全、強力、属性) を実装し、さまざまな医療システム全体で正確なメンバー識別を確保します
+ 将来の認可のために提供された同意情報を保存します
+ 患者のプライバシーを維持しながら、安全なpayer-to-payerデータ交換をサポート
+ 医療データ交換の CMS 要件に準拠

## Authorization
<a name="member-match-authorization"></a>

API は、以下の必要なスコープで SMART on FHIR 認可プロトコルを使用します。
+ `system/Patient.read`
+ `system/Coverage.read`
+ `system/Organization.read` (条件付き)
+ `system/Practitioner.read` (条件付き)
+ `system/PractitionerRole.read` (条件付き)
+ `system/Consent.write` (条件付き)

## エラー処理
<a name="member-match-error-handling"></a>

オペレーションは、次のエラー条件を処理します。
+ `400 Bad Request`: 無効な`$member-match`オペレーション (非準拠のリクエストまたは必須パラメータの欠落)
+ `422 Unprocessable Entity`: 一致する または複数の一致する が見つかりません

# `$member-remove` HealthLake の オペレーション
<a name="reference-fhir-operations-member-remove"></a>

`$member-remove` オペレーションでは、FHIR メンバー属性リスト (グループリソース) からメンバーを削除できます AWS HealthLake。このオペレーションは DaVinci メンバー属性実装ガイドの一部であり、メンバー属性を管理するための調整プロセスをサポートしています。

## 前提条件
<a name="member-remove-prerequisites"></a>
+ AWS HealthLake FHIR データストア
+ HealthLake オペレーションの適切な IAM アクセス許可
+ ドラフトステータスまたはオープンステータスのメンバー属性リスト (グループリソース)

## オペレーションの詳細
<a name="member-remove-endpoint"></a>

Endpoint  
`POST /Group/{id}/$member-remove`

コンテンツタイプ  
`application/fhir+json`

## パラメータ
<a name="member-remove-parameters"></a>

オペレーションは、以下のオプションパラメータを持つ FHIR Parameters リソースを受け入れます。


| パラメータ | カーディナリティ | 型 | 説明 | 
| --- | --- | --- | --- | 
| memberId | 0..1 | 識別子 | 削除するメンバーのビジネス識別子 | 
| providerNpi | 0..1 | 識別子 | 属性プロバイダーの NPI | 
| patientReference | 0..1 | リファレンス | 患者リソースへの直接参照 | 
| providerReference | 0..1 | リファレンス | プロバイダーリソース (Practitioner、PractitionerRole、または Organization) への直接参照 | 
| coverageReference | 0..1 | リファレンス | カバレッジリソースへの参照 | 

### サポートされているパラメータの組み合わせ
<a name="member-remove-parameter-combinations"></a>

以下のパラメータの組み合わせがサポートされています。
+ `memberId` only - 指定されたメンバーのすべての属性を削除します
+ `memberId` \$1 `providerNpi` - 特定のメンバーとプロバイダーの組み合わせの属性を削除します
+ `patientReference` のみ - 指定された患者のすべての属性を削除します
+ `patientReference` \$1 `providerReference` - 特定の患者とプロバイダーの組み合わせの属性を削除します
+ `patientReference` \$1 `providerReference` \$1 `coverageReference` - 患者、プロバイダー、カバレッジに基づいて特定の属性を削除します

## リクエストの例
<a name="member-remove-examples"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/12345"
      }
    },
    {
      "name": "providerReference",
      "valueReference": {
        "reference": "Practitioner/67890"
      }
    }
  ]
}
```

## 応答
<a name="member-remove-response"></a>

### 成功したレスポンス
<a name="member-remove-success-response"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "result",
      "valueBoolean": true
    },
    {
      "name": "effectiveDate",
      "valueDate": "2024-06-30"
    },
    {
      "name": "status",
      "valueCode": "inactive"
    },
    {
      "name": "message",
      "valueString": "Member successfully removed from attribution list"
    }
  ]
}
```

## 行動
<a name="member-remove-behavior"></a>

ステータス要件  
オペレーションは、ステータスが `draft`または の属性リストでのみ機能します。 `open`  
`final` ステータスが のリストは、422 エラーのオペレーションを拒否します。

メンバーの削除プロセス  
*ステータスリストのドラフト*: メンバーは非アクティブ (`inactive: true`) としてマークされ、`changeType`拡張機能は に更新されます `changed`  
*オープンステータスリスト*: ドラフトステータスと同様の動作  
*最終ステータスリスト*: オペレーションが拒否されました

検証  
リファレンスはHealthLake データストアに存在することを確認するために検証されます。  
識別子と参照の両方が同じリソースタイプに提供される場合、それらは同じリソースに対応する必要があります  
パラメータの組み合わせは、サポートされているパターンに従って検証されます。

## エラー処理
<a name="member-remove-error-handling"></a>

### 一般的なエラーレスポンス
<a name="member-remove-common-errors"></a>

リソースが見つかりません (404)  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-found",
      "details": {
        "text": "Patient with identifier 'http://example.org/fhir/identifiers|99999' not found in system"
      },
      "diagnostics": "Cannot remove member from attribution list. Verify patient identifier and try again.",
      "expression": ["memberId"]
    }
  ]
}
```

属性リストの最終ステータス (422)  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "business-rule",
      "details": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/davinci-atr/CodeSystem/atr-error-codes",
            "code": "list-final",
            "display": "Attribution list is final and cannot be modified"
          }
        ]
      },
      "diagnostics": "Cannot modify attribution list with status 'final'. List modifications are not permitted after finalization.",
      "expression": ["Group.status"]
    }
  ]
}
```

無効なオペレーション (400)  
パラメータの組み合わせが無効または形式が正しくない場合に返されます。

複数の一致が見つかりました (412)  
指定されたパラメータが属性リスト内の複数のメンバーと一致する場合に返されます。  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "processing",
      "diagnostics": "Multiple members found matching the criteria"
    }
  ]
}
```

## ベストプラクティス
<a name="member-remove-best-practices"></a>
+ *特定のパラメータを使用する*: 可能な場合は、最も具体的なパラメータの組み合わせを使用して、意図しない削除を回避します。
+ *リストステータスのチェック*: 削除を試みる前に属性リストのステータスを確認します
+ *エラーを適切に処理する*: 考えられるすべてのエラー条件に対して適切なエラー処理を実装する
+ *リファレンスの検証*: リクエストを行う前に、参照されるすべてのリソースが存在することを確認します。

# を使用した患者部門リソースの削除 `$purge`
<a name="reference-fhir-operations-purge"></a>

AWS HealthLake は `$purge`オペレーションをサポートし、患者の区画内のすべてのリソースを完全に削除できます。このオペレーションは、以下が必要な場合に特に役立ちます。
+ 患者に関連付けられているすべてのデータを削除する
+ 患者データの削除リクエストへの準拠
+ 患者データのライフサイクルを管理する
+ 包括的な患者レコードのクリーンアップを実行する

## 使用方法
<a name="purge-usage"></a>

`$purge` オペレーションは、患者リソースで呼び出すことができます。

```
POST [base]/Patient/[ID]/$purge?deleteAuditEvent=true
```

## パラメータ
<a name="purge-parameters"></a>


| パラメータ | タイプ | [Required] (必須) | デフォルト | 説明  | 
| --- | --- | --- | --- | --- | 
| deleteAuditEvent | boolean | 不可 | false | true の場合、関連する監査イベントを削除します | 
| \$1since | string | 不可 | データストアの作成時刻 | 入力すると、開始カットオフ時間を選択して、lastModified時間に基づいてリソースを検索します。開始または終了では使用できません | 
| start | string | 不可 | データストアの作成時刻 | 入力すると、カットオフ時間を選択して、lastModified時間に基づいてリソースを検索します。末尾で使用できます | 
| end | string | 不可 | ジョブの送信時間 | 入力すると、終了カットオフ時間を選択して、lastModified時間に基づいてリソースを検索します。 | 

## 例
<a name="purge-examples"></a>

**リクエストの例**  


```
POST [base]/Patient/example-patient/$purge?deleteAuditEvent=true
```

**レスポンスの例**  


```
{
  "resourceType": "OperationOutcome",
  "id": "purge-job",
  "issue": [
    {
      "severity": "information",
      "code": "informational",
      "diagnostics": "Purge job started successfully. Job ID: 12345678-1234-1234-1234-123456789012"
    }
  ]
}
```

## ジョブのステータス
<a name="purge-job-status"></a>

パージジョブのステータスを確認するには:

```
GET [base]/$purge/[jobId]
```

オペレーションはジョブステータス情報を返します。

```
{
      "datastoreId": "36622996b1fcecb7e12ee2ee085308d3",
      "jobId": "3dd1c7a5b6c0ef8c110f566eb87e2ef9",
      "status": "COMPLETED",
      "submittedTime": "2025-10-31T18:43:21.822Z"
    }
```

## 行動
<a name="purge-behavior"></a>

`$purge` オペレーション:

1. 複数のリソースを処理するために非同期的に処理する

1. データ整合性のために ACID トランザクションを維持します

1. リソース削除数を含むジョブステータスの追跡を提供します

1. 患者区画内のすべてのリソースを完全に削除します

1. 削除アクティビティの包括的な監査ログ記録が含まれます

1. 監査イベントの選択的な削除をサポート

## 監査ログ記録
<a name="purge-audit-logging"></a>

`$purge` オペレーションは、詳細なオペレーション情報を StartFHIRBulkDeleteJob および DescribeFHIRBulkDeleteJob としてログに記録します。

## 制限事項
<a name="purge-limitations"></a>
+ 消去されたリソースは検索レスポンスに表示されません
+ 消去されるリソースは、処理中に一時的にアクセスできない場合があります
+ 患者区画内のすべてのリソースが完全に削除されます

# HealthLake の FHIR `$questionnaire-package`オペレーション
<a name="reference-fhir-operations-questionnaire-package"></a>

`$questionnaire-package` オペレーションは、FHIR アンケートとそのアンケートのレンダリングと処理に必要なすべての依存関係を含む包括的なバンドルを取得します。このオペレーションでは、[Da Vinci ドキュメントテンプレートとルール (DTR) 実装ガイド](https://hl7.org/fhir/us/davinci-dtr/OperationDefinition-questionnaire-package.html)を実装し、ヘルスケアワークフローのドキュメント要件の動的フォームレンダリングを有効にします。

## 仕組み
<a name="questionnaire-package-how-it-works"></a>
+ **リクエスト**: カバレッジと注文コンテキストとともに、必要なアンケート (複数可) を識別するパラメータを送信します。
+ **取得**: HealthLake はアンケートとすべての依存関係 (ValueSets、CQL ライブラリなど) を収集します。
+ **パッケージ**: すべてのリソースは標準化された形式でバンドルされます
+ **応答**: レンダリングとデータ収集の準備ができた完全なパッケージが届きます。

**ユースケース**  

+ **事前認可ドキュメント**: 事前認可リクエストに必要な臨床情報を収集する
+ **カバレッジ要件**: 支払者カバレッジ要件を満たすために必要なドキュメントを収集する
+ **臨床データ交換**: 支払者に送信するための臨床データを構築する
+ **動的フォーム**: 事前入力された患者データと条件付きロジックを使用してアンケートをレンダリングする

## API エンドポイント
<a name="questionnaire-package-api-endpoint"></a>

```
POST /datastore/{datastoreId}/r4/Questionnaire/$questionnaire-package  
Content-Type: application/fhir+json
```

## リクエストパラメータ
<a name="questionnaire-package-request-parameters"></a>

### 入力パラメータ
<a name="questionnaire-package-input-parameters"></a>

リクエスト本文には、次のパラメータを含む FHIR Parameters リソースが含まれている必要があります。


| パラメータ | タイプ | カーディナリティ | 説明 | 
| --- | --- | --- | --- | 
| coverage | カバレッジ | 1..\$1 (必須) | ドキュメントのメンバーとカバレッジを確立するためのカバレッジリソース (複数可) | 
| questionnaire | canonical | 0..\$1 | 返す特定のアンケートの正規 URL (複数可) (バージョンを含む場合があります) | 
| order | [リソース]  | 0..\$1 | コンテキストを確立するためにリソース (DeviceRequest、ServiceRequest、MedicationRequest、Encounter、Appointment) を注文する | 
| changedSince | dateTime | 0..1 | 存在する場合、このタイムスタンプの後に変更されたリソースのみを返す | 

### パラメータ検証ルール
<a name="questionnaire-package-parameter-validation"></a>

**次のいずれかを指定する必要があります** (必須 に加えて`coverage`)。
+ 1 つ以上の`questionnaire`正規 URLs
+ 1 つ以上の`order`リソース

**有効なリクエストの組み合わせ:**  

+ `coverage` \$1 `questionnaire`
+ `coverage` \$1 `order`
+ `coverage` \$1 `questionnaire` \$1 `order`

## リクエスト例
<a name="questionnaire-package-example-request"></a>

```
POST /datastore/example-datastore/r4/Questionnaire/$questionnaire-package  
Content-Type: application/fhir+json  
Authorization: Bearer <your-token>  
  
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": {  
        "resourceType": "Coverage",  
        "id": "example-coverage",  
        "status": "active",  
        "beneficiary": {  
          "reference": "Patient/example-patient"  
        },  
        "payor": [{  
          "reference": "Organization/example-payer"  
        }],  
        "class": [{  
          "type": {  
            "coding": [{  
              "system": "http://terminology.hl7.org/CodeSystem/coverage-class",  
              "code": "group"  
            }]  
          },  
          "value": "12345"  
        }]  
      }  
    },  
    {  
      "name": "questionnaire",  
      "valueCanonical": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0"  
    },  
    {  
      "name": "order",  
      "resource": {  
        "resourceType": "ServiceRequest",  
        "id": "example-service-request",  
        "status": "active",  
        "intent": "order",  
        "code": {  
          "coding": [{  
            "system": "http://www.ama-assn.org/go/cpt",  
            "code": "94660",  
            "display": "Continuous positive airway pressure ventilation (CPAP)"  
          }]  
        },  
        "subject": {  
          "reference": "Patient/example-patient"  
        }  
      }  
    },  
    {  
      "name": "changedSince",  
      "valueDateTime": "2024-01-01T00:00:00Z"  
    }  
  ]  
}
```

## レスポンスの形式
<a name="questionnaire-package-response-format"></a>

### 成功レスポンス (200 OK)
<a name="questionnaire-package-success-response"></a>

オペレーションは、1 つ以上の**パッケージバンドル**を含む FHIR Parameters リソースを返します。各パッケージバンドルには以下が含まれます。


| エントリタイプ | カーディナリティ | 説明 | 
| --- | --- | --- | 
| アンケート | 1 | レンダリングするアンケート | 
| QuestionnaireResponse | 0..1 | 事前入力済みまたは部分的に完了したレスポンス (該当する場合) | 
| [Library] (ライブラリ) | 0..\$1 | 事前入力と条件付きロジックを含む CQL ライブラリ | 
| ValueSet | 0..\$1 | 拡張 ValueSets (<40 拡張の回答選択の場合) | 

**Example レスポンスの例**  

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "PackageBundle",  
      "resource": {  
        "resourceType": "Bundle",  
        "id": "questionnaire-package-example",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle"]  
        },  
        "type": "collection",  
        "timestamp": "2024-03-15T10:30:00Z",  
        "entry": [  
          {  
            "fullUrl": "http://example.org/fhir/Questionnaire/home-oxygen-therapy",  
            "resource": {  
              "resourceType": "Questionnaire",  
              "id": "home-oxygen-therapy",  
              "url": "http://example.org/fhir/Questionnaire/home-oxygen-therapy",  
              "version": "2.0",  
              "status": "active",  
              "title": "Home Oxygen Therapy Documentation",  
              "item": [  
                {  
                  "linkId": "1",  
                  "text": "Patient diagnosis",  
                  "type": "choice",  
                  "answerValueSet": "http://example.org/fhir/ValueSet/oxygen-diagnoses"  
                }  
              ]  
            }  
          },  
          {  
            "fullUrl": "http://example.org/fhir/Library/oxygen-prepopulation",  
            "resource": {  
              "resourceType": "Library",  
              "id": "oxygen-prepopulation",  
              "url": "http://example.org/fhir/Library/oxygen-prepopulation",  
              "version": "1.0",  
              "type": {  
                "coding": [{  
                  "system": "http://terminology.hl7.org/CodeSystem/library-type",  
                  "code": "logic-library"  
                }]  
              },  
              "content": [{  
                "contentType": "text/cql",  
                "data": "bGlicmFyeSBPeHlnZW5QcmVwb3B1bGF0aW9u..."  
              }]  
            }  
          },  
          {  
            "fullUrl": "http://example.org/fhir/ValueSet/oxygen-diagnoses",  
            "resource": {  
              "resourceType": "ValueSet",  
              "id": "oxygen-diagnoses",  
              "url": "http://example.org/fhir/ValueSet/oxygen-diagnoses",  
              "status": "active",  
              "expansion": {  
                "timestamp": "2024-03-15T10:30:00Z",  
                "contains": [  
                  {  
                    "system": "http://hl7.org/fhir/sid/icd-10",  
                    "code": "J44.0",  
                    "display": "COPD with acute lower respiratory infection"  
                  },  
                  {  
                    "system": "http://hl7.org/fhir/sid/icd-10",  
                    "code": "J96.01",  
                    "display": "Acute respiratory failure with hypoxia"  
                  }  
                ]  
              }  
            }  
          },  
          {  
            "fullUrl": "http://example.org/fhir/QuestionnaireResponse/example-prepopulated",  
            "resource": {  
              "resourceType": "QuestionnaireResponse",  
              "id": "example-prepopulated",  
              "questionnaire": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0",  
              "status": "in-progress",  
              "subject": {  
                "reference": "Patient/example-patient"  
              },  
              "basedOn": [{  
                "reference": "ServiceRequest/example-service-request"  
              }],  
              "item": [  
                {  
                  "linkId": "1",  
                  "text": "Patient diagnosis",  
                  "answer": [{  
                    "valueCoding": {  
                      "system": "http://hl7.org/fhir/sid/icd-10",  
                      "code": "J44.0",  
                      "display": "COPD with acute lower respiratory infection"  
                    }  
                  }]  
                }  
              ]  
            }  
          }  
        ]  
      }  
    },  
    {  
      "name": "Outcome",  
      "resource": {  
        "resourceType": "OperationOutcome",  
        "issue": [{  
          "severity": "information",  
          "code": "informational",  
          "details": {  
            "text": "Successfully retrieved questionnaire package"  
          }  
        }]  
      }  
    }  
  ]  
}
```

## オペレーションワークフロー
<a name="questionnaire-package-operation-workflow"></a>

**HealthLake がリクエストを処理する方法**  
を呼び出すと`$questionnaire-package`、HealthLake は次のステップを実行します。

1. **患者と支払い者を特定する**: `coverage`パラメータから患者と保険組織を抽出します。

1. **適切なアンケートを見つけます**。
   + ** パラメータ****の場合**`questionnaire`: 指定した正規 URL を使用します
   + ** パラメータ****付き**`order`: 注文コード (CPT/HCPCS/LOINC) と支払者を照合して、適切なアンケートを見つけます

1. **依存関係の収集**: アンケートのレンダリングに必要なすべてを自動的に取得します。
   + **CQL ライブラリ** - 事前入力と条件付き質問のロジック
   + **ValueSets** - 選択肢への回答 (<40 オプションの場合は自動的に展開)
   + **QuestionnaireResponse** - 進行中の既存のレスポンスまたは完了したレスポンス

1. **すべてをまとめてパッケージ**化:
   + すべてのリソースをバンドルします (各リソースは 1 回のみ含まれます)
   + 指定した場合の`changedSince`タイムスタンプによるフィルタリング
   + `Outcome` リソースがない場合に警告を に追加します

**結果**: レンダリング可能な完全で自己完結型のパッケージ。

## エラーレスポンス
<a name="questionnaire-package-error-responses"></a>

### 400 Bad Request
<a name="questionnaire-package-400-error"></a>

リクエストの検証が失敗したときに返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "required",  
    "details": {  
      "text": "At least one of 'questionnaire' or 'order' must be provided along with 'coverage'"  
    }  
  }]  
}
```

### 424 失敗した依存関係
<a name="questionnaire-package-424-error"></a>

依存リソースを取得できない場合に返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "warning",  
    "code": "not-found",  
    "details": {  
      "text": "Referenced Library 'http://example.org/fhir/Library/missing-library' could not be retrieved"  
    }  
  }]  
}
```

### 401 Unauthorized
<a name="questionnaire-package-401-error"></a>

認証情報がないか無効である場合に返されます。

### 403 Forbidden
<a name="questionnaire-package-403-error"></a>

認証されたユーザーに、リクエストされたリソースへのアクセス許可がない場合に返されます。

### 406 使用できません
<a name="questionnaire-package-406-error"></a>

リクエストされたコンテンツタイプを指定できない場合に返されます。

### 409 Conflict
<a name="questionnaire-package-409-error"></a>

バージョンまたは同時実行の競合がある場合に返されます。

### 410 終了
<a name="questionnaire-package-410-error"></a>

リクエストされたリソースが完全に削除されたときに返されます。

### 429 Too Many Requests
<a name="questionnaire-package-429-error"></a>

レート制限を超えたときに返されます。

### 500 Internal Server Error
<a name="questionnaire-package-500-error"></a>

予期しないサーバーエラーが発生した場合に返されます。

### 501 未実装
<a name="questionnaire-package-501-error"></a>

リクエストされたオペレーションがまだ実装されていない場合に返されます。

## 検証ルール
<a name="questionnaire-package-validation-rules"></a>

### 入力の検証
<a name="questionnaire-package-input-validation"></a>
+ `coverage` パラメータ**は必須です** (1..\$1 基数)
+ 少なくとも 1 つの `questionnaire`または を指定`order`する必要があります
+ すべてのカバレッジリソースは有効な FHIR リソースである必要があります
+ すべての注文リソースは有効な FHIR リソースである必要があります
+ 正規 URLs適切にフォーマットする必要があります
+ `changedSince` は有効な ISO 8601 dateTime である必要があります

### QuestionnaireResponse の検証
<a name="questionnaire-package-response-validation"></a>
+ `status` は適切である必要があります (`in-progress`、`completed`、`amended`)
+ 構造は参照されるアンケートと一致する必要があります
+ `basedOn` は有効な注文リソースを参照する必要があります
+ `subject` は有効な患者リソースを参照する必要があります

### リソース重複排除
<a name="questionnaire-package-resource-dedup"></a>
+ 各リソースはバンドルに 1 回のみ表示されます。
+ 例外: 同じリソースの異なるバージョンの両方が含まれる場合があります
+ リソースは正規 URL とバージョンによって識別されます

## パフォーマンス仕様
<a name="questionnaire-package-performance-specs"></a>


| メトリクス |  の仕様 | 
| --- | --- | 
| リソース数の制限 | バンドルあたり 500 リソース | 
| バンドルサイズ制限 | 最大 5 MB | 

## 必要なアクセス許可
<a name="questionnaire-package-required-permissions"></a>

`$questionnaire-package` オペレーションを使用するには、IAM ロールに次のものがあることを確認します。
+ `healthlake:QuestionnairePackage` - オペレーションを呼び出すには
+ `healthlake:ReadResource` - アンケートと依存リソースを取得するには
+ `healthlake:SearchWithPost` - QuestionnaireResponse および関連リソースを検索するには

**FHIR スコープでの SMART**  
**最低限必要なスコープ:**
+ **SMART v1**: `user/Questionnaire.read user/Library.read user/ValueSet.read user/QuestionnaireResponse.read`
+ **SMART v2**: `user/Questionnaire.rs user/Library.rs user/ValueSet.rs user/QuestionnaireResponse.rs`

## 重要な実装上の注意事項
<a name="questionnaire-package-implementation-notes"></a>

### リソース取得戦略
<a name="questionnaire-package-retrieval-strategy"></a>

**アンケート識別の優先度:**  

+ **正規 URL** (`questionnaire`パラメータが指定されている場合) - 最高優先度
+ **注文分析** ( `order` パラメータが指定されている場合):
  + 注文コード (CPT、HCPCS、LOINC) を支払い医療ポリシーと照合する
  + カバレッジ支払者を使用して支払者固有のアンケートをフィルタリングする
  + 追加のコンテキストの理由コードを検討する

### 依存関係の解決
<a name="questionnaire-package-dependency-resolution"></a>

**CQL ライブラリ:**  

+ アンケートリソースの `cqf-library` 拡張機能を介して取得
+ 依存ライブラリを タイプ`Library.relatedArtifact`で再帰的に取得する `depends-on`
+ すべてのライブラリの依存関係がパッケージに含まれています

**ValueSets:**  

+ 40 未満の概念が含まれている場合、自動的に拡張されます
+ より大きな ValueSets は拡張なしで含まれます
+ アンケートリソースとライブラリリソースの両方で参照される ValueSets が含まれています

### QuestionnaireResponse の事前入力
<a name="questionnaire-package-prepopulation"></a>

オペレーションは、次の場合に事前入力されたデータを含む QuestionnaireResponse を返す場合があります。
+ 既存の進行中または完了したレスポンスが見つかった
+ 関連するライブラリの CQL ロジックは、患者レコードからデータを抽出できます
+ レスポンスが関連する注文とカバレッジにリンクされている

**QuestionnaireResponse の検索条件:**  



| 検索パラメータ | FHIR パス | 説明 | 
| --- | --- | --- | 
| based-on | QuestionnaireResponse.basedOn | ServiceRequest または CarePlan へのリンク | 
| patient | QuestionnaireResponse.subject | 対象である患者 | 
| questionnaire | QuestionnaireResponse.questionnaire | 回答中のアンケート | 

### 変更されたリソースのフィルタリング
<a name="questionnaire-package-changed-filtering"></a>

`changedSince` パラメータが指定されている場合:
+ 指定されたタイムスタンプ**後に**変更されたリソースのみが含まれます
+ リソースが変更されていない場合、 は空のパッケージ`200 OK`で を返します。
+ 増分更新とキャッシュ戦略に役立ちます
+ タイムスタンプ比較でリソース`meta.lastUpdated`フィールドを使用する

### 複数のパッケージバンドル
<a name="questionnaire-package-multiple-bundles"></a>

オペレーションは、次の場合に**複数のパッケージバンドル**を返す場合があります。
+ 正規 URLs
+ 複数の注文で異なるアンケートが必要
+ 同じアンケートの異なるバージョンが適用される

各パッケージバンドルは、必要なすべての依存関係を含む自己完結型です。

## 一般的なユースケース
<a name="questionnaire-package-common-use-cases"></a>

### ユースケース 1: 事前承認ドキュメント
<a name="questionnaire-package-use-case-1"></a>

**シナリオ**: プロバイダーは、住宅用人工鼻の事前認可に関するドキュメントを収集する必要があります。

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Patient's insurance coverage */ }  
    },  
    {  
      "name": "order",  
      "resource": {  
        "resourceType": "ServiceRequest",  
        "code": {  
          "coding": [{  
            "system": "http://www.ama-assn.org/go/cpt",  
            "code": "94660"  
          }]  
        }  
      }  
    }  
  ]  
}
```

**結果**: EHR から患者のバイタルと診断コードがあらかじめ入力されている、O2 度治療用アンケートを含むパッケージを返します。

### ユースケース 2: 特定のアンケートバージョンを取得する
<a name="questionnaire-package-use-case-2"></a>

**シナリオ**: コンプライアンスのためにプロバイダーに特定のバージョンのアンケートが必要です。

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Coverage resource */ }  
    },  
    {  
      "name": "questionnaire",  
      "valueCanonical": "http://example.org/fhir/Questionnaire/dme-request|3.1.0"  
    }  
  ]  
}
```

**結果**: すべての依存関係を持つ DME リクエストアンケートのバージョン 3.1.0 を正確に返します。

### ユースケース 3: 更新を確認する
<a name="questionnaire-package-use-case-3"></a>

**シナリオ**: プロバイダーは、前回の取得以降に更新されたアンケートリソースがあるかどうかを確認したいと考えています。

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Coverage resource */ }  
    },  
    {  
      "name": "questionnaire",  
      "valueCanonical": "http://example.org/fhir/Questionnaire/medication-request"  
    },  
    {  
      "name": "changedSince",  
      "valueDateTime": "2024-03-01T00:00:00Z"  
    }  
  ]  
}
```

**結果**: 2024 年 3 月 1 日以降に変更されたリソースのみ、または何も変更されていない場合は空のパッケージを返します。

### ユースケース 4: 複数の注文
<a name="questionnaire-package-use-case-4"></a>

**シナリオ**: プロバイダーは、異なるアンケートを必要とする可能性のある複数のサービスリクエストを送信します。

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Coverage resource */ }  
    },  
    {  
      "name": "order",  
      "resource": { /* ServiceRequest for imaging */ }  
    },  
    {  
      "name": "order",  
      "resource": { /* ServiceRequest for DME */ }  
    }  
  ]  
}
```

**結果**: 該当するアンケートごとに 1 つずつ、複数のパッケージバンドルを返します。

## 他の Da Vinci IGs との統合
<a name="questionnaire-package-integration"></a>

### カバレッジ要件検出 (CRD)
<a name="questionnaire-package-crd-integration"></a>

**ワークフロー統合:**  

+ プロバイダーが EHR でサービスを注文する
+ CRD フックの起動、カバレッジ要件の確認
+ 支払者がドキュメントが必要であることを示す応答
+ プロバイダーが `$questionnaire-package`を呼び出してドキュメントフォームを取得する
+ プロバイダーがアンケートを完了する
+ ドキュメントが PAS または CDex 経由で送信される

### 事前認可サポート (PAS)
<a name="questionnaire-package-pas-integration"></a>

**ワークフロー統合:**  

+ `$questionnaire-package` を使用してドキュメント要件を取得する
+ 必要な臨床データを使用して QuestionnaireResponse を完了する
+ 記入済みの QuestionnaireResponse `Claim/$submit` で を使用して事前認可を送信する
+ を使用してステータスを確認する `Claim/$inquire`

### 臨床データ交換 (CDex)
<a name="questionnaire-package-cdex-integration"></a>

**ワークフロー統合:**  

+ 支払者がクレームの追加ドキュメントをリクエストする
+ プロバイダーが `$questionnaire-package`を使用して構造化データ収集フォームを取得する
+ プロバイダーが QuestionnaireResponse を完了する
+ ドキュメントは CDex アタッチメントワークフローを介して支払者に送信されます

## トラブルシューティングガイド
<a name="questionnaire-package-troubleshooting"></a>

### 問題: アンケートが返されない
<a name="questionnaire-package-no-questionnaire"></a>

**考えられる原因:**  

+ 正規 URL がデータストア内のアンケートと一致しません
+ 注文コードが支払者の医療ポリシーのアンケートにマッピングされない
+ カバレッジ支払者にアンケートが関連付けられていない

**解決方法:**  

+ 正規 URL が正しく、アンケートが存在することを確認する
+ 注文コード (CPT/HCPCS) が正しく指定されていることを確認します。
+ 支払者の組織にアンケートが設定されていることを確認します。

### 問題: パッケージに依存関係がない
<a name="questionnaire-package-missing-dependencies"></a>

**考えられる原因:**  

+ 参照ライブラリまたは ValueSet がデータストアに存在しません
+ ライブラリ参照が壊れているか正しくない
+ ValueSet の拡張に失敗しました

**解決方法:**  

+ 不足しているリソースに関する警告については、 `Outcome`パラメータを確認してください。
+ 参照されるすべてのリソースがデータストアに存在することを確認する
+ ValueSet URLs が正しく解決可能であることを確認する

### 問題: changedSince のパッケージが空
<a name="questionnaire-package-empty-package"></a>

**考えられる原因:**  

+ これは予想される動作です - 指定されたタイムスタンプ以降にリソースが変更されていません

**解決方法:**  

+ キャッシュされたバージョンのパッケージを使用する
+ `changedSince` パラメータを削除して完全なパッケージを取得する

### 問題: QuestionnaireResponse が事前に入力されていません
<a name="questionnaire-package-not-prepopulated"></a>

**考えられる原因:**  

+ 既存の QuestionnaireResponse が見つかりません
+ CQL ライブラリロジックが必要なデータを抽出できませんでした
+ 患者データが欠落しているか不完全である

**解決方法:**  

+ これは想定されている場合があります。すべてのアンケートに事前入力ロジックがあるわけではありません。
+ データストアに患者データが存在することを確認する
+ データ抽出要件について CQL ライブラリロジックを確認する

## ベストプラクティス
<a name="questionnaire-package-best-practices"></a>

### 1. バージョンで正規 URLs を使用する
<a name="questionnaire-package-bp-versions"></a>

特定のアンケートをリクエストするときは、常にバージョン番号を指定します。

```
{  
  "name": "questionnaire",  
  "valueCanonical": "http://example.org/fhir/Questionnaire/dme|2.1.0"  
}
```

**理由**: 一貫性を確保し、アンケートが更新されたときの予期しない変更を防ぎます。

### 2. changedSince for Performance を活用する
<a name="questionnaire-package-bp-changed-since"></a>

頻繁にアクセス`changedSince`されるアンケートの場合は、 を使用してデータ転送を最小限に抑えます。

```
{  
  "name": "changedSince",  
  "valueDateTime": "2024-03-10T15:30:00Z"  
}
```

**理由**: 更新されたリソースのみを取得することで、レイテンシーと帯域幅の使用量を削減します。

### 3. 完全なカバレッジ情報を含める
<a name="questionnaire-package-bp-coverage"></a>

アンケートを正しく選択できるように、包括的なカバレッジの詳細を提供します。

```
{  
  "name": "coverage",  
  "resource": {  
    "resourceType": "Coverage",  
    "beneficiary": { "reference": "Patient/123" },  
    "payor": [{ "reference": "Organization/payer-abc" }],  
    "class": [{ /* Group/plan information */ }]  
  }  
}
```

**理由**: HealthLake が支払者固有のアンケートと要件を特定するのに役立ちます。

## 関連の オペレーション
<a name="questionnaire-package-related-operations"></a>
+ `Claim/$submit` - 完成したドキュメントを使用して事前承認リクエストを送信する
+ `Claim/$inquire` - 送信された事前認可のステータスを確認する
+ `ValueSet/$expand` - ValueSets を展開して回答を選択する

# HealthLake の FHIR `$submit`オペレーション
<a name="reference-fhir-operations-submit"></a>

`$submit` オペレーションを使用すると、事前承認リクエストを支払者に送信して承認を受けることができます。このオペレーションでは、[Da Vinci 事前認可サポート (PAS) 実装ガイド](https://hl7.org/fhir/us/davinci-pas/)を実装し、事前認可送信用の標準化された FHIR ベースのワークフローを提供します。

## 仕組み
<a name="submit-how-it-works"></a>
+ **送信**: 以前の承認リクエストとサポートする臨床データを含む FHIR バンドルを送信する
+ **検証**: HealthLake は PAS 要件に照らして送信を検証します
+ **永続**化: すべてのリソースが HealthLake データストアに保存されます。
+ **応答: **「キューに入れられた」ステータスの即時応答を受け取ります。
+ **プロセス**: 承認決定は支払者によって非同期的に処理されます

## API エンドポイント
<a name="submit-api-endpoint"></a>

```
POST /datastore/{datastoreId}/r4/Claim/$submit  
Content-Type: application/fhir+json
```

## リクエスト構造
<a name="submit-request-structure"></a>

### バンドルの要件
<a name="submit-bundle-requirements"></a>

リクエストは、以下を含む FHIR Bundle リソースである必要があります。
+ **Bundle.type**: である必要があります `"collection"`
+ **Bundle.entry**: で 1 **つの**クレームリソースのみを含める必要があります `use = "preauthorization"`
+ **参照リソース**: クレームによって参照されるすべてのリソースをバンドルに含める必要があります

### 必要なリソース
<a name="submit-required-resources"></a>


| [リソース]  | カーディナリティ | プロファイル | 説明 | 
| --- | --- | --- | --- | 
| クレーム | 1 | PAS クレーム | 以前の認可リクエスト | 
| 患者 | 1 | PAS 患者 | 患者の人口統計情報 | 
| 組織 (保険者) | 1 | PAS 保険会社 | 保険会社 | 
| 組織 (プロバイダー) | 1 | PAS リクエスタ | リクエストを送信する医療プロバイダー | 
| カバレッジ | 1 つ以上 | PAS カバレッジ | 保険範囲の詳細 | 

### オプションのリソース
<a name="submit-optional-resources"></a>


| [リソース]  | カーディナリティ | プロファイル | 説明 | 
| --- | --- | --- | --- | 
| プラクティショナー | 0 以上 | PAS プラクティショナー | 医療関係者 | 
| PractitionerRole | 0 以上 | PAS PractitionerRole | プラクティショナーロール | 
| ServiceRequest | 0 以上 | PAS ServiceRequest | リクエストされた医療サービス | 
| DeviceRequest | 0 以上 | PAS DeviceRequest | リクエストされた医療デバイス | 
| MedicationRequest | 0 以上 | PAS MedicationRequest | リクエストされた薬剤 | 
| DocumentReference | 0 以上 | PAS DocumentReference | サポートされている臨床ドキュメント | 

## リクエスト例
<a name="submit-example-request"></a>

```
POST /datastore/example-datastore/r4/Claim/$submit  
Content-Type: application/fhir+json  
Authorization: Bearer <your-token>  
  
{  
  "resourceType" : "Bundle",  
  "id" : "MedicalServicesAuthorizationBundleExample",  
  "meta" : {  
    "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle"]  
  },  
  "identifier" : {  
    "system" : "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
    "value" : "5269367"  
  },  
  "type" : "collection",  
  "timestamp" : "2005-05-02T11:01:00+05:00",  
  "entry" : [{  
    "fullUrl" : "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
    "resource" : {  
      "resourceType" : "Claim",  
      "id" : "MedicalServicesAuthorizationExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim"]  
      },  
      "identifier" : [{  
        "system" : "http://example.org/PATIENT_EVENT_TRACE_NUMBER",  
        "value" : "111099"   
      }],  
      "status" : "active",  
      "type" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/claim-type",  
          "code" : "professional"  
        }]  
      },  
      "use" : "preauthorization",  
      "patient" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "created" : "2005-05-02T11:01:00+05:00",  
      "insurer" : {  
        "reference" : "Organization/InsurerExample"  
      },  
      "provider" : {  
        "reference" : "Organization/UMOExample"  
      },  
      "priority" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/processpriority",  
          "code" : "normal"  
        }]  
      },  
      "insurance" : [{  
        "sequence" : 1,  
        "focal" : true,  
        "coverage" : {  
          "reference" : "Coverage/InsuranceExample"  
        }  
      }],  
      "item" : [{  
        "extension" : [{  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1525",  
              "code" : "IN",  
              "display" : "Initial Medical Services Reservation"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1322",  
              "code" : "I",  
              "display" : "Initial"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-authorizationNumber",  
          "valueString" : "1122344"  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-administrationReferenceNumber",  
          "valueString" : "33441122"  
        }],  
        "sequence" : 1,  
        "category" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/1365",  
            "code" : "1",  
            "display" : "Medical Care"  
          }]  
        },  
        "productOrService" : {  
          "coding" : [{  
            "system" : "http://www.cms.gov/Medicare/Coding/HCPCS​ReleaseCodeSets",  
            "code" : "99212",  
            "display" : "Established Office Visit"  
          }]  
        },  
        "servicedDate" : "2005-05-10",  
        "locationCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://www.cms.gov/Medicare/Coding/place-of-service-codes/Place_of_Service_Code_Set",  
            "code" : "11"  
          }]  
        }  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/UMOExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "UMOExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "8189991234"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "X3"  
        }]  
      }],  
      "name" : "DR. JOE SMITH CORPORATION",  
      "address" : [{  
        "line" : ["111 1ST STREET"],  
        "city" : "SAN DIEGO",  
        "state" : "CA",  
        "postalCode" : "92101",  
        "country" : "US"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/InsurerExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "InsurerExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "1234567893"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "PR"  
        }]  
      }],  
      "name" : "MARYLAND CAPITAL INSURANCE COMPANY"  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Coverage/InsuranceExample",  
    "resource" : {  
      "resourceType" : "Coverage",  
      "id" : "InsuranceExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage"]  
      },  
      "status" : "active",  
      "subscriberId" : "1122334455",  
      "beneficiary" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "relationship" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/subscriber-relationship",  
          "code" : "self"  
        },  
        {  
          "system" : "https://codesystem.x12.org/005010/1069",  
          "code" : "18"  
        }]  
      },  
      "payor" : [{  
        "reference" : "Organization/InsurerExample"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Patient/SubscriberExample",  
    "resource" : {  
      "resourceType" : "Patient",  
      "id" : "SubscriberExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber"]  
      },  
      "extension" : [{  
        "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-militaryStatus",  
        "valueCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/584",  
            "code" : "RU"  
          }]  
        }  
      }],  
      "identifier" : [{  
        "type" : {  
          "coding" : [{  
            "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",  
            "code" : "MB"  
          }]  
        },  
        "system" : "http://example.org/MIN",  
        "value" : "12345678901"  
      }],  
      "name" : [{  
        "family" : "SMITH",  
        "given" : ["JOE"]  
      }],  
      "gender" : "male"  
    }  
  }]  
}
```

## レスポンスの形式
<a name="submit-response-format"></a>

### 成功レスポンス (200 OK)
<a name="submit-success-response"></a>

以下を含む PAS レスポンスバンドルが届きます。
+ `outcome: "queued"` と を使用した **ClaimResponse** `status: "active"`
+ リクエストのすべての元のリソース
+ 受信を確認するタイムスタンプ

```
{  
  "resourceType" : "Bundle",  
  "identifier": {  
        "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
        "value": "5269367"  
  },  
  "type" : "collection",  
  "timestamp" : "2005-05-02T11:02:00+05:00",  
  "entry" : [{  
    "fullUrl" : "http://example.org/fhir/ClaimResponse/PractitionerRequestorPendingResponseExample",  
    "resource" : {  
      "resourceType" : "ClaimResponse",  
      "id" : "PractitionerRequestorPendingResponseExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse"]  
      },  
      "identifier" : [{  
        "system" : "http://example.org/PATIENT_EVENT_TRACE_NUMBER",  
        "value" : "111099"  
      }],  
      "status" : "active",  
      "type" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/claim-type",  
          "code" : "professional"  
        }]  
      },  
      "use" : "preauthorization",  
      "patient" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "created" : "2005-05-02T11:02:00+05:00",  
      "insurer" : {  
        "reference" : "Organization/InsurerExample"  
      },  
      "requestor" : {  
        "reference" : "PractitionerRole/ReferralPractitionerRoleExample"  
      },  
      "request" : {  
        "reference" : "Claim/MedicalServicesAuthorizationExample"  
      },  
      "outcome" : "queued"  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
    "resource" : {  
      "resourceType" : "Claim",  
      "id" : "MedicalServicesAuthorizationExample",  
      "meta" : {  
        "profile": [  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim",  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim|2.1.0"  
        ]  
      },  
      "identifier" : [{  
        "system" : "http://example.org/PATIENT_EVENT_TRACE_NUMBER",  
        "value" : "111099"  
        }  
      }],  
      "status" : "active",  
      "type" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/claim-type",  
          "code" : "professional"  
        }]  
      },  
      "use" : "preauthorization",  
      "patient" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "created" : "2005-05-02T11:01:00+05:00",  
      "insurer" : {  
        "reference" : "Organization/InsurerExample"  
      },  
      "provider" : {  
        "reference" : "Organization/UMOExample"  
      },  
      "priority" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/processpriority",  
          "code" : "normal"  
        }]  
      },  
      "insurance" : [{  
        "sequence" : 1,  
        "focal" : true,  
        "coverage" : {  
          "reference" : "Coverage/InsuranceExample"  
        }  
      }],  
      "item" : [{  
        "extension" : [{  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1525",  
              "code" : "IN",  
              "display" : "Initial Medical Services Reservation"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1322",  
              "code" : "I",  
              "display" : "Initial"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-authorizationNumber",  
          "valueString" : "1122344"  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-administrationReferenceNumber",  
          "valueString" : "33441122"  
        }],  
        "sequence" : 1,  
        "category" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/1365",  
            "code" : "1",  
            "display" : "Medical Care"  
          }]  
        },  
        "productOrService" : {  
          "coding" : [{  
            "system" : "http://www.cms.gov/Medicare/Coding/HCPCS​ReleaseCodeSets",  
            "code" : "99212",  
            "display" : "Established Office Visit"  
          }]  
        },  
        "servicedDate" : "2005-05-10",  
        "locationCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://www.cms.gov/Medicare/Coding/place-of-service-codes/Place_of_Service_Code_Set",  
            "code" : "11"  
          }]  
        }  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/UMOExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "UMOExample",  
      "meta" : {  
        "profile": [  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor",  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor|2.1.0"  
        ]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "8189991234"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "X3"  
        }]  
      }],  
      "name" : "DR. JOE SMITH CORPORATION",  
      "address" : [{  
        "line" : ["111 1ST STREET"],  
        "city" : "SAN DIEGO",  
        "state" : "CA",  
        "postalCode" : "92101",  
        "country" : "US"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/InsurerExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "InsurerExample",  
      "meta" : {  
           "profile": [  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer|2.1.0"  
            ]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "1234567893"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "PR"  
        }]  
      }],  
      "name" : "MARYLAND CAPITAL INSURANCE COMPANY"  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Coverage/InsuranceExample",  
    "resource" : {  
      "resourceType" : "Coverage",  
      "id" : "InsuranceExample",  
      "meta": {  
            "profile": [  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage|2.1.0"  
            ]  
        },  
      "status" : "active",  
      "subscriberId" : "1122334455",  
      "beneficiary" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "relationship" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/subscriber-relationship",  
          "code" : "self"  
        },  
        {  
          "system" : "https://codesystem.x12.org/005010/1069",  
          "code" : "18"  
        }]  
      },  
      "payor" : [{  
        "reference" : "Organization/InsurerExample"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Patient/SubscriberExample",  
    "resource" : {  
      "resourceType" : "Patient",  
      "id" : "SubscriberExample",  
      "meta": {  
            "profile": [  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary|2.1.0"  
            ]  
        },  
      "extension" : [{  
        "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-militaryStatus",  
        "valueCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/584",  
            "code" : "RU"  
          }]  
        }  
      }],  
      "identifier" : [{  
        "type" : {  
          "coding" : [{  
            "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",  
            "code" : "MB"  
          }]  
        },  
        "system" : "http://example.org/MIN",  
        "value" : "12345678901"  
      }],  
      "name" : [{  
        "family" : "SMITH",  
        "given" : ["JOE"]  
      }],  
      "gender" : "male"  
    }  
  }]  
}
```

## エラーレスポンス
<a name="submit-error-responses"></a>

### 400 Bad Request
<a name="submit-400-error"></a>

リクエスト形式が無効または形式が間違っている場合に返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "invalid",  
    "diagnostics": "The provided payload was invalid and could not be parsed correctly."  
  }]  
}
```

### 412 Precondition Failed
<a name="submit-412-error"></a>

同じ以前の承認リクエストがすでに送信されている場合 (重複した送信が検出された場合) に返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "processing",  
    "diagnostics": "PreAuth Claim already exists"  
  }]  
}
```

**べき等性**  
`$submit` オペレーションはべき等です。同じリクエストを複数回送信しても、以前の承認リクエストが重複することはありません。代わりに、 `$inquire`を使用して元の送信のステータスを確認するように指示する 412 エラーが表示されます。

### 422 未処理のエンティティ
<a name="submit-422-error"></a>

FHIR 検証が失敗したときに返されます。

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "required",  
    "diagnostics": "Bundle contains more than one preauthorization claim"  
  }]  
}
```

## 検証ルール
<a name="submit-validation-rules"></a>

HealthLake は、送信に対して包括的な検証を実行します。

### バンドルの検証
<a name="submit-bundle-validation"></a>
+ PAS リクエストバンドルプロファイルに準拠する必要があります
+ `Bundle.type` は である必要があります `"collection"`
+ 複数のクレームリソースを含めることができます
+ ただし、 には、事前承認の使用を含むクレームリソースが 1 つだけ含まれている必要があります。
  + また、このクレームリソースはバンドルの最初のエントリである必要があります。
+ 参照されるすべてのリソースをバンドルに含める必要があります

### クレームの検証
<a name="submit-claim-validation"></a>
+ PAS クレームプロファイルに準拠する必要があります
+ `Claim.use` は である必要があります `"preauthorization"`
+ 必須フィールド: `patient`、`insurer`、`provider`、`created`、 `priority`
+ ビジネス識別子が存在し、有効である必要があります

### リソースの検証
<a name="submit-resource-validation"></a>
+ すべてのリソースは、それぞれの PAS プロファイルに準拠する必要があります
+ 必要なサポートリソースが存在する必要があります (学生、カバレッジ、組織)
+ クロスリファレンスは、バンドル内で有効で解決可能である必要があります

## パフォーマンス仕様
<a name="submit-performance-specs"></a>


| メトリクス |  の仕様 | 
| --- | --- | 
| バンドルサイズ制限 | 最大 5 MB | 
| リソース数の制限 | バンドルあたり 500 リソース | 

## 必要なアクセス許可
<a name="submit-required-permissions"></a>

`$submit` オペレーションを使用するには、FHIR で AWS Sigv4 または SMART のいずれかを使用できます。
+ IAM ロールに `healthlake:SubmitPreAuthClaim`- オペレーションを呼び出すには

**FHIR スコープでの SMART**  
**最低限必要なスコープ:**
+ **SMART v1**: `user/Claim.write & <all_resourceTypes_in_Bundle>.write`
+ **SMART v2**: `user/Claim.c & <all_resourceTypes_in_Bundle>.c or system/*.*`

## 重要な実装上の注意事項
<a name="submit-implementation-notes"></a>

### リソースの永続性
<a name="submit-resource-persistence"></a>
+ すべてのバンドルエントリは、データストア内の個々の FHIR リソースとして保持されます。
+ お客様が指定した IDs は、指定されたときに保持されます。
+ バージョン履歴は監査目的で維持されます
+ 重複検出によりリソースの競合を防止

### 処理動作
<a name="submit-processing-behavior"></a>
+ 有効な送信ごとに、`"queued"`結果を含む 1 つの ClaimResponse のみが生成されます。
+ 無効な送信は、詳細なエラー情報を含む 400 または 422 のステータスコードを返す
+ システムエラーが適切な 5xx ステータスコードを返す
+ すべての送信が成功すると、200 ステータスが返され、ClaimResponse が保留されます。

### バンドルの要件
<a name="submit-bundle-requirements-impl"></a>
+ `Bundle.entry.fullUrl` 値は REST URLs または`"urn:uuid:[guid]"`形式である必要があります
+ すべての GUIDs は送信間で一意である必要があります (同じリソースインスタンスを除く)
+ 参照されたリソースはバンドル内に存在するか、解決可能である必要があります

## 関連の オペレーション
<a name="submit-related-operations"></a>
+ `Claim/$inquire` - 送信された以前の承認リクエストのステータスをクエリする
+ `Patient/$everything` - 事前認可コンテキストの包括的な患者データを取得する

# を使用した FHIR リソースの検証 `$validate`
<a name="reference-fhir-operations-validate"></a>

AWS HealthLake は FHIR リソースの `$validate`オペレーションをサポートするようになりました。これにより、ストレージオペレーションを実行せずに、FHIR 仕様に照らしてリソースを検証し、指定されたプロファイルまたはベースリソース定義への準拠を確認できます。このオペレーションは、以下が必要な場合に特に役立ちます。
+ FHIR CMS コンプライアンス要件を検証する
+ 本番環境で使用する前にリソースをテストする
+ ユーザーが臨床データを編集するときに、リアルタイムの検証フィードバックを提供する
+ APIs を作成および更新するために無効なデータ送信を減らす

## 使用方法
<a name="validate-usage"></a>

`$validate` オペレーションは、POST メソッドを使用して FHIR リソースで呼び出すことができます。

**サポートされているオペレーション**  


```
POST [base]/[type]/[id]/$validate
POST [base]/[type]/$validate
```

## サポートされているペイロード
<a name="validate-payloads"></a>

**パラメータリソース**  


HealthLake は、次の FHIR `$validate`パラメータをサポートしています。


| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| resource | [リソース]  | はい | 検証するリソース | 
| profile | canonical | 不可 | 検証するプロファイルの正規 URL | 
| mode | コード | 不可 | 検証モード: create、または update | 

**クエリパラメータを使用した直接リソース**  



| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| profile | canonical | 不可 | 検証するプロファイルの正規 URL | 
| mode | コード | 不可 | 検証モード: create、または update | 

## 例
<a name="validate-examples"></a>

**ID およびパラメータペイロードを持つリソースの POST リクエスト**  


```
POST [base]/Patient/example-patient/$validate
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "resource",
      "resource": {
        "resourceType": "Patient",
        "id": "example-patient",
        "name": [
          {
            "family": "Smith",
            "given": ["John"]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01"
      }
    },
    {
      "name": "profile",
      "valueCanonical": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    },
    {
      "name": "mode",
      "valueString": "create"
    }
  ]
}
```

**リソースタイプとパラメータペイロードの POST リクエスト**  


```
POST [base]/Patient/$validate
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "resource",
      "resource": {
        "resourceType": "Patient",
        "name": [
          {
            "family": "Doe",
            "given": ["Jane"]
          }
        ],
        "gender": "female",
        "birthDate": "1985-05-15"
      }
    },
    {
      "name": "profile",
      "valueCanonical": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    },
    {
      "name": "mode",
      "valueString": "update"
    }
  ]
}
```

**ID と直接リソースペイロードを持つリソースの POST リクエスト**  


```
POST [base]/Patient/example-patient/$validate?profile=http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient&mode=create
Content-Type: application/fhir+json

{
    "resourceType": "Patient",
    "id": "example-patient",
    "name": [
        {
        "family": "Smith",
        "given": ["John"]
        }
    ],
    "gender": "male",
    "birthDate": "1990-01-01"
}
```

**リソースタイプと直接リソースペイロードの POST リクエスト**  


```
POST [base]/Patient/$validate?profile=http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient&mode=create
Content-Type: application/fhir+json

{
    "resourceType": "Patient",
    "id": "example-patient",
    "name": [
        {
        "family": "Smith",
        "given": ["John"]
        }
    ],
    "gender": "male",
    "birthDate": "1990-01-01"
}
```

**レスポンス例**  
オペレーションは、検証結果を含む OperationOutcome リソースを返します。

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "information",
      "code": "informational",
      "diagnostics": "Validation successful"
    }
  ]
}
```

**検証エラーによるレスポンスの例**  


```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "required",
      "details": {
        "text": "Missing required element"
      },
      "diagnostics": "Patient.identifier is required by the US Core Patient profile",
      "location": [
        "Patient.identifier"
      ]
    },
    {
      "severity": "warning",
      "code": "code-invalid",
      "details": {
        "text": "Invalid code value"
      },
      "diagnostics": "The provided gender code is not from the required value set",
      "location": [
        "Patient.gender"
      ]
    }
  ]
}
```

## 行動
<a name="validate-behavior"></a>

`$validate` オペレーション:

1. FHIR 仕様とベースリソース定義に照らしてリソースを検証します

1. `profile` パラメータが指定されている場合、指定されたプロファイルへの準拠をチェックします

1. 指定されたモード (`create` または `update`) に基づいて検証します。

1. エラー、警告、情報メッセージなど、詳細な検証結果を返します。

1. ストレージオペレーションを実行しない - 検証のみ

1. 検証の問題が見つかったかどうかに関係なく、検証を実行できるときに HTTP 200 OK を返します

## 検証モード
<a name="validate-modes"></a>
+ **create**: 作成中であるかのようにリソースを検証します (新しいリソース)
+ **update**: リソースが更新されているかのように検証します (既存のリソース)

## エラー処理
<a name="validate-error-handling"></a>

オペレーションは以下を返します。
+ 200 OK: 検証が正常に実行されました (検証結果に関係なく)
+ 400 不正なリクエスト: 無効なリクエスト形式またはパラメータ
+ 404 Not Found: リソースタイプまたはプロファイルが見つかりません

`$validate` オペレーション仕様の詳細については、[FHIR R4 リソース`$validate`](https://www.hl7.org/fhir/R4/operation-resource-validate.html)ドキュメントを参照してください。

# のコンプライアンスリファレンス AWS HealthLake
<a name="reference-compliance"></a>

AWS HealthLake は、CMS (Centers for Medicare & Medicaid Services) の相互運用性要件に従って API の使用を追跡およびレポートするのに役立つように設計されています。これらの機能により、CMS が必須とするカテゴリ別に API トランザクションを分類し、コンプライアンスレポートのために使用状況メトリクスを自動的にキャプチャできます。

**コンプライアンスの責任を理解する**  
 AWS HealthLake とその CMS 相互運用性エンドポイントを使用することだけでは**、CMS コンプライアンスを実現するには不十分**です。以下の責任はユーザーにあります:  
特定のユースケースと規制上の義務に基づいて、API ワークフローを適切な CMS カテゴリエンドポイントに正しくマッピングする
CMS 要件を満たす適切な認証および認可コントロールの実装
FHIR リソースとデータ交換が該当する CMS 規制と実装ガイドに準拠していることを確認する
コンプライアンスレポートのニーズをサポートするために CloudWatch メトリクスを設定およびモニタリングする
組織に適用される CMS ルールを理解し、適切な技術的および運用上のコントロールを実装する

AWS HealthLake は、コンプライアンスの取り組みをサポートするインフラストラクチャとツールを提供しますが、特定の規制要件に基づいてこれらの機能を適切に使用する必要があります。これらのエンドポイントを介して API コールをルーティングするだけでは、アプリケーションが CMS 規制に自動的に準拠することはありません。

**Topics**
+ [CMS](reference-compliance-cms.md)

# CMS コンプライアンス機能
<a name="reference-compliance-cms"></a>

AWS HealthLake には、CMS (Centers for Medicare & Medicaid Services) の相互運用性とコンプライアンス要件を満たすのに役立つ機能が用意されています。これらの機能により、CMS カテゴリ別の API 使用状況を追跡し、コンプライアンス上の使用状況メトリクスをレポートできます。

**Topics**
+ [CMS 相互運用性エンドポイント](#cms-interoperability-endpoints)
+ [CMS コンプライアンスの CloudWatch メトリクスの強化](#cms-cloudwatch-metrics)

## CMS 相互運用性エンドポイント
<a name="cms-interoperability-endpoints"></a>

### 概要:
<a name="cms-endpoints-overview"></a>

HealthLake には、CMS が義務付ける API カテゴリに対応する 4 つの CMS 相互運用性エンドポイントが用意されています。HealthLake データストアの基盤となるベース URL は変更されません。これらのエンドポイントは、CMS レポート目的で API コールを分類および追跡する方法を提供するだけです。

### 目的
<a name="cms-endpoints-purpose"></a>

これらの相互運用性エンドポイントの主な目的は、お客様が以下を実行できるようにすることです。
+ CMS カテゴリ別に API トランザクション**を簡単に追跡**する
+ CMS コンプライアンスの使用状況メトリクス**を自動的にレポート**する
+ 最小限の変更で既存の FHIR ワークフロー**を維持する** 

すべての API コールは、相互運用性エンドポイントと標準 FHIR エンドポイントのどちらを使用する場合でも同じように機能します。唯一の違いは、トランザクションが CloudWatch メトリクスでどのように分類されるかです。

### サポートされている CMS 相互運用性エンドポイント
<a name="cms-supported-endpoints"></a>


| CMS カテゴリ | 相互運用性エンドポイント | 使用例 | 
| --- | --- | --- | 
| 患者アクセス | /patientaccess/v2/r4 | baseURL/patientaccess/v2/r4/Patient/123 | 
| プロバイダーアクセス | /​provideraccess/v2/r4 | baseURL/​provideraccess/v2/r4/Observation?patient=123 | 
| 支払者から支払者へ | /payertopayerdx/v2/r4 | baseURL/payertopayerdx/v2/r4/Practitioner/456 | 
| 以前の認証サービス | /priorauthservice/v2/r4 | baseURL/priorauthservice/v2/r4/ExplanationOfBenefit?patient=789 | 

### 相互運用性エンドポイントの仕組み
<a name="cms-endpoints-how-it-works"></a>

**標準 HealthLake API コール:**

```
baseURL/resourceType/[id]
baseURL/resourceType?[parameters]
```

**CMS 相互運用性エンドポイントの場合:**

```
baseURL/interoperability-endpoint/resourceType/[id]
baseURL/interoperability-endpoint/resourceType?[parameters]
```

相互運用性エンドポイントパスは、ベース URL とリソースタイプの間に挿入されます。相互運用性エンドポイントパスの後はすべて、現在の API コールとまったく同じままです。

### 使用例
<a name="cms-endpoints-examples"></a>

#### 例 1: 患者アクセス API
<a name="cms-example-patient-access"></a>

**現在の API コール (引き続き機能):**

```
curl -X GET \
  https://healthlake.us-east-1.amazonaws.com/datastore/abc123/r4/Patient/123 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/fhir+json"
```

**患者アクセス相互運用性エンドポイント (CMS 追跡用) の場合:**

```
curl -X GET \
  https://healthlake.us-east-1.amazonaws.com/datastore/abc123/patientaccess/v2/r4/Patient/123 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/fhir+json"
```

**キーポイント:**
+ 基本 URL は残ります。 `https://healthlake.us-east-1.amazonaws.com/datastore/abc123`
+ 相互運用性エンドポイントが挿入されました。 `/patientaccess/v2/r4`
+ リソースパスが変更されていません。 `/Patient/123`
+ **両方の呼び出しが同一のレスポンスを返す**
+ 相互運用性エンドポイント呼び出しは、CloudWatch `URIType=patient-access`の で自動的に追跡されます。
+ POST、PUT、PATCH、DELETE オペレーションは同じように機能します。
+ リクエスト本文は変更されません。

### エンドポイント翻訳リファレンス
<a name="cms-endpoint-translation"></a>


| 相互運用性エンドポイント | への翻訳 | CMS カテゴリ | 
| --- | --- | --- | 
| baseURL/patientaccess/v2/r4/Patient | baseURL/r4/Patient | 患者アクセス | 
| baseURL/​provideraccess/v2/r4/Observation | baseURL/r4/Observation | プロバイダーアクセス | 
| baseURL/payertopayerdx/v2/r4/Practitioner/456 | baseURL/r4/Practitioner/456 | Payer to Payer Data Exchange | 
| baseURL/priorauthservice/v2/r4/ExplanationOfBenefit?patient=789 | baseURL/r4/ExplanationOfBenefit?patient=789 | 事前認可 | 

### 重要な注意事項
<a name="cms-endpoints-important-notes"></a>
+ **機能的な違いなし**: 相互運用性エンドポイントと標準 FHIR エンドポイントは、同一のレスポンスを返し、同一のオペレーションをサポートします
+ **基本 URL 変更なし**: HealthLake データストアエンドポイントは変わりません
+ **シンプルな統合**: 基本 URL とリソースタイプの間に相互運用性エンドポイントパスを挿入する
+ **自動追跡**: CloudWatch メトリクスは、使用される相互運用性エンドポイントによって呼び出しを自動的に分類します。
+ **下位互換性: **相互運用性エンドポイントのない既存の API コールは引き続き正常に動作します。

## CMS コンプライアンスの CloudWatch メトリクスの強化
<a name="cms-cloudwatch-metrics"></a>

### 概要:
<a name="cms-metrics-overview"></a>

CMS 相互運用性エンドポイントを使用すると、HealthLake は CMS レポート要件をサポートする追加のディメンションを含む拡張 CloudWatch メトリクスを自動的に出力します。これらのメトリクスは、**追加の設定を必要とせずに、発信者 ID、アプリケーション、および CMS 固有の URI タイプごとに API の使用状況を追跡します**。

### 仕組み
<a name="cms-metrics-how-it-works"></a>

相互運用性エンドポイントを使用して API コールを行う場合:

```
# This call...
curl https://healthlake.us-east-1.amazonaws.com/datastore/abc123/patientaccess/v2/r4/Patient/123

# Automatically generates metrics with:
# - URIType: "patient-access"
# - Sub: extracted from your bearer token (SMART on FHIR datastores only)
# - ClientId: extracted from your bearer token (SMART on FHIR datastores only)
# - Plus all standard dimensions (DatastoreId, Operation, etc.)
```

**追加のコードや設定は必要ありません。**相互運用性エンドポイントを使用するだけで、拡張メトリクスが自動的にキャプチャされます。

**注記**  
FHIR データストアの非 SMART の場合、`URIType`ディメンションは引き続きキャプチャされるため、CMS カテゴリ別に API の使用状況を追跡できます。`Sub` および `ClientId`ディメンションは、これらのクレームを含むベアラートークンで FHIR 認証で SMART を使用する場合にのみ使用できます。

### 新しいメトリクスディメンション
<a name="cms-metrics-dimensions"></a>

既存のディメンション (`DatastoreId`、`DatastoreType`、`Operation`) に加えて、相互運用性エンドポイントを使用すると、次のディメンションが自動的に追加されます。


| ディメンション | 説明 | 値の例 | ソース | 
| --- | --- | --- | --- | 
| URIType | CMS コンプライアンスカテゴリ | patient-access, provider-access, payer-to-payer, prior-authorization | 相互運用性エンドポイントパスから自動的に決定される | 
| サブ | 発信者 ID | ユーザー/エンティティ識別子 | ベアラートークンsubクレームから抽出 | 
| ClientId | アプリケーション識別子 | portal\$1app, ehr\$1system | ベアラートークンclient\$1idクレームから抽出 | 

### 使用可能なメトリクス
<a name="cms-available-metrics"></a>

相互運用性エンドポイントを使用する場合、既存のすべての HealthLake メトリクスに追加のディメンションが含まれるようになりました。
+ **CallCount** - API コールの合計数
+ **レイテンシー** - ミリ秒単位の API 応答時間
+ **UserErrors** - 4xx クライアントエラーの数
+ **SystemErrors** - 5xx サーバーエラーの数
+ **スロットリング** - スロットリングされたリクエストの数
+ **SuccessfulRequests** - 成功した API コールの数

### CloudWatch でのメトリクスのクエリ
<a name="cms-querying-metrics"></a>

#### CloudWatch Insights クエリの例
<a name="cms-cloudwatch-insights-example"></a>

**アプリケーションごとにすべての Patient Access API コールをクエリします。**

```
SELECT SUM(CallCount)
FROM "AWS/HealthLake"
WHERE DatastoreId = '75c1cf9b0d71cd38fec8f7fb317c4c1a'
    AND URIType = 'patient-access'
GROUP BY ClientId
```

# のサポートリファレンス AWS HealthLake
<a name="reference-healthlake"></a>

以下のサポートリファレンス資料が利用可能です AWS HealthLake。

**注記**  
すべてのネイティブ HealthLake アクションとデータ型については、別のリファレンスで説明しています。詳細については、「[AWS HealthLake APIリファレンス**](https://docs.aws.amazon.com/healthlake/latest/APIReference/)」を参照してください。

**Topics**
+ [エンドポイントとクォータ](reference-healthlake-endpoints-quotas.md)
+ [プリロードされたデータ型](reference-healthlake-preloaded-data-types.md)
+ [サンプルプロジェクト](reference-healthlake-sample-projects.md)
+ [トラブルシューティング](reference-healthlake-troubleshooting.md)
+ [AWS SDKs の使用](sdk-general-information-section.md)

# AWS HealthLake エンドポイントとクォータ
<a name="reference-healthlake-endpoints-quotas"></a>

以下のトピックでは、 AWS HealthLake サービスエンドポイントとクォータについて説明します。

**Topics**
+ [サービスエンドポイント](#reference-healthlake-endpoints)
+ [Service Quotas](#reference-healthlake-quotas)

## サービスエンドポイント
<a name="reference-healthlake-endpoints"></a>

サービスポイントとは、ホストとポートをウェブサービスのエンドポイントとして識別する URL のことです。ウェブサービスの各リクエストには、1 つずつエンドポイントが含まれています。ほとんどの AWS サービスは、より高速な接続を可能にするために、特定のリージョンのエンドポイントを提供します。次の表に、 のサービスエンドポイントを示します AWS HealthLake。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/healthlake/latest/devguide/reference-healthlake-endpoints-quotas.html)

## Service Quotas
<a name="reference-healthlake-quotas"></a>

サービスクォータは、 AWS アカウント内のリソース、アクション、および項目の最大値として定義されます。

**注記**  
調整可能なクォータの場合、[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/)を使用してクォータの引き上げをリクエストできます。詳細については、「*Service Quotas ユーザーガイド*」の「[クォータの引き上げのリクエスト](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」を参照してください。  
Sync Write API レートはペイロードサイズに応じて比例的に増加し、1KB の増分ごとに追加の容量が消費されます (例えば、4KB のペイロードは 4 倍の書き込み容量を使用します）。オプションの `x-amz-fhir-history-consistency-level` ヘッダーを に設定すると、リソースあたりの書き込みキャパシティ消費量が 2 `strong`倍になります。  
バンドル内のリソースは、1 KB のペイロードサイズに基づく標準の読み取り/書き込み制限に従います。バンドルタイプの*トランザクション*は、タイプ*バッチ*と比較して書き込み容量を 2 倍消費します。つまり、*バッチ*バンドルはトランザクションバンドルの 1 秒あたり 2 倍のリソースを処理できます。

次の表に、 のデフォルトクォータを示します AWS HealthLake。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/healthlake/latest/devguide/reference-healthlake-endpoints-quotas.html)

# HealthLake の Synthea プリロードされたデータ型
<a name="reference-healthlake-preloaded-data-types"></a>

HealthLake は、事前ロードされたデータ型として SYNTHEA のみをサポートします。[Synthea](https://synthetichealth.github.io/synthea/) は、`Patient`医療履歴をモデル化する合成患者ジェネレーターです。これは、ユーザーが実際の患者データを使用せずにモデルをテスト`Bundle`できるように、HealthLake が FHIR R4-compliantのリソースを生成できるようにするオープンソースの Git リポジトリでホストされています。

次のリソースタイプは、プリロードされた HealthLake データストアで使用できます。Synthea データを使用した HealthLake データストアの事前ロードの詳細については、「」を参照してください[HealthLake データストアの作成](managing-data-stores-create.md)。

**注記**  
HealthLake がサポートする FHIR R4 リソースの完全なリストを表示するには、「」を参照してください[HealthLake でサポートされている FHIR R4 リソースタイプ](reference-fhir-resource-types.md)。


**HealthLake でサポートされている Synthea FHIR リソースタイプ**  

|  |  | 
| --- |--- |
| AllergyIntolerance | ロケーション | 
| CarePlan | MedicationAdministration | 
| CareTeam | MedicationRequest | 
| Claim | 監視結果 | 
| Condition | 組織 | 
| デバイス | 患者 | 
| DiagnosticReport | プラクティショナー | 
| エンカウンター | PractitionerRole | 
| ExplanationofBenefit | 手順 | 
| ImagingStudy | プロベナンス | 
| イミュナイゼーション |   | 

# AWS HealthLake サンプルプロジェクト
<a name="reference-healthlake-sample-projects"></a>

分析をさらに進めるには、次のブログ記事の例に示すように、HealthLake を他の AWS のサービスで使用できます。

**HealthLake 統合分析**
+ [を使用した母集団ヘルスアプリケーション AWS HealthLake – パート 1: Amazon Quick を使用した分析とモニタリング](https://aws.amazon.com/blogs/machine-learning/population-health-applications-with-amazon-healthlake-part-1-analytics-and-monitoring-using-amazon-quicksight/)。
+ [AWS HealthLake 正規化されたデータで Amazon SageMaker AI を使用して予測疾患モデルを構築する](https://aws.amazon.com/blogs/machine-learning/building-predictive-disease-models-using-amazon-sagemaker-with-amazon-healthlake-normalized-data/)。
+ [AWS AI サービスを使用して、認知検索とヘルスナレッジグラフを構築します](https://aws.amazon.com/blogs/machine-learning/build-a-cognitive-search-and-a-health-knowledge-graph-using-amazon-healthlake-amazon-kendra-and-amazon-neptune/)。

**HealthLake イベントモニタリング**
+ [Amazon EventBridge と の統合 AWS HealthLake](https://aws.amazon.com/blogs/industries/amazon-eventbridge-integration-for-aws-healthlake/)。

# トラブルシューティング AWS HealthLake
<a name="reference-healthlake-troubleshooting"></a>

以下のトピックでは、、 AWS SDKs AWS CLI、または HealthLake コンソールの使用時に発生する可能性のあるエラーや問題のトラブルシューティングに関するアドバイスを提供します。このセクションに記載されていない問題が見つかった場合は、このページの右側のサイドバーにある**フィードバックの提供**ボタンを使用して報告します。

**Topics**
+ [データストアアクション](#troubleshooting-data-store)
+ [インポートアクション](#troubleshooting-import)
+ [FHIR APIs](#troubleshooting-fhir-apis)
+ [NLP 統合](#troubleshooting-nlp-integrations)
+ [SQL 統合](#troubleshooting-sql-integrations)

## データストアアクション
<a name="troubleshooting-data-store"></a>

**問題:** * HealthLake データストアを作成しようとすると、次のエラーが表示されます。*

```
AccessDeniedException: Insufficient Lake Formation permission(s): Required Database on Catalog
```

2022 年 11 月 14 日、HealthLake は新しいデータストアを作成するために必要な IAM アクセス許可を更新しました。詳細については、「[HealthLake を使用するように IAM ユーザーまたはロールを設定する (IAM 管理者)](getting-started-setting-up.md#setting-up-configure-iam)」を参照してください。

**問題: ** * AWS SDKs を使用して HealthLake データストアを作成すると、データストアの作成ステータスは例外または不明なステータスを返します。*

`DescribeFHIRDatastore` または `ListFHIRDatastores` API 呼び出しが例外または不明なデータストアステータスを返す場合は、 AWS SDK を最新バージョンに更新します。

## インポートアクション
<a name="troubleshooting-import"></a>

**問題: ** *データが FHIR R4 形式でない場合でも HealthLake を使用できますか?*

HealthLake データストアにインポートできるのは、FHIR R4 形式のデータのみです。既存のヘルスデータを FHIR R4 形式に変換するのに役立つパートナーのリストについては、[AWS HealthLake 「 パートナー](https://docs.aws.amazon.com/healthlake/partners/)」を参照してください。

**問題:** *FHIR インポートジョブが失敗したのはなぜですか?*

インポートジョブが成功すると、 `.ndjson`形式の結果 (出力ログ) を含むフォルダが生成されますが、個々のレコードはインポートに失敗する可能性があります。この場合、インポートに失敗したレコードのマニフェストを含む 2 番目の`FAILURE`フォルダが生成されます。詳細については、「[を使用した FHIR データのインポート AWS HealthLake](importing-fhir-data.md)」を参照してください。

インポートジョブが失敗した理由を分析するには、 `DescribeFHIRImportJob` API を使用して JobProperties を分析します。以下が推奨されます。
+ ステータスが `FAILED`で、メッセージが存在する場合、失敗は入力データサイズや HealthLake クォータを超える入力ファイルの数などのジョブパラメータに関連しています。
+ インポートジョブのステータスが の場合は`COMPLETED_WITH_ERRORS`、マニフェストファイル をチェックして`manifest.json`、正常にインポートされなかったファイルに関する情報を確認してください。
+ インポートジョブのステータスが `FAILED`で、メッセージが存在しない場合は、ジョブの出力場所に移動してマニフェストファイル にアクセスします`manifest.json`。

 入力ファイルごとに、インポートに失敗したリソースの入力ファイル名を持つ失敗出力ファイルがあります。レスポンスには、入力データの場所に対応する行番号 (lineId)、FHIR レスポンスオブジェクト (UpdateResourceResponse)、およびレスポンスのステータスコード (statusCode) が含まれます。

サンプル出力ファイルは次のようになります。

```
{"lineId":3, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"1 validation error detected: Value 'Patient123' at 'resourceType' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Za-z]{1,256}"}]}, "statusCode":400}
{"lineId":5, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"This property must be an simple value, not a com.google.gson.JsonArray","location":["/EffectEvidenceSynthesis/name"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@telecom'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@gender'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@birthDate'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@address'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@maritalStatus'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@multipleBirthBoolean'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@communication'","location":["/EffectEvidenceSynthesis"]},{"severity":"warning","code":"processing","diagnostics":"Name should be usable as an identifier for the module by machine processing applications such as code generation [name.matches('[A-Z]([A-Za-z0-9_]){0,254}')]","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.status': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.population': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.exposure': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.exposureAlternative': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.outcome': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"information","code":"processing","diagnostics":"Unknown extension http://synthetichealth.github.io/synthea/disability-adjusted-life-years","location":["EffectEvidenceSynthesis.extension[3]"]},{"severity":"information","code":"processing","diagnostics":"Unknown extension http://synthetichealth.github.io/synthea/quality-adjusted-life-years","location":["EffectEvidenceSynthesis.extension[4]"]}]}, "statusCode":400}
{"lineId":7, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"2 validation errors detected: Value at 'resourceId' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Za-z0-9-.]{1,64}; Value at 'resourceId' failed to satisfy constraint: Member must have length greater than or equal to 1"}]}, "statusCode":400}
{"lineId":9, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"Missing required id field in resource json"}]}, "statusCode":400}
{"lineId":15, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"Invalid JSON found in input file"}]}, "statusCode":400}
```

上記の例は、入力ファイルから対応する入力行の 3、4、7、9、15 行で障害が発生したことを示しています。これらの各行の説明は次のとおりです。
+ 行 3 で、入力ファイルの行 3 で`resourceType`指定された が有効でないことがレスポンスで説明されています。
+ 5 行目には、入力ファイルの 5 行目に FHIR 検証エラーがあることがレスポンスで説明されています。
+ 7 行目のレスポンスでは、入力として`resourceId`提供された の検証の問題があることが説明されています。
+ 9 行目のレスポンスでは、入力ファイルには有効なリソース ID が含まれている必要があることが説明されています。
+ 15 行目で、入力ファイルのレスポンスは、ファイルが有効な JSON 形式ではないことです。

## FHIR APIs
<a name="troubleshooting-fhir-apis"></a>

**問題: ***FHIR RESTful APIs の認可を実装するにはどうすればよいですか?*

使用する [データストア認可戦略](getting-started-concepts.md#concept-data-store-authorization-strategy)を決定します。

を使用して SigV4 認可を作成するには AWS SDK for Python (Boto3)、次の例のようなスクリプトを作成します。

```
import boto3
import requests
import json
from requests_auth_aws_sigv4 import AWSSigV4
 
# Set the input arguments
data_store_endpoint = 'https://healthlake.us-east-1.amazonaws.com/datastore/<datastore id>/r4//'
resource_path = "Patient"
requestBody = {"resourceType": "Patient", "active": True, "name": [{"use": "official","family": "Dow","given": ["Jen"]},{"use": "usual","given": ["Jen"]}],"gender": "female","birthDate": "1966-09-01"}
region = 'us-east-1'
 
#Frame the resource endpoint
resource_endpoint = data_store_endpoint+resource_path
session = boto3.session.Session(region_name=region)
client = session.client("healthlake")
 
# Frame authorization
auth = AWSSigV4("healthlake", session=session)
 
# Call data store FHIR endpoint using SigV4 auth

r = requests.post(resource_endpoint, json=requestBody, auth=auth, )
print(r.json())
```

**問題: ** *カスタマーマネージド KMS キーで暗号化されたデータストアに FHIR RESTful APIs を使用するときに`AccessDenied`エラーが表示されるのはなぜですか?*

ユーザーまたはロールがデータストアにアクセスするには、カスタマーマネージドキーと IAM ポリシーの両方に対するアクセス許可が必要です。ユーザーは、カスタマーマネージドキーを使用するために必要な IAM アクセス許可を持っている必要があります。ユーザーがカスタマーマネージド KMS キーを使用するアクセス許可を HealthLake に付与する許可を取り消したり、廃止したりすると、HealthLake は`AccessDenied`エラーを返します。

HealthLake には、顧客データにアクセスし、データストアにインポートされた新しい FHIR リソースを暗号化し、リクエストされたときに FHIR リソースを復号するためのアクセス許可が必要です。詳細については、「アクセス[許可のトラブルシューティング AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html)」を参照してください。

**問題: ** *10MB のドキュメントを使用して HealthLake への FHIR `POST` API オペレーションが`413 Request Entity Too Large`エラーを返しています。*

AWS HealthLake の同期 Create and Update API 制限は 5MB で、レイテンシーとタイムアウトの増加を回避できます。一括インポート API を使用して、 `Binary`リソースタイプを使用して最大 164MB の大きなドキュメントを取り込むことができます。

## NLP 統合
<a name="troubleshooting-nlp-integrations"></a>

**問題: ** * HealthLake の統合自然言語処理機能を有効にするにはどうすればよいですか?*

2022 年 11 月 14 日現在、HealthLake データストアのデフォルトの動作が変更されています。

**現在のデータストア**: 現在の HealthLake データストアはすべて、base64 でエンコードされた`DocumentReference`リソースでの自然言語処理 (NLP) の使用を停止します。つまり、新しい`DocumentReference`リソースは NLP を使用して分析されず、リソースタイプのテキストに基づいて新しい`DocumentReference`リソースは生成されません。既存の`DocumentReference`リソースの場合、NLP を介して生成されたデータとリソースは残りますが、2023 年 2 月 20 日以降は更新されません。

**新しいデータストア**: 2023 年 2 月 20 日以降に作成された HealthLake データストアは、base64 でエンコードされた`DocumentReference`リソースで自然言語処理 (NLP) を実行*しません*。

HealthLake NLP 統合を有効にするには、 を使用してサポートケースを作成します[AWS Support Center Console](https://console.aws.amazon.com/support/home#/)。ケースを作成するには、 にログインし AWS アカウント、**ケースの作成**を選択します。ケースとケース管理の作成の詳細については、「 *サポート ユーザーガイド*」の[「サポートケースとケース管理の作成](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html)」を参照してください。

**問題:** *>統合 NLP で処理できなかった`DocumentReference`リソースを見つけるにはどうすればよいですか?*

`DocumentReference` リソースが有効でない場合、HealthLake は統合された医療 NLP 出力で提供するのではなく、検証エラーを示す拡張機能を提供します。NLP 処理中に検証エラーの原因となった`DocumentReference`リソースを見つけるには、HealthLake の FHIR `search`関数を検索キー **cm-decoration-status** および検索値 **VALIDATION\$1ERROR** とともに使用できます。この検索では、検証エラーの原因となったすべての`DocumentReference`リソースと、エラーの性質を説明するエラーメッセージが一覧表示されます。検証エラーがある`DocumentReference`リソースの拡張フィールドの構造は、次の例のようになります。

```
"extension": [
          {
              "extension": [
                  {
                      "url": "http://healthlake.amazonaws.com/aws-cm/status/",
                      "valueString": "VALIDATION_ERROR"
                  },
                  {
                      "url": "http://healthlake.amazonaws.com/aws-cm/message/",
                      "valueString": "Resource led to too many nested objects after NLP operation processed the document. 10937 nested objects exceeds the limit of 10000."
                  }
              ],
              "url": "http://healthlake.amazonaws.com/aws-cm/"
          }
    ]
```

**注記**  
は、NLP デコレーションによって 10,000 個を超えるネストされたオブジェクトが作成された場合にも発生する`VALIDATION_ERROR`可能性があります。この場合、処理する前にドキュメントを小さなドキュメントに分割する必要があります。

## SQL 統合
<a name="troubleshooting-sql-integrations"></a>

**問題: ** *新しいデータレイク管理者を追加する`permissions error: lakeformation:PutDataLakeSettings`ときに Lake Formation を取得するのはなぜですか?*

IAM ユーザーまたはロールに `AWSLakeFormationDataAdmin` AWS 管理ポリシーが含まれている場合、新しいデータレイク管理者を追加することはできません。以下を含むエラーが表示されます。

```
User arn:aws:sts::111122223333:assumed-role/lakeformation-admin-user is not authorized to perform: lakeformation:PutDataLakeSettings on resource: arn:aws:lakeformation:us-east-2:111122223333:catalog:111122223333 with an explicit deny in an identity-based policy
```

Lake AWS Formation データレイク管理者として IAM ユーザーまたはロールを追加するには、 AWS 管理ポリシー`AdministratorAccess`が必要です。IAM ユーザーまたはロールにも アクションが含まれている`AWSLakeFormationDataAdmin`場合、アクションは失敗します。`AWSLakeFormationDataAdmin` AWS 管理ポリシーには、 AWS Lake Formation API オペレーション の明示的な拒否が含まれています`PutDataLakeSetting`。`AdministratorAccess` 管理ポリシー AWS を使用するためのフルアクセス権を持つ管理者でも、`AWSLakeFormationDataAdmin`ポリシーによって制限できます。

**問題: ** *Amazon Athena SQL 統合を使用するように既存の HealthLake データストアを移行するにはどうすればよいですか?*

2022 年 11 月 14 日より前に作成された HealthLake データストアは機能しますが、SQL を使用して Athena でクエリすることはできません。Athena で既存のデータストアをクエリするには、まず新しいデータストアに移行する必要があります。

**HealthLake データを新しいデータストアに移行するには**

1. 新しいデータストアを作成します。

1. 既存の から Amazon S3 バケットにデータをエクスポートします。

1. Amazon S3 バケットから新しいデータストアにデータをインポートします。

**注記**  
Amazon S3 バケットにデータをエクスポートすると、追加料金が発生します。追加料金は、エクスポートするデータのサイズによって異なります。

**問題: ** *SQL 統合用の新しい HealthLake データストアを作成する場合、データストアのステータスは から変更されません`Creating`。*

新しい HealthLake データストアを作成しようとしたときに、データストアのステータスが**「作成**中」から変更されない場合は、 を使用するように Athena を更新する必要があります AWS Glue Data Catalog。詳細については、[「Amazon Athena ユーザーガイド」の「 AWS Glue データカタログへのstep-by-stepのアップグレード](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html)」を参照してください。 *Amazon Athena *

を正常にアップグレードしたら AWS Glue Data Catalog、HealthLake データストアを作成できます。

古い HealthLake データストアを削除するには、 を使用してサポートケースを作成します[AWS Support Center Console](https://console.aws.amazon.com/support/home#/)。ケースを作成するには、 にログインし AWS アカウント、**ケースの作成**を選択します。詳細については、「 *サポート ユーザーガイド*」の[「サポートケースとケース管理の作成](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html)」を参照してください。

**問題: ** *新しい HealthLake データストアにデータをインポートした後、Athena コンソールが機能しない*

新しい HealthLake データストアにデータをインポートすると、そのデータはすぐに使用できない場合があります。これは、データが Apache Iceberg テーブルに取り込まれる時間を確保するためです。後でもう一度試してください。

**問題: ** *Athena の検索結果を他の AWS サービスに接続するにはどうすればよいですか?*

Athena の検索結果を他の AWS サービスと共有する場合、SQL 検索クエリ`json_extract[1]`の一部として を使用すると問題が発生する可能性があります。この問題を修正するには、 を に更新する必要があります`CATVAR`。

保存結果、**テーブル** (静的）、または**ビュー** (動的) **を作成**しようとすると、この問題が発生する可能性があります。

# AWS SDK での HealthLake の使用
<a name="sdk-general-information-section"></a>

AWS Software Development Kit (SDKsは、多くの一般的なプログラミング言語で使用できます。各 SDK には、デベロッパーが好みの言語でアプリケーションを簡単に構築できるようになる API、コード例、およびドキュメントが提供されています。


| SDK ドキュメント | コード例 | 
| --- | --- | 
| [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp) | [AWS SDK for C\$1\$1 コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp) | 
| [AWS CLI](https://docs.aws.amazon.com/cli) | [AWS CLI コード例](https://docs.aws.amazon.com/code-library/latest/ug/cli_2_code_examples.html) | 
| [AWS SDK for Go](https://docs.aws.amazon.com/sdk-for-go) | [AWS SDK for Go コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2) | 
| [AWS SDK for Java](https://docs.aws.amazon.com/sdk-for-java) | [AWS SDK for Java コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2) | 
| [AWS SDK for JavaScript](https://docs.aws.amazon.com/sdk-for-javascript) | [AWS SDK for JavaScript コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3) | 
| [AWS SDK for Kotlin](https://docs.aws.amazon.com/sdk-for-kotlin) | [AWS SDK for Kotlin コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin) | 
| [AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net) | [AWS SDK for .NET コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3) | 
| [AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php) | [AWS SDK for PHP コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php) | 
| [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell) | [AWS Tools for PowerShell コード例](https://docs.aws.amazon.com/code-library/latest/ug/powershell_5_code_examples.html) | 
| [AWS SDK for Python (Boto3)](https://docs.aws.amazon.com/pythonsdk) | [AWS SDK for Python (Boto3) コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python) | 
| [AWS SDK for Ruby](https://docs.aws.amazon.com/sdk-for-ruby) | [AWS SDK for Ruby コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby) | 
| [AWS SDK for Rust](https://docs.aws.amazon.com/sdk-for-rust) | [AWS SDK for Rust コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1) | 
| [AWS SDK for SAP ABAP](https://docs.aws.amazon.com/sdk-for-sapabap) | [AWS SDK for SAP ABAP コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap) | 
| [AWS SDK for Swift](https://docs.aws.amazon.com/sdk-for-swift) | [AWS SDK for Swift コード例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift) | 

**可用性の例**  
必要なものが見つからなかった場合。このページの下側にある [**Provide feedback**] リンクから、コードの例をリクエストしてください。