FHIRアプリケーション構築の基礎
このパスでは、InterSystems IRIS for Health™ または HealthShare® Health Connect を使用して HL7® FHIR® アプリケーションを構築するための基本を学習します。
最初にFHIR エンドポイントを設定し、FHIR リソースの入力や変換方法を学習します。また、API を管理し、クライアントアプリケーションから FHIR リソースを参照する方法も学習します。
はじめて FHIR について学習する方は、HL7 FHIRとは からはじめてみてください。
InterSystems 製品を利用したシステム統合処理についての前提知識を確認される場合は以下コンテンツをご利用ください。
-
InterSystems製品の基本構造について
✅ 記事:【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その2:InterSystems IRIS で開発をはじめよう!
-
InterSystems Interoperability(相互運用性)概要を確認する
以下のビデオの12分以降をご覧ください。
-
InterSystems Interoperability(相互運用性)をシリーズ記事のサンプルコードを見ながら学習する
英語のオンラインコースもあります
1. 
最初に、医療用文書の標準フォーマットとして、また医療相互運用性にとって FHIR が重要である理由を学び、InterSystems IRIS for Health がどのように FHIR インテグレーションとアプリケーション開発をサポートしているかを確認しましょう。
-
ビデオ(日本語):HL7® FHIR® × InterSystems IRIS for Health
-
ビデオ(日本語字幕):FHIR - 未来のために設計された医療データスタンダード “FHIR A Healthcare Data Standard Designed for the Future”
英語ビデオもあります
2. 
IRIS for Health は、FHIR データを格納する FHIR エンドポイントを作成でき、他の FHIR プロファイルをサポートするように構成することができます。
InterSystems IRIS for Health が受信する HL7® CDA®、CSV、HL7® V2、XML データを FHIR フォーマットに変換する方法をご覧ください。
3. 
InterSystems IRIS for Health を使用して、Summary Document Architecture(SDA)と組み込みの変換を使用して、受信データを FHIR フォーマットに変換します。
- ビデオ:他形式データからFHIR への変換
英語ビデオやオンラインコース
ビデオ(英語):Converting Legacy Data to HL7 FHIR R4 in InterSystems IRIS for Health
オンラインコース(英語):Transforming Data into the HL7 FHIR Format
InterSystems IRIS for Health™ または HealthShare® Health Connect を使用して、医療システム間のデータ交換に一般的に使用されている HL7® FHIR® フォーマットにデータを変換する方法をお試しいただけます。
また、後半では、ダイナミックオブジェクトを使用して FHIR データを操作する方法を学びます。このコースを通して、HL7 V2 リソースを FHIR フォーマットに変換する方法を体験できます。
- この他に、InterSystems の内部形式であるSDAを使用せず、JSONTemplateエンジン を使い、FHIRリソースのような複雑なJSONフォーマットを簡単に生成する方法も用意しています。
このテンプレートエンジンは、FHIRに限らず複雑なJSONフォーマットを生成するのに役立つエンジンです。
JSONテンプレートエンジンを利用して FHIR リソースの JSON を生成される方法については、以下ビデオで説明しています。
-
講師付きトレーニングコースで使用している CSVからFHIRリソースを作成するFHIRファサード のサンプルコードを公開しています。
JSON テンプレートエンジンを利用して、どのように CSV から FHIR リソース変換しているか、については、README をご参照ください。
上記内容をカバーする講師付きトレーニングもご提供しています
CSV から FHIR への変換
JSON テンプレートエンジンを利用した変換方法を習得できるコースです。 作成例として、CSV で入力された情報から FHIR リソースを作成し、IRIS に用意したFHIRリポジトリに登録する流れを体験します。
SSMIX2 から FHIR への変換
SDA 経由の変換を体験できるコースです。
教育サービス担当まで下記ページ末尾のお問い合わせフォームからご依頼ください。 問い合わせフォーム
4. 
CRUD インタラクションの実行-クライアントアプリケーションからの FHIR リソースの検索や、REST クライアントからの操作のテストなどを確認できます。
- 日本語ビデオ:FHIR+IRIS for Health 101(18分ごろからご覧ください)
- ビデオ:REST クライアントから FHIR R4 リソースリポジトリにアクセスする例
英語ビデオもあります
- ビデオ:Searching for FHIR Resources in InterSystems IRIS for Health
▶日本語字幕
患者の記録を保存するために InterSystems IRIS for Health を使用している地元の病院の開発者 John を追います。
先月、彼は FHIR の入門コースを受講したので、FHIR を使って患者データを検索して保存する方法についてある程度の知識を持っています。
最近、彼は出身地に基づいて患者を整理する仕事を任されましたので、彼は FHIR リソースの検索方法を知る必要があります。
FHIR における検索とは、一連のフィルタ条件を満たすリソースを選択または検索することを意味します。このため、ほとんどの検索リクエストは GET メソッドを使用しリクエストの最後にクエスチョンマーク記号 ? を利用して検索パラメーターを指定します。
John が FHIR リソースの検索を実行するために理解する必要があるパラメータにはいくつかの種類があります。まず、最も単純なパラメータタイプである標準パラメータから説明します。標準パラメータには、検索する条件が 1 つだけ含まれています。
例えば、John は Carter という姓を持つすべての患者を検索する必要があります。これを行うには、条件を family=carter と指定する必要があります。
送信をクリックします。ご覧のように、Carter という姓の患者の結果が表示されます。
また、& 構文を使用して複数の条件を組み合わせて検索することもできます。
例えば、検索パラメータに &gender=male を追加すると、Carter という姓の男性患者のみが返されます。
2 つの条件のうち 1 つだけが真である必要がある場合(「OR」条件)には、代わりにカンマ区切り記号を使用します。この場合、Carter または Jones のいずれかの姓を持つ患者が検索されます。OR条件は、同じパラメータ内でのみ機能することに注意してください。つまり、Carter という姓、または male という性別を持つ人を検索することはできません。
検索できるものに満足した John は、次に検索するための条件フィールドに入れる正確な値がわからない場合、どうすればよいかと考えます。その場合、修飾子と比較子という 2 つのオプションが利用できます。
検索でフィルターする値が文字列の場合、修飾子を使うことができます。例えば、contains という修飾子を使えば、JO を含む姓を持つレコードだけを絞り込むことができます。ここでわかるように、この検索結果には、姓に Jones と Johnson を持つ両方の患者のデータが含まれます。
一方、フィルタする値が数値または日付の場合は、greater than や less than などの比較子を使用することで解決できます。例えば、John は、比較子 greater than を追加することで、2000 年以降に生まれたすべての患者を見つけることができます。再度検索を実行すると、今度は 2000 年以降に生まれた患者のみがリストに表示されます。
最後になりますが、John は検索プロセス中のエラーの処理方法を知っておく必要があります。検索に失敗すると、サーバは OperationOutcome を返します。
これは、検索パラメータの形式が正しくないか、存在しないリソースを参照しているか、不正な修飾子が使用されている可能性があるためです。
検索結果が空でもエラーではないことに注意することが重要である。
John は、InterSystems IRIS for Health に保存されている FHIR リソースを検索する新しい機能が患者の出身地に基づいて患者を整理したり、生年月日に基づいて患者を検索したりするような業務に非常に役立っていると感じています。
IRIS for Health で必要な FHIR リソースを検索する方法を学んだところです。標準パラメータ、複合パラメータ、修飾子の使用、比較対象など、各検索パラメータタイプの利点を理解することで FHIR リソースを検索する際に状況に応じて最適なものを選択できるようになりました。
FHIR Resource List にアクセスしてパラメータのリストを参照するか、ドキュメントを読んで InterSystems IRIS for Health でサポートされている修飾子を確認してください。
5. 
新しい FHIR サーバーをセットアップする際に、OAuth2.0 でエンドポイントを保護する方法を学習します。
-
ドキュメント(英語):OAuth FHIR Client Quickstart
InterSystems サーバーに用意する FHIR リソースサーバーと OAuth 2.0 認証サーバーの接続のための設定を簡単に作成する方法も用意されています(バージョン2025.1以降)
6. 
InterSystems API Manager を使用して FHIR エンドポイントへのトラフィックを制御する方法と、トラブルシューティングのテクニックを紹介します。
▶日本語字幕
InterSystems API Manager (IAM)は、InterSystems IRIS のアプリケーションによって消費、公開される API とマイクロサービスをコントロールすることができます。
IAMは、ダウンストリームとアップストリームのアプリケーション間の API ゲートウェイとして機能します。
トラフィックの監視とトラフィックの制御という2つの主要な分野で大きなメリットをもたらします。
InterSystems IRIS の API を他の様々なアプリケーションに公開するシナリオを考えてみましょう。
InterSystems API Manager を使用することでゲートウェイを経由して公開されている API へ のトラフィックを効率的に監視することができます。
どの API が呼び出されているのか?どのくらいの頻度で呼び出されているのか?どのような開発者やアプリケーションがそれらを呼び出しているのか、またこれらの答えにパターンや傾向はあるのか?
IAM を使ってこれらの重要な要素を監視するのは簡単で直感的です。
3.3、3.5、4.0という3つの異なるバージョンの FHIR API を公開している場合を考えてみよう。トラフィックを監視しなければ、誰がどの API を使っているのかわからないかもしれません。
IAM を使用してこれを監視することで使用されていない API をオフラインにしたり、別の API で特に大量のトラフィックを処理するように調整したりできることに気づくかもしれません。
モニタリングの結果に基づいて、これらの API コールのトラフィックを制御し始めることができます。
ガブリエルとエミリアという 2 人の開発者がいて、InterSystems IRIS 内で公開している 3 つの異なる API(1つは請求、1つはラボ、1つは薬局)を頻繁に呼び出すとします。
IAM を使用すると、これらのダウンストリームの開発者やアプリケーションから、アップストリームに公開された API へのトラフィックを制御できます。例えば、ガブリエルの API コールを 1 時間あたり 10 回に制限したり、エミリアに請求 API だけをコールさせたりすることができます。
この機能は、API を外部に公開している場合に特に重要です。利用者に社外の開発者やアプリケーションが含まれる場合、潜在的な脆弱性が生じるからです。
IAM はこの種のトラフィックを制御し、外部のリスクから保護することができます。
ダウンストリームのアプリケーションにとっては、ほとんどすべてがシンプルで透過的です。もちろん、必要に応じてダウンストリーム・アプリケーションに追加のセキュリティ強化を加えることもできます。
ワークフローは若干異なりますが、IAM は、InterSystems IRIS のアプリケーションが外部で利用可能な API を消費する逆のケースでも役立ちます。
InterSystems API Manager があなたの環境でどのように機能するかを考えるとき、一般的には 3 つの基本的な要素に集約されます。
API へのアクセスを要求するコンシューマ(通常は下流のユーザまたはアプリケーション)。
そしてルートです。IAM は送られてきたリクエストを解析しリクエストされたプロトコル、サーバー、アプリケーション、リソースなどの要素を特定します。その結果に基づいてリクエストを適切な API に転送します。
最後に、デスティネーション、つまりサービスと呼ばれるものがあります。これは、リクエストが転送される上流のシステムまたは API (ほとんどの例では InterSystems IRIS 内) です。
ロードバランシングのために複数のターゲットにマッピングしたり、異なる方法でターゲットを設定したりと設定はより複雑になります。しかし本質的には、これは IAM によるAPI 管理の標準的なワークフローです。 今日のデータ主導の世界で違いを生み出す強力なアプリケーションを構築するには、API と API へのトラフィックを管理する必要があります。
InterSystems API Manager を使えば、これは簡単かつ直感的に実現できます。
-
体験環境付き演習(英語):Building FHIR Applications with InterSystems API Manager
-
InterSystems API Manager を使用して API を表示し、HL7® FHIR® アプリケーションを作成して、FHIR リクエストを監視する方法について説明します。
この実習を修了するまでに、以下のことができるようになります:
- InterSystems API Manager を使用して API を表示し、FHIR 要求のテスト
- REST クライアントを使用して、InterSystems IRIS for Health™ に FHIR リクエストを作成
- FHIR アプリケーションを InterSystems IRIS for Health に接続させる
- API Manager 開発者ポータルで統計を表示して API 呼び出しを監視
-
7. 
最後の演習では、サンプルのフロントエンドを使って、完全な FHIR アプリケーションを構築するします。
-
[体験環境付き演習(英語):Working with the FHIR Resource Repository
Syntheaデータ入れてRESTクライアントからのアクセスを試します。また、簡単な Web ページを利用して FHIR リポジトリからの検索結果を表示させる内容を体験できます。
FHIR R4 リソースリポジトリを簡単にお試しいただける開発環境テンプレートのご紹介 で提供しているコンテナ環境を利用して同様の内容をお試しいただけます。