次の方法で共有


SMART on FHIR の概要

代替医療アプリケーションと再利用可能なテクノロジ (SMART on FHIR) は、アプリケーションがデータ ストアを介して臨床情報にアクセスできる医療標準です。 OAuth2 や OpenID Connect などのオープン標準に基づくセキュリティレイヤーを FHIR インターフェイスに追加して、EHR システムとの統合を可能にします。 SMART on FHIR を使用すると、少なくとも 3 つの重要な利点があります。

  • アプリケーションには、FHIR リポジトリへの認証/承認を取得するための既知の方法があります。
  • SMART on FHIR を使用して FHIR リポジトリにアクセスするユーザーは、リポジトリ内のすべてのデータにアクセスするのではなく、ユーザーに関連付けられているリソースに制限されます。
  • ユーザーは、SMART 臨床スコープを使用して、さらに制限されたデータ セットへのアクセス権をアプリケーションに付与できます。

以下のチュートリアルでは、FHIR サービスで SMART on FHIR アプリケーションを有効にする手順について説明します。

前提条件

AHDS サンプル OSS を使用した FHIR での SMART (SMART on FHIR(Enhanced))

手順 1: FHIR SMART ユーザー ロールを設定する

ユーザーの管理: ロールへのユーザーの割り当て」セクションに記載されている手順に従います。 ロールに追加されたすべてのユーザー - "FHIR SMART User" は、要求が SMART on FHIR 実装ガイド (fhirUser 要求と臨床スコープ要求を含むアクセス トークンを持つ要求など) に準拠している場合、FHIR サービスにアクセスできます。 このロールのユーザーに付与されるアクセスは、fhirUser コンパートメントに関連付けられているリソースと臨床スコープの制限によって制限されます。

手順 2: FHIR サーバーとサンプルの統合

Azure Health Data Service Samples OSS の手順に従います。 これにより、FHIR サーバーと他の Azure サービス (APIM、Azure 関数など) の統合が可能になります。

注意

サンプルはオープンソース コードであり、使用する前に GitHub で情報とライセンス条項を確認する必要があります。 これらは Azure Health Data Service の一部ではなく、Microsoft サポートでサポートされていません。 これらのサンプルは、AZURE Active Directory を ID プロバイダー ワークフローとして使用して、Azure Health Data Services とその他のオープンソース ツールを一緒に使用して ONC (g)(10) コンプライアンスを実証する方法を示すために使用できます。

FHIR プロキシ上の SMART

クリックして展開!

注意

これは、前述の SMART on FHIR(Enhanced) のもう 1 つのオプションです。 SMART on FHIR Proxy オプションでは、EHR 起動シーケンスのみが有効になります。

FHIR で SMART を使用するには、まずアプリの認証と承認を行う必要があります。 FHIR で SMART を初めて使用する場合は、アプリが FHIR リソースにアクセスできるように、管理者の同意を得る必要もあります。

アプリに所有権ロールがない場合は、アプリの所有者に連絡し、アプリで管理者の同意を付与するように依頼します。

管理者特権がある場合は、次の手順を実行して、管理者の同意を自分に直接付与します。 (アプリでメッセージが表示されたら、後で管理者の同意を自分に付与することもできます)。同じ手順を実行して、他のユーザーを所有者として追加して、このアプリの登録を表示および編集できます。

自分または別のユーザーをアプリの所有者として追加するには:

  1. Azure portal で、[Azure Active Directory] に移動します。
  2. 左側のメニューで、[ アプリの登録] を選択します。
  3. 作成したアプリ登録を検索し、それを選択します。
  4. 左側のメニューの [ 管理] で、[ 所有者] を選択します。
  5. [ 所有者の追加] を選択し、管理者の同意を得たい自分またはユーザーを追加します。
  6. [保存] を選びます。

手順 2: FHIR プロキシで SMART を有効にする

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 プロキシは、SMART on FHIR アプリと Azure AD の仲介役として機能します。 認証応答 (認証コード) は、アプリ自体ではなく、SMART on FHIR プロキシに送信される必要があります。 その後、応答はプロキシによってアプリに転送されます。

この 2 段階の認証コードのリレーのため、Azure AD クライアント アプリケーションの応答 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

Azure AD 用に先ほど作成したパブリック クライアント アプリケーションにこの応答 URL を追加します。

パブリック クライアントに対して応答 URL を構成する方法を示すスクリーンショット。

手順 3: 検査患者を取得する

Azure API for FHIR と SMART on FHIR プロキシをテストするには、データベースに少なくとも 1 人の患者が必要です。 API をまだ操作しておらず、データベースにデータがない場合は、「 Postman を使用して FHIR サービスにアクセスして 患者を読み込む」を参照してください。 特定の患者の ID を書き留めておきます。

手順 4: FHIR アプリ起動ツールで SMART をダウンロードする

オープンソースの 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 に移動できます。ここには、次の画面が表示されます。

FHIR アプリ起動ツールの SMART のスクリーンショット。

[Patient]\(患者\)[Encounter]\(外来診察\) 、または [Practitioner]\(開業医\) の情報を入力すると、 [Launch context]\(起動コンテキスト\) が更新されたことがわかります。 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 機能の有効化について学習したので、検索パラメーター、修飾子、およびその他の FHIR 検索方法を使用して検索する方法の詳細については、検索サンプル ページを参照してください。

FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。