Auth0 と InterSystems IRIS FHIR サーバーを使った SMART On FHIR アプリケーションの開発 - Angular アプリケーション
Auth0 と InterSystems IRIS FHIR リポジトリ使った SMART On FHIR に関する連載最終回では、Angular 16 で開発したアプリケーションをレビューします。
このソリューションに定義されたアーキテクチャがどのように構成されているかを思い出しましょう。
フロントエンドのアプリケーションは 2 列目で、ご覧のように 2 つのことを行います。
- ログインリクエストを Auth0 にリダイレクトし、レスポンスを受信する。
- REST 経由でリクエストを FHIR サーバーに送信し、そのレスポンスを受信する。
Angular
Angular は TypeScript が開発し、Google が管理するオープンソースの Web アプリケーションフレームワークで、シングルページ Web アプリケーションの作成と管理に使用されます。 この「シングルページアプリケーション」デザイン手法によって、はるかに動的なユーザー向けアプリケーションを設計することができます。 最初の記事で説明したとおり、ここではアプリケーションサーバーとリバースプロキシとして NGINX を使用し、呼び出しヘッダーがサーバーの呼び出しヘッダーに一致するように変更して、CORS から派生する問題を回避します。
アプリケーションのデザイン
モバイルアプリケーションのデザインをシミュレートするように、Angular Material を使ってアプリケーションを設計しました。 この例では、アプリケーションは心拍数、血圧、および体重などの一連の患者データを記録することを目的としており、このために、2 種類の FHIR リソースをサーバーに送信します。1 つ目はユーザーがデータを登録する Patient タイプリソースで、2 つ目は、送信しようとしている各タイプのデータを送信する Observation リソースに対応します。
アプリケーションには、記録されたデータの変化がグラフで表示されます。
ログイン画面
ユーザーがパス https:\\localhost にアクセスすると最初の画面が表示され、そこからログインをリクエストできます。
ログインボタンをクリックすると、アプリケーションは構成済みの API に対して有効化された Auth0 ページに自動的にユーザーをリダイレクトします。
.png)
ユーザー名とパスワードを入力すると、Auth0 はデータへのアクセス許可をアプリケーションに付与するよう求めます。 データへのアクセスが確認されたら、Auth0 は、構成プロセス中に指定した URL にリダイレクトします。 アクセストークンが生成されると、Auth0 ライブラリは、サーバーに対して発行するすべての呼び出しのヘッダーにそのトークンを含めるようになります。 これは以下の図で確認できます。
.png)
最初の画面
ログインが完了すると、ログインユーザーが使用できる情報を FHIR サーバーにリクエストする最初の通信が発生します。これには、パラメーターによるクエリを使用して、次のような GET 呼び出しを送信します。
https://localhost:8443/smart/fhir/r5/Patient?email=lperezra%40intersystems.com
サーバーのレスポンスは次の情報を含む Bundle タイプリソースです。
{
"resourceType":"Bundle",
"id":"8c5b1efd-cfdd-11ee-a06b-0242ac190002",
"type":"searchset",
"timestamp":"2024-02-20T10:48:14Z",
"total":0,
"link":[
{
"relation":"self",
"url":"https://localhost:8443/smart/fhir/r5/Patient?email=lperezra%40intersystems.com"
}
]
}ご覧のように、そのメールアドレスを使用する患者は合計 0 人であるため、アプリケーションにはデータを登録できる最初の画面が表示されます。
ご覧のように、メールアドレスのフィールドにはログインユーザーのアドレスが入力されています。これは、最初のクエリで見たように、メールアドレスを ID として使用するためです。 フォームの入力が完了したら、POST 経由で次のような呼び出しを送信します。
https://localhost:8443/smart/fhir/r5/Patient
Patient リソースによって形成されたメッセージ本文:
{
"resourceType":"Patient",
"birthDate":"1982-03-08",
"gender":"male",
"identifier":[
{
"type":{
"text":"ID"
},
"value":"12345678A"
}
],
"name":[
{
"family":"PÉREZ RAMOS",
"given":[
"LUIS ÁNGEL"
]
}
],
"telecom":[
{
"system":"phone",
"value":"600102030"
},
{
"system":"email",
"value":"lperezra@intersystems.com"
}
]
}患者データがサーバーに登録され、患者のクエリによって結果が返されるようになったため、さまざまな経過観察を記録できる準備が整いました。 最初の画面がどのように表示されるか見てみましょう。
.png)
経過観察画面
患者のデータを送信したのと同じ方法で、特定の画面から経過観察を送信します。
.png)
サーバーに送信されたリソースごとに、アプリケーションは新しい点をグラフに追加します。
.png)
これを行うために、そのユーザーに属する Observation タイプリソースをリクエストするクエリをサーバーに発行します。
https://localhost/smart/fhir/r5/Observation?patient=Patient/1
すると、サーバーはもう一度、その患者に対して記録されたすべての経過観察を含む Bundle タイプリソースを返します。
.png)
結果が取得されたので、アプリケーションはすべての数値を抽出し、関連するグラフを構築します。
まとめ
この記事と前回の 2 つの記事で確認したように、SMART On FHIR アプリケーションの設計と作成はそれほど複雑ではなく、FHIR サーバーで使用できるすべての機能を利用するアプリケーションを素早くアジャイルに構築することができます。
この種のアプリケーションでは、データに対する CRUD タイプの操作を管理する複雑なバックエンドの開発が不要であり、OAuth2 を使用することで、アプリケーションのユーザーを管理する必要もありません。その機能は Auth0 または選択した認証・承認サーバーに任せることができます。
SMART On FHIR では、簡単かつ単純な方法で、患者と医療専門家に対し医療データ管理に必要なツールを提供することができます。
お読みいただきありがとうございました!
.png)