第6章 FHIR への接続
FHIR (Fast Healthcare Interoperability Resources) は医療データを交換するための標準です。インテグレーションでは、1 つ以上の FHIR リソースの取得、リソースの作成または更新、リソースの 1 つ以上のフィールドの更新、またはトランザクションを使用した複数リソースの作成を行うことができます。これには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。
FHIR コネクターはテクノロジープレビューの機能です。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。Red Hat では、これらについて実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストやフィードバックの提供を可能にするために提供されます。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、https://access.redhat.com/ja/support/offerings/techpreview を参照してください。
FHIR への Fuse Online コネクションは以下を行うことができます。
- Basic または Bearer トークン (OAuth) 認証を使用する FHIR サーバーと通信できます。
- FHIR DSTU3 に準拠するすべての FHIR リソースで操作することができます。
- リソースにカスタムデータを格納できるようにするエクステンションでは操作できません。FHIR サーバーから受信したデータにエクステンションがある場合、インテグレーションは何もせずに無視します。
FHIR に接続するインテグレーションでは、データマッパーステップで FHIR リストフィールドに対して 1 レベルの深さのみをマッピングできます。そのため、FHIR リストにリストが含まれる場合は、入れ子のリストでフィールドをマッピングできません。この制限を軽減するため、Fuse Online は一部の FHIR リソースリストフィールドを単一値のフィールドに変換します。たとえば、リストフィールドのアドレスはデータマッパーで単一のフィールドとして表示される可能性があります。
FHIR への接続に関する詳細は、以下を参照してください。
6.1. FHIR サーバーへのコネクションの作成
インテグレーションで FHIR リソースを操作するには、FHIR サーバーへのコネクションを作成し、そのコネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。
FHIR コネクションはシンプルなインテグレーションの最初のコネクションとすることはできません。しかし、FHIR コネクションを定期的にトリガーするタイマーを使ってシンプルなインテグレーションを開始することができます。
前提条件
- 接続する FHIR サーバーの URL を知っている必要があります。
- FHIR サーバーへアクセスするための承認クレデンシャルを持っている必要があります。これらのクレデンシャルは FHIR サーバー管理者から取得する必要があります。まれに、FHIR サーバーが認証を必要とせず、クレデンシャルを指定せずにコネクションを作成できることがあります。たとえば、パブリック FHIR サーバーやプライベートネットワークの FHIR サーバーが認証を必要としないことがあります。
手順
- Fuse Online の左パネルで Connections をクリックし、利用可能なコネクションを表示します。
- 右上の Create Connection をクリックしてコネクターを表示します。
FHIR コネクターをクリックし、以下のようにコネクションを設定します。
- FHIR version フィールドで必要となる DSTU3 を許可します。
-
アクセスする FHIR サーバーの URL を FHIR server URL フィールドに入力します。インテグレーションの作成中、デフォルトテストサーバー
http://fhirtest.uhn.ca/baseDstu3
を許可することがあります。 - FHIR server username フィールドにユーザー名を入力します。これは、Basic 認証を使用する FHIR サーバーで必要になります。
- FHIR server password フィールドにパスワードを入力します。これも Basic 認証を使用する FHIR サーバーで必要になります。
- FHIR server bearer token フィールドにトークンを入力します。これは、OAuth 認証を使用する FHIR サーバーで必要になります。
- Validate をクリックします。Fuse Online は即座にコネクションを検証しようとし、検証の成功または失敗を示すメッセージを表示します。検証に失敗した場合は、入力パラメーターを訂正し、再度検証を行います。
- 検証に成功した場合は Next をクリックします。
-
Connection Name フィールドに、このコネクションを別のコネクションと区別するために使用する名前を入力します。たとえば、
FHIR West
を入力します。 - Description は任意のフィールドで、このコネクションに関する便利な情報を入力します。
- 右上にある Create をクリックし、作成したコネクションが利用可能になったことを確認します。上記の例の名前を入力した場合は、インテグレーションに追加できるコネクションとして FHIR West が表示されます。
6.2. FHIR サーバーからのリソースの取得
インテグレーションでは、指定タイプのリソースを 1 つ取得できます。これには、フローの途中に FHIR コネクションを追加します。
前提条件
- 取得するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。
手順
- 取得するリソースにアクセスできる FHIR コネクションをクリックします。
- Choose an Action ページで Read をクリックします。
- Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。取得するリソースのタイプを選択または入力します。
取得するリソースタイプに他のリソースタイプが含まれている場合、Contained Resource Types フィールドで含まれているタイプを選択します。複数のタイプを選択する必要がある場合は Ctrl キーを使用します。
含まれるリソースタイプを特定すると、データマッパーは含まれるリソースにあるフィールドを表示できるようになります。含まれるリソースタイプを指定しないと、含まれるリソースにあるフィールドからマッピングを行うことができません。実際に含まれないリソースを選択しても問題はありません。
- Resource Id フィールドにリソースの ID を入力します。ただし、フローの初期のステップからマップする予定である場合は、このフィールドを空白のままにしておきます。
- Resource version フィールドには、リソースのバージョン ID を任意で指定します。最新バージョンのリソースを取得する場合や、以前のステップからリソースのバージョン ID をマップする場合は、このフィールドを空白のままにしておきます。
- Next をクリックして、このコネクションをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、このコネクションは 1 つのリソースを返します。
次のステップ
Resource Id フィールドまたは Resource version フィールドに値をマップするには、このコネクションの前にデータマッパーステップを追加します。
6.3. リソースの FHIR サーバーのクエリー
インテグレーションでは、FHIR サーバーにクエリーを行って、指定のクエリーを満たす特定の FHIR リソースのインスタンスを取得できます。たとえば、65 歳以上の患者全員が肺炎の予防接種を受けるようにするには、1955 年より前に誕生した患者のリソースを取得するクエリーを指定します。1955 年より前に禁止されていた患者のリソースを取得するクエリーを指定します。これには、フローの途中に FHIR コネクションを追加します。
前提条件
- 取得するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。
手順
- 取得するリソースを持つ FHIR コネクションをクリックします。
- Choose an Action ページで Search をクリックします。
- Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。取得するリソースのタイプを選択または入力します。
- Query フィールドに FHIR クエリーを指定するか、このフィールドを空白のままにして以前のステップからクエリーをマッピングします。FHIR クエリーの作成に関する詳細は、「FHIR Release 3 Search」を参照してください。
- Next をクリックして、このコネクションをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、このコネクションは指定のクエリーを満たすリソースのリストを返します。Fuse Online はこのリストをコレクションとして扱います。
次のステップ
クエリーを指定しなかった場合は、このコネクションの前にデータマッパーステップを追加し、クエリーをこのコネクションにマップします。返されたリストのコレクションではなく、返された個々のリソースで操作を行うには、フローのこのコネクションの後に分割ステップ (split step) を追加します。
6.4. FHIR サーバーでのリソースの作成
インテグレーションではリソースを作成し、FHIR サーバーに追加することができます。コネクションの Create アクションを設定するときに、作成するリソースのタイプを指定します。たとえば、新しい患者のリソースを FHIR サーバーに追加する場合があります。リソースを作成するには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。
新しいリソースに値を入力するには、このステップを追加する FHIR コネクションのすぐ前にデータマッパーステップを追加します。フローの以前のステップは、新しいリソースに含まれるデータを提供することが想定されます。この FHIR コネクションが作成するターゲットリソースのフィールドに、以前のステップのフィールドをマップします。新しいリソースにはマップしたフィールドのみが含まれます。
コネクションが Create アクションを実行して FHIR サーバー上で新しいリソースを作成する場合、新しいリソースには自動生成された FHIR リソース ID が割り当てられます。新しいリソースのリソース ID を指定する場合は、Create アクションを選択する代わりに、コネクションが実行する Update アクション を選択します。
前提条件
- リソースを追加する FHIR サーバーへのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。または、最後のコネクションを追加するよう要求されます。
手順
- リソースを追加するサーバーへの FHIR コネクションをクリックします。
- Choose an Action ページで Create をクリックします。
- Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。作成するリソースのタイプを選択または入力します。
作成するリソースタイプに他のリソースタイプが含まれている場合、Contained Resource Types フィールドで含まれているタイプを選択します。複数のタイプを選択する必要がある場合は Ctrl キーを使用します。
含まれるリソースタイプを特定すると、データマッパーは含まれるリソースにあるフィールドを表示できるようになります。含まれるリソースタイプを指定しないと、含まれるリソースにあるフィールドをマップ元またはマップ先としてマッピングすることができません。実際に含まれないリソースを選択しても問題はありません。
- Next をクリックして、このコネクションをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、コネクションは FHIR サーバー上に新しいリソースを作成します。コネクションは、新しいリソースのリソース ID が含まれる MethodOutcome リソースを返します。これをフローの後続のステップでマップすることができます。
次のステップ
このフローに、新しいリソースに含まれるデータを取得する追加のステップが必要な場合、この FHIR コネクションの前に追加します。これらのステップが追加されたら、新しいリソースを作成する FHIR コネクションの直前にデータマッパーステップを追加します。データマッパーステップで、作成されるリソースのフィールドへマップします。
新しいリソースを作成する FHIR コネクションの直前にデータマッパーステップがないと、コネクションは空のリソースの作成を試みます。空のリソースが作成されるかどうかは、FHIR サーバーの設定によります。
6.5. FHIR サーバー上のリソースにあるすべてのフィールドを更新
インテグレーションでは、FHIR サーバー上のリソースを更新できます。更新された値を提供するには、リソースを更新する FHIR コネクションの直前にデータマッパーステップを追加します。フローの以前のステップは、更新したリソースに含まれるデータを提供することが想定されます。この FHIR コネクションが更新するターゲットリソースのフィールドに、以前のステップのフィールドをマップします。
更新されたリソースには、マップ先のフィールドのみが含まれます。そのため、値が変更するフィールドをマップする他に、リソースに含まれるようにする値の変更しないフィールドをマップする必要があります。特定のリソースフィールドをマップしないと、コネクションは更新されたリソースからそのフィールドを削除します。
以前のステップのリソース ID をこのコネクションのリソース ID にマップするようにしてください。これはコネクションが変更しない唯一のリソースフィールドになります。FHIR サーバーに、更新されるリソースのリソース ID を持つリソースがない場合、コネクションはそのリソース ID で新しいリソースを作成します。これは、ユーザーが選択したリソース ID で新しいリソースを追加する唯一の方法になります。
リソースを更新または作成するには、FHIR コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。
前提条件
- リソースを更新または作成する FHIR サーバー上へのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。または、最後のコネクションを追加するよう要求されます。
手順
- FHIR サーバーでリソースの更新に使用する FHIR コネクションをクリックします。
- Choose an Action ページで Update をクリックします。
- Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。更新または作成するリソースのタイプを選択または入力します。
更新または作成するリソースタイプに他のリソースタイプが含まれている場合、Contained Resource Types フィールドで含まれているタイプを選択します。複数のタイプを選択する必要がある場合は Ctrl キーを使用します。
含まれるリソースタイプを特定すると、データマッパーは含まれるリソースにあるフィールドを表示できるようになります。含まれるリソースタイプを指定しないと、含まれるリソースにあるフィールドをマップ元またはマップ先としてマッピングすることができません。実際に含まれないリソースを選択しても問題はありません。
- Next をクリックして、このコネクションをフローに追加します。
- 更新されたリソースに含まれるデータを取得する追加のステップがフローに必要な場合は、この FHIR コネクションの前に追加します。
- インテグレーション可視化パネルで、リソースを更新する FHIR コネクションの前にあるプラス記号をクリックします。
- Data Mapper をクリックします。
データマッパーで以下を行います。
- リソース ID をターゲットリソース ID にマップします。これは、新しいリソースのリソース ID を指定する唯一の方法になります。
- 更新されたリソースまたは新しいリソースに含める各リソースフィールドにマップします。値が変更しないフィールドおよび値を更新する必要があるフィールドにマップするようにしてください。
- Done をクリックして、データマッパーステップをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、コネクションは FHIR サーバー上でリソースを更新または作成し、更新されたリソースまたは作成されたリソースのリソース ID が含まれる MethodOutcome リソースを返します。これをフローの後続のステップでマップすることができます。
6.6. FHIR サーバー上のリソースにある指定のフィールドを更新
インテグレーションでは、FHIR サーバー上にあるリソースの個別のフィールドを更新できます。これには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。
前提条件
- 更新するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。または、Fuse Online で最後のコネクションを選択するよう要求されます。
手順
- リソースの更新に使用する FHIR コネクションをクリックします。
- Choose an Action ページで Patch をクリックします。
- Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。更新するフィールドを持つリソースのタイプを選択または入力します。
- Number of Operations フィールドに、更新するフィールドの数を指定します。
- フローの以前のステップから値をマップする場合は Resource id フィールドを空白のままにしておきます。これが通常の作業になります。その他の場合は、更新するフィールドが含まれるリソースのリソース ID を指定します。
- 更新が記述された JSON パッチを指定します。JSON パッチは What is a JSON Patch? に記述されている形式である必要があります。更新によっては、Patch アクションの設定時に JSON パッチを指定する必要があります。たとえば、リソースフィールドの値を別のフィールドにコピーすることがあります。その他の更新では、JSON Patch フィールドを空白のままにし、代わりに各更新を定義する値をマップすることができます。
- Done をクリックして、このコネクションをフローに追加します。
JSON パッチやリソース ID を指定しなかった場合は、データマッパーステップを追加します。
- フロー可視化パネルで、追加したばかりの FHIR コネクションの前にあるプラス記号をクリックします。
Choose a Step ページで Data Mapper をクリックします。
Target パネルには、更新する各フィールド用の番号が付けられたフォルダーが表示されます。Patch アクションを設定するとき、更新するフィールドの数を指定します。データマッパーは、この数のフォルダーを Target パネルに表示します。たとえば、更新するフィールドの数として 3 を指定すると、
1
、2
、および3
のラベルが付いた 3 つのターゲットフォルダーが表示されます。更新する各フィールドをいずれかのターゲットフォルダーのフィールドにマップします。
-
Target パネルでフォルダーを展開し、
op
、path
、およびvalue
の 3 つのフィールドを表示します。 -
ソースフィールド、定数、またはプロパティーをターゲット
path
フィールドにマップします。パスは更新するリソースフィールドを識別します。パスの値では、数字はリストフィールドのインデックスを示し、スラッシュは子フィールドに通じます。たとえば、/name/1/given/1/value
パスをマップし、指定の name フィールドの値を更新します。 -
フィールドの現在の値を置き換えるデフォルトの更新操作を許可するか、ソースフィールド、定数、またはプロパティーを
op
フィールドにマップし、フィールドの更新方法を示します。可能な操作の詳細は、「JSON patch operations」を参照してください。 -
フィールドを更新して新しい値を取得する場合は、ソースフィールド、定数、またはプロパティーをターゲット
value
にマップします。これは、フィールドに含まれるようにする新しい値になります。
-
Target パネルでフォルダーを展開し、
- Patch アクションの設定時にリソース ID を指定しなかった場合は、リソース ID をターゲット id フィールドにマップします。
- Done をクリックして、データマッパーステップをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、コネクションは指定のリソースフィールドを更新し、更新されたリソースの ID が含まれる MethodOutcome リソースを返します。
6.7. FHIR サーバーで異なるタイプのリソースの作成
インテグレーションでは、FHIR サーバーで 2 つ以上のリソースを作成でき、各リソースを異なるタイプにすることができます。たとえば、新しい患者のリソースと新しい医療担当者のリソースを 1 つのコネクションで FHIR サーバーに追加できます。これには、FHIR コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。
前提条件
- リソースを追加する FHIR サーバーへのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。または、Fuse Online で最後のコネクションを選択するよう要求されます。
手順
- 新しいリソースを作成し、FHIR サーバーに追加するために使用する FHIR コネクションをクリックします。
- Choose an Action ページで Transaction をクリックします。
- Included Resource Types フィールドに、このコネクションが作成するリソースタイプを選択します。Ctrl キーを使用して複数のリソースタイプを選択します。コネクションは、選択した各タイプのリソースを 1 つ作成します。
- Next をクリックして、このコネクションをフローに追加します。
新しいリソースにフィールドを入力するには、このコネクションの前にデータマッパーステップを追加します。
- 左側のフロー可視化パネルで、追加したばかりのコネクションの前にあるプラス記号をクリックします。
- Data Mapper をクリックします。
- データマッパーでソースフィールドをターゲットリソースフィールドにマップします。新しいリソースには、マップ先のターゲットフィールドのみが含まれます。
- Done をクリックして、データマッパーステップをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、コネクションはすべてのリソースを FHIR サーバーに追加します。アクションが無事実行されると、新しい個々のリソースのリソース ID が含まれるトランザクションリソースが返されます。これらのリソース ID をフローの後続のステップにマップできます。
6.8. FHIR サーバーからのリソースの削除
インテグレーションでは、FHIR サーバーからリソースを削除できます。これには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。
前提条件
- 削除するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。または、Fuse Online で最後のコネクションを選択するよう要求されます。
手順
- リソースの削除に使用する FHIR コネクションをクリックします。
- Choose an Action ページで Delete をクリックします。
- Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。削除するリソースのタイプを選択または入力します。
- Resource Id フィールドに、削除するリソースのリソース ID を指定します。インテグレーションの初期のステップからリソース ID をマップする予定である場合は、このフィールドを空白のままにしておきます。
- Resource version フィールドには、リソースのバージョン ID を任意で指定します。最新バージョンのリソースを削除する場合や、以前のステップから削除するリソースのバージョン ID をマップする場合は、このフィールドを空白のままにしておきます。
- Done をクリックして、このコネクションをフローに追加します。
結果
インテグレーションフローで追加した場所にコネクションが表示されます。実行中、コネクションは FHIR サーバー上の指定のリソースを削除し、削除されたリソースの ID が含まれる MethodOutcome リソースを返します。
次のステップ
Resource Id フィールドまたは Resource version フィールドに値をマップするには、このコネクションの前にデータマッパーステップを追加します。