SMART on FHIR の概要
重要
Azure API for FHIR は、2026 年 9 月 30 日に廃止されます。 移行戦略に従って、その日までに Azure Health Data Services FHIR® サービスに切り替えてください。 Azure API for FHIR が廃止されたため、2025 年 4 月 1 日以降、新しいデプロイは許可されません。 Azure Health Data Services FHIR サービス は、お客様が他の Azure サービスへの統合を使用して、FHIR、DICOM、および MedTech サービスを管理できるようにする、進化したバージョンの Azure API for FHIR です。
代替医療アプリケーションと再利用可能なテクノロジ (SMART on FHIR®) は、アプリケーションがデータ ストアを介して臨床情報にアクセスできる医療基準です。 OAuth2 や OpenID Connect などのオープン標準に基づくセキュリティ層を FHIR インターフェイスに追加して、EHR システムとの統合を可能にします。 SMART on FHIR を使用すると、次のような重要な利点が得られます。
- アプリケーションには、FHIR リポジトリに対する認証/認可を取得するための既知の方法があります。
- SMART on FHIR を使用して FHIR リポジトリにアクセスするユーザーは、リポジトリ内のすべてのデータにアクセスするのではなく、ユーザーに関連付けられているリソースに制限されます。
- ユーザーは、SMART 臨床スコープを使用することで、さらに制限されたデータ セットへのアクセスをアプリケーションに許可することができます。
次のチュートリアルでは、FHIR サービスを使用して SMART on FHIR アプリケーションを有効にする手順について説明します。
前提条件
- FHIR サービスのインスタンス
- .NET SDK 6.0
- クロスオリジン リソース共有 (CORS) を有効にする
- Microsoft Entra ID でパブリック クライアント アプリケーションを登録する
- アプリケーションを登録した後、クライアント アプリケーションの
applicationId
を書き留めておきます。
- アプリケーションを登録した後、クライアント アプリケーションの
- リソースを作成し、ロールの割り当てを追加するために、FHIR サービスの Azure サブスクリプションにアクセスできることを確かめます。
Samples OSS を使用した SMART on FHIR (SMART on FHIR (Enhanced))
手順 1: FHIR SMART ユーザー ロールを設定する
「ユーザーの管理: ロールへのユーザーの割り当て」に一覧表示されている手順に従います。 "FHIR SMART ユーザー" ロールに追加されたユーザーは、自身の要求 (fhirUser
クレームや臨床スコープ クレームを含む、アクセス トークンを持つリクエストなど) が SMART on FHIR 実装ガイドに準拠している場合、FHIR サービスにアクセスできます。 このロールのユーザーに付与されるアクセスは、fhirUser
コンパートメントに関連付けられているリソースと臨床スコープの制限によって制限されます。
手順 2: FHIR サーバーとサンプルの統合
Azure Health Data と AI の Samples OSS の手順に従います。 これにより、FHIR サーバーと他の Azure サービス (APIM、Azure Functions など) の統合が可能になります。
Note
サンプルはオープンソース コードであり、使用する前に GitHub で情報とライセンス条項を確認する必要があります。 これらは Azure Health Data Service の一部ではなく、Microsoft サポートではサポートされていません。 これらのサンプルを使えば、Microsoft Entra ID を ID プロバイダーのワークフローとして使用し、Azure Health Data Services とその他のオープンソース ツールを併用して ONC (g)(10) への準拠を実証する方法を示すことができます。
SMART on FHIR プロキシ
クリックして展開します。
Note
これは、前述の SMART on FHIR (Enhanced) へのもう 1 つのパスです。 SMART on FHIR プロキシ オプションを使用すると、EHR 起動シーケンスのみが有効になります。
手順 1: クライアント アプリケーションの管理者の同意を設定する
SMART on FHIR を使用するには、まずアプリを認証して承認する必要があります。 SMART on FHIR を初めて使用するときは、アプリが FHIR リソースにアクセスできるように管理者の同意を得る必要もあります。
アプリに所有権ロールがない場合は、アプリの所有者に連絡し、アプリで管理者の同意を付与するように依頼します。
管理者特権がある場合は、次の手順を実行して管理者の同意を自分自身に直接付与します。 (アプリでプロンプトが表示されたら、後で管理者の同意を自分自身に付与することもできます)。所有者として他のユーザーを追加するのと同じ手順を実行して、このアプリの登録を表示および編集できます。
自分自身または別のユーザーをアプリの所有者として追加するには:
- Azure portal で、[Microsoft Entra ID] に移動します。
- 左側のメニューで、[アプリの登録] を選択します。
- 作成したアプリの登録を検索し、それを選択します。
- 左側のメニューの [管理] で、[所有者] を選択します。
- [所有者の追加] を選択し、管理者の同意を得たい自分自身またはユーザーを追加します。
- [保存] を選びます。
手順 2: SMART on FHIR プロキシを有効にする
SMART on FHIR では、Audience
の識別子 URI が FHIR サービスの URI と同じである必要があります。 Azure API for FHIR の標準構成では、Audience
値として https://azurehealthcareapis.com
が使用されます。 ただし、FHIR サービスの特定の URL (https://MYFHIRAPI.azurehealthcareapis.com
など) と一致する値を設定することもできます。 これは、SMART on FHIR プロキシを操作する際に必要になります。
Azure API for FHIR インスタンスの [認証] 設定で SMART on FHIR プロキシを有効にするには、[SMART on FHIR プロキシ] チェック ボックスをオンにします。
SMART on FHIR プロキシは、SMART on FHIR アプリと Microsoft Entra ID の間の仲介役として機能します。 認証応答 (認証コード) は、アプリ自体ではなく、SMART on FHIR プロキシに送信される必要があります。 その後、応答はプロキシによってアプリに転送されます。
この 2 段階の認証コードのリレーのため、Microsoft Entra クライアント アプリケーションの応答 URL (コールバック) を、SMART on FHIR プロキシの応答 URL と SMART on FHIR アプリの応答 URL を組み合わせた URL に設定する必要があります。 結合された応答 URL は、次の形式になります。
https://MYFHIRAPI.azurehealthcareapis.com/AadSmartOnFhirProxy/callback/aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
この応答で、aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
は SMART on FHIR アプリの応答 URL であり、URL セーフな base64 エンコードされたバージョンです。 SMART on FHIR アプリ起動ツールの場合、アプリがローカルで実行されていると、応答 URL は https://localhost:5001/sampleapp/index.html
になります。
次のようなスクリプトを使用すると、結合された応答 URL を生成できます。
$replyUrl = "https://localhost:5001/sampleapp/index.html"
$fhirServerUrl = "https://MYFHIRAPI.azurewebsites.net"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($ReplyUrl)
$encodedText = [Convert]::ToBase64String($bytes)
$encodedText = $encodedText.TrimEnd('=');
$encodedText = $encodedText.Replace('/','_');
$encodedText = $encodedText.Replace('+','-');
$newReplyUrl = $FhirServerUrl.TrimEnd('/') + "/AadSmartOnFhirProxy/callback/" + $encodedText
Microsoft Entra ID 用に先ほど作成したパブリック クライアント アプリケーションにこの応答 URL を追加します。
手順 3: テスト患者を取得する
Azure API for FHIR と SMART on FHIR プロキシをテストするには、データベースに少なくとも 1 人の患者が必要です。 API をまだ操作しておらず、データベースにデータがない場合は、「Postman を使用して FHIR サービスにアクセスする」を参照して、患者を読み込んでください。 特定の患者の ID を書き留めておきます。
手順 4: SMART on FHIR アプリ起動ツールをダウンロードする
オープンソースの FHIR Server for Azure リポジトリには、簡単な SMART on FHIR アプリ起動ツールとサンプルの SMART on FHIR アプリが含まれています。 このチュートリアルでは、この SMART on FHIR 起動ツールをローカルで使用して設定をテストします。
次のコマンドを使用して、GitHub リポジトリをクローンし、アプリケーションに移動できます。
git clone https://github.com/Microsoft/fhir-server
cd fhir-server/samples/apps/SmartLauncher
このアプリケーションには、いくつかの構成設定が必要です。それは、appsettings.json
で設定できます。
{
"FhirServerUrl": "https://MYFHIRAPI.azurehealthcareapis.com",
"ClientId": "APP-ID",
"DefaultSmartAppUrl": "/sampleapp/launch.html"
}
dotnet user-secrets
機能を使用することをお勧めします。
dotnet user-secrets set FhirServerUrl https://MYFHIRAPI.azurehealthcareapis.com
dotnet user-secrets set ClientId <APP-ID>
次のコマンドを使用してアプリケーションを実行します。
dotnet run
手順 5: SMART on FHIR プロキシをテストする
SMART on FHIR アプリ起動ツールを起動した後、ブラウザーで https://localhost:5001
に移動できます。ここには、次の画面が表示されます。
[患者]、[外来診察]、または [開業医] の情報を入力すると、[起動コンテキスト] が更新されたことがわかります。 Azure API for FHIR を使用している場合、起動コンテキストは、患者や開業医などの情報を含む JSON ドキュメントにすぎません。 この起動コンテキストは base64 でエンコードされており、launch
クエリ パラメーターとして SMART on FHIR アプリに渡されます。 SMART on FHIR 仕様によれば、この変数は SMART on FHIR アプリに対して非透過的であり、ID プロバイダーに渡されます。
SMART on FHIR プロキシでは、この情報を使用して、トークン応答のフィールドが設定されます。 SMART on FHIR アプリでは、これらのフィールドを使用して、データの要求対象となる患者と画面上でのアプリケーションの表示方法を制御 "できます"。 SMART on FHIR プロキシでは、以下のフィールドがサポートされています。
patient
encounter
practitioner
need_patient_banner
smart_style_url
これらのフィールドは、アプリにガイダンスを提供することを意図しており、セキュリティ情報を伝達するものではありません。 SMART on FHIR アプリケーションでは、これらを無視できます。
SMART on FHIR アプリ起動ツールによって、ページ下部にある [Launch URL]\(起動 URL\) 情報が更新されることに注意してください。
[起動] を選択してサンプル アプリを起動します。
SMART on FHIR プロキシから SMART on FHIR (Enhanced) に移行する
重要
SMART on FHIR プロキシは、2026 年 9 月に廃止されますので、その日までに SMART on FHIR (Enhanced) に移行してください。 2026 年 9 月 以降、SMART on FHIR プロキシに依存しているアプリケーションでは、FHIR サービスにアクセスするときにエラーが報告されます。
SMART on FHIR (Enhanced) は、SMART on FHIR プロキシと比較してより多くの機能を提供します。 SMART on FHIR(Enhanced) は、「SMART on FHIR 実装ガイド (v 1.0.0)」と「§170.315(g)(10) 患者および住民サービス基準の標準化 API の要件」を満たすと見なされます。次の表に、SMART on FHIR プロキシと SMART on FHIR (Enhanced) の違いを示します。
機能 | SMART on FHIR (Enhanced) | SMART on FHIR プロキシ |
---|---|---|
スタンドアロン起動をサポート | はい | いいえ |
EHR 起動をサポート | はい | はい |
スコープの制限をサポート | はい | いいえ |
ファースト パーティの Azure 製品に依存する | はい。Azure API Management (APIM) などの Azure 製品を統合する必要があります | いいえ |
Microsoft サポート | FHIR サービスをサポートしています。オープン ソース サンプルのサポートは、GitHub を介して報告および監視する必要があります | FHIR サービスをサポート |
移行手順
- 手順 1: FHIR SMART ユーザー ロールを設定する。「ユーザーの管理: ロールへのユーザーの割り当て」セクションに一覧表示されている手順に従います。 SMART ユーザー ロールに追加されたユーザーは、要求が SMART on FHIR 実装ガイドに準拠している場合、FHIR サービスにアクセスできます。
- 手順 2: Azure Health Data と AI OSS サンプルの下に SMART on FHIR サンプルをデプロイする
- 手順 3: FHIR サービス URL のエンドポイントを '{{BASEURL_FROM_APIM}}/smart' に更新する。
- 手順 4: FHIR サービスの [認証] ブレードで、SMART on FHIR プロキシ設定をオフにする。
ご質問がある場合は、Microsoft Q&A でコミュニティのエキスパートから回答を得ることができます。 テクニカル サポートの場合は、サポート リクエストを作成することもできます。
次のステップ
SMART on FHIR 機能の有効化について学習したので、検索パラメーター、修飾子、その他の FHIR 検索メソッドを使用して検索する方法の詳細について、検索サンプルのページを参照してください。
Note
FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。