記事
· 2024年6月12日 4m read

Auth0 と InterSystems IRIS FHIR サーバーを使った SMART On FHIR アプリケーションの開発 - 入門編

はじめに

先日、@Patrick Jamieson が開催した素晴らしいハンズオンに参加してきました。そこでは、SMART On FHIR が定義したプロトコルに従って Angular アプリケーションを IRIS FHIR サーバーとともに構成したセッションでした。非常に深い興味を得たため、独自に Andular アプリケーションを開発し、そこから学んだことを活用してコミュニティに共有することにしました。

SMART On FHIR

SMART On FHIR について Google ではどのように説明しているのか見てみましょう。

SMART On FHIR は電子健康記録(EHR)システムの情報にアプリケーションがアクセスできるようにするためのデータ規格です。 アプリケーション開発者は、その規格を採用した EHR システムに接続する単一のアプリケーションを作成できます。

SMART On FHIR では、以下の主な概念を処理します。

  • OAuth2 または OpenID による代理認証と承認。
  • 定義されたコンテキストにおける FHIR リソースの操作。
  • HTTPS 通信。

プロジェクトのアーキテクチャ

この演習では、Docker と Auth0 サービスの両方で以下の要素を構成しました。

  • フロントエンドとして機能する Angular で開発されたアプリケーション。このアプリケーションは SMART On FHIR の原則に従って開発されています。
  • Angular で開発されたアプリケーションを公開する NGINX Web サーバーおよびリバースプロキシ。
  • Auth0 が提供する OAuth2 による認証および承認サービス。
  • FHIR サーバーをデプロイし、Docker イメージですでに提供されている Apache サーバーを含む Web ゲートウェイを通じて接続する InterSystems IRIS。

Auth0

ユーザーの認証と承認をこの目的でデプロイされた別の IRIS サーバーに委任することもできますが、ここでは、Auth0 が提供するサービスを使用することにします。

Auth0 とは?

Auth0 は、プラットフォームの認証と承認を処理するメカニズム全体を提供するサービスです。

Auth0 には、あらゆるプロジェクトに簡単に統合できる多様な言語に特化したライブラリもあるため、SMART On FHIR に基づく開発において必ず考慮できるオプションです。

アプリケーションでの Auth0 の使用

OAuth2 の使用は SMART On FHIR を使用するための必要要件であるため、認証、承認、およびアプリケーションアクセスの通常のプロセスに OAuth2 サーバーを含める必要があります。 以下の図は、Auth0 サービスを使ってシステムに送信される情報が辿るパスを示しています。

では、プロセスを分析しましょう。

  • ログインリクエスト:
    1. ログインリクエスト: ユーザーがインターネットブラウザを使用してアプリケーションにアクセスし、ログインをリクエストします。
    2. ログインリクエスト: Angular アプリケーションがそのリクエストを Auth0 サービスに転送します。
    3. ログインページ: Auth0 がユーザーのインターネットブラウザを開発者が作成したページにリダイレクトします。
  • Auth0 での認証:
    1. ユーザー認証情報: ユーザーが、Auth0 に登録されたメールアドレスとパスワードを入力します。
    2. 認証と承認: Auth0 がデータを検証し、ユーザーに割り当てられたコンテキストを含む Access_token を生成します。
    3. Access_token のレスポンスとリダイレクト: Auth0 が生成されたトークンを含むレスポンスをプロジェクト構成に指定された URL にリダイレクトします。
    4. 患者の画面: Angulaar アプリケーションが、個人情報を登録するページをユーザーに表示します。
  • FHIR リソースレコード:
    1. 患者の保存: ユーザーが個人情報をフォームに入力し、Angular アプリケーションがフォームを FHIR Patient リソースのフォーマットで JSON オブジェクトに変換します。
    2. POST リクエスト: Angular アプリケーションが IRIS にデプロイされている FHIR サーバーに、認証トークンとしての access_token をリクエストヘッダーに含めて HTTP POST 呼び出しを送信します。
    3. POST レスポンス: Web ゲートウェイを通じて POST リクエストを受け取ると、IRIS はトークンの有効性とリクエストのコンテキストをチェックします。 すべてが正しければ、受信したリソースを検証して FHIR サーバーに登録し、新しいリソースの作成を示す HTTP 201 を返します。 また、ヘッダーに、新しいリソースに割り当てられた識別子が含められます。
    4. 処理成功: Angular アプリケーションが、主な機能を示す画面にユーザーをリダイレクトします。

ログインが完了すると、プロジェクトに含まれる Auth0 ライブラリが、FHIR サーバーに対して発行するすべてのリクエストを傍受し、Auth0 から受け取るアクセストークンを含めます。

今後の予定

次の記事では、関りのある各システムを構成し、最終的に Angular アプリケーションに接続する方法を説明します。 記事の公開を待ちきれない方は、この記事にリンクされた OpenExchange プロジェクトに関連付する GitHub で README.md をお読みください。Auth0 と InterSystems IRIS の両方を構成する方法が詳しく説明されています。

Awfully Good: Stay Tuned (1992) with John Ritter

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください