# 同意とアクセスモデル

> 誰が何を見るか：プロジェクトの分離、ペアワイズID、付与、書き込み権限、来歴、そして患者がアクセス権を持つすべてのアプリケーションについて見ることのできる情報。

Source: https://developers.anpheros.com/ja/guides/consent

**ルール：** 患者の同意を得て、組織は他のクリニックが記述したものを含むレコード全体を見ることができますが、自身が記述したもののみを変更または削除できます。すべてのリソースの各バージョンには、それを記述したプロジェクトと、そのプロジェクトが記述した組織が記録されます。

## 誰が何を見るか
- **プロジェクト**（APIキー）は、自身が作成した患者を見ることができます。**グラント**（OAuthトークン）の下では、アプリケーションは、付与されたスコープとカテゴリフィルターに限定され、すべてのライターにわたって、正確に1人の患者を見ることができます。それ以外のものはすべて404を返します。決して403は返さないため、IDを推測することはできません。
- **ペアワイズID:** 各プロジェクトは、同じ人物に対して独自のIDを受け取ります。内部IDはプラットフォームから決して外部に出ません。スコープ外の患者への参照は、プロジェクトごとに異なる不透明なトークンでマスクされます。
- **ディレクトリ**（Organization、Practitioner、PractitionerRole）: 参照が解決されるように、プレーン全体でIDによって読み取り可能です。プロジェクト内でのみ検索可能であり、`X-Anpheros-Acting-As` / `X-Anpheros-On-Behalf-Of` として使用できるのは、自身のものだけです。
- **サンドボックスと本番環境**は異なるデータベースです。サンドボックスキーは、物理的に実際の患者に到達することはできません。

## 書き込みと所有権
- リソースの各バージョンにおける`project_id` = 書き込み者。他のプロジェクトによる更新/削除 → 403 エラーと説明が表示されます。代わりに独自のソースリソースを書き込んでください。
- `Provenance.agent.onBehalfOf` = 書き込み時のクリニック/組織: `X-Anpheros-On-Behalf-Of`、それ以外の場合は、acting PractitionerRole の組織、それ以外の場合はプロジェクトの組織。
- すべての書き込みは、Provenance リソースと監査行 (誰が、何を、いつ、どのグラントで、どのアプリケーションで、どのソースフィンガープリントから) を生成します。

## 患者が見るもの
`/me/patients/{id}/grants` は、アクセス権を持つすべてのアプリケーション、そのスコープ、および有効期限を一覧表示します。`…/access-log` は、同意 **および** プロジェクト固有のキーの下で、各読み取りまたは書き込みを一覧表示します。取り消しは次のリクエストで有効になります。アプリケーションはリフレッシュして戻ることはできません。
`format=fhir` を使用すると、アクセスログは FHIR R4 `AuditEvent` リソースのバンドルとして返されます。これは IHE Basic Audit Log Patterns (タイプ `rest`、サブタイプとしてのインタラクション、エージェントとしてのアプリケーションおよびそれを通じて動作する人物、エンティティとしての患者およびリソース、臨床データなし) に基づいて形成されるため、別のシステムがそれを個人の記録へのアクセス履歴のビューにマージできます。

各 Provenance リソースが記録するものと設定方法: [医療データプロベナンスの説明](https://developers.anpheros.com/guides/medical-data-provenance)。

## SMART Health Links (QRコードまたはリンクによる共有)

ユーザーは、アプリケーションを介さずに自身の記録を共有できます。`POST /me/patients/{id}/shl` は、**緊急時**サブセット（アレルギー、投薬、問題、予防接種 — 結果や履歴は含まない）または**完全版**の International Patient Summary のための [SMART Health Link](https://hl7.org/fhir/uv/smart-health-cards-and-links/) を、オプションのパスコードと有効期限付きで作成します。レスポンスには、`shlink:/…` URI（QRコード用）と `/shl/view` 上のビューアのアドレスが含まれ、これは任意のブラウザで開くことができます。スキャンしたユーザーはマニフェストURLにPOSTし、リンク内のキーで暗号化された JWE（`dir` + `A256GCM`）としてサマリーを受け取ります。あらゆるSMART Health Linkリーダーが機能します。

- コンテンツは各オープン時に生成されます（フラグ `L`、ステータス `can-change`）。そのため、電話に保存されたカードは常に最新の状態に保たれます。
- パスコード（フラグ `P`）はサーバーでチェックされます。10回間違った試行の後、リンクは機能しなくなります。
- `GET /me/patients/{id}/shl` は、各リンクがどのくらいの頻度でいつ開かれたかを示します。`…/shl/{link}/revoke` は一度に1つのリンクを無効にします。すべてのオープンはアクセスログに記録されます。
- ユーザーの内部IDはプラットフォームから決して漏れません。ドキュメントはリンクの仮名でユーザーを識別します。

## AIエージェントが提案し、人間が決定する

人間の同意のもと、AIエージェント（例：MCP経由で接続されたアシスタントなど、エージェントとして登録されたアプリケーション）による書き込み、または`author_type` `ai` を使用した書き込みは、即座には適用されません。プラットフォームがそれを検証し、提案ID（ヘッダー`Anpheros-Proposal`）とともに`202 Accepted` で応答します。レコードに変更はありません。人間は`GET /me/patients/{id}/proposals` で、それが何であるか、どのアプリケーションから送信されたかを確認し、承認または却下します（`…/proposals/{proposal}/accept` または `…/reject`）。承認された提案は、送信されたとおりに書き込まれ、AIによって書かれたものとしてマークされます（HL7 AI Transparency）。レコードを閲覧できるプロジェクトには、薄い`proposal.created` Webhook が届きます。プロジェクト自身のキーを使用して、プロジェクトが作成したレコードに書き込まれたものは、保留されません。
