第9章 FHIR への接続

FHIR (Fast Healthcare Interoperability Resources) は医療データを交換するための標準です。インテグレーションでは、1 つ以上の FHIR リソースの取得、リソースの作成または更新、リソースの 1 つ以上のフィールドの更新、またはトランザクションを使用した複数リソースの作成を行うことができます。これには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。

FHIR への Fuse Online コネクションは以下を行うことができます。

  • Basic または Bearer トークン (OAuth) 認証を使用する FHIR サーバーと通信できます。
  • FHIR DSTU3 に準拠するすべての FHIR リソースで操作することができます。
  • リソースにカスタムデータを格納できるようにするエクステンションでは操作できません。FHIR サーバーから受信したデータにエクステンションがある場合、インテグレーションは何もせずに無視します。

FHIR に接続するインテグレーションでは、データマッパーステップで FHIR リストフィールドに対して 1 レベルの深さのみをマッピングできます。そのため、FHIR リストにリストが含まれる場合は、入れ子のリストでフィールドをマッピングできません。この制限を軽減するため、Fuse Online は一部の FHIR リソースリストフィールドを単一値のフィールドに変換します。たとえば、リストフィールドのアドレスはデータマッパーで単一のフィールドとして表示される可能性があります。

FHIR への接続に関する詳細は、以下を参照してください。

9.1. FHIR サーバーへのコネクションの作成

インテグレーションで FHIR リソースを操作するには、FHIR サーバーへのコネクションを作成し、そのコネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。

FHIR コネクションはシンプルなインテグレーションの最初のコネクションとすることはできません。しかし、FHIR コネクションを定期的にトリガーするタイマーを使ってシンプルなインテグレーションを開始することができます。

前提条件

  • 接続する FHIR サーバーの URL を知っている必要があります。
  • FHIR サーバーへアクセスするための承認クレデンシャルを持っている必要があります。これらのクレデンシャルは FHIR サーバー管理者から取得する必要があります。まれに、FHIR サーバーが認証を必要とせず、クレデンシャルを指定せずにコネクションを作成できることがあります。たとえば、パブリック FHIR サーバーやプライベートネットワークの FHIR サーバーが認証を必要としないことがあります。

手順

  1. Fuse Online の左パネルで Connections をクリックし、利用可能なコネクションを表示します。
  2. Create Connection をクリックしてコネクターを表示します。
  3. FHIR コネクターをクリックし、以下のようにコネクションを設定します。

    1. FHIR version フィールドで必要となる DSTU3 を許可します。
    2. アクセスする FHIR サーバーの URL を FHIR server URL フィールドに入力します。インテグレーションの作成中、デフォルトテストサーバー http://fhirtest.uhn.ca/baseDstu3 を許可することがあります。
    3. FHIR server username フィールドにユーザー名を入力します。これは、Basic 認証を使用する FHIR サーバーで必要になります。
    4. FHIR server password フィールドにパスワードを入力します。これも Basic 認証を使用する FHIR サーバーで必要になります。
    5. FHIR server bearer token フィールドにトークンを入力します。これは、OAuth 認証を使用する FHIR サーバーで必要になります。
  4. Validate をクリックします。Fuse Online は即座にコネクションを検証しようとし、検証の成功または失敗を示すメッセージを表示します。検証に失敗した場合は、入力パラメーターを訂正し、再度検証を行います。
  5. 検証に成功した場合は Next をクリックします。
  6. Name フィールドに、このコネクションを別のコネクションと区別するために使用する名前を入力します。たとえば、FHIR West を入力します。
  7. Description は任意のフィールドで、このコネクションに関する便利な情報を入力します。
  8. Save をクリックし、作成したコネクションが利用可能になったことを確認します。上記の例の名前を入力した場合は、インテグレーションに追加できるコネクションとして FHIR West が表示されます。

9.2. FHIR サーバーからのリソースの取得

インテグレーションでは、指定タイプのリソースを 1 つ取得できます。これには、フローの途中に FHIR コネクションを追加します。

前提条件

  • 取得するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。
  2. 取得するリソースにアクセスできる FHIR コネクションをクリックします。
  3. Choose an action ページで Read を選択します。
  4. Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。取得するリソースのタイプを選択または入力します。
  5. 取得するリソースタイプに他のリソースタイプが含まれている場合、Contained Resource Types フィールドで含まれているタイプを選択します。複数のタイプを選択する必要がある場合は Ctrl キーを使用します。

    含まれるリソースタイプを特定すると、データマッパーは含まれるリソースにあるフィールドを表示できるようになります。含まれるリソースタイプを指定しないと、含まれるリソースにあるフィールドからマッピングを行うことができません。実際に含まれないリソースを選択しても問題はありません。

  6. Resource Id フィールドにリソースの ID を入力します。ただし、フローの初期のステップからマップする予定である場合は、このフィールドを空白のままにしておきます。
  7. Resource version フィールドには、リソースのバージョン ID を任意で指定します。最新バージョンのリソースを取得する場合や、以前のステップからリソースのバージョン ID をマップする場合は、このフィールドを空白のままにしておきます。
  8. Next をクリックして、このコネクションをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、このコネクションは 1 つのリソースを返します。

次のステップ

Resource Id フィールドまたは Resource version フィールドに値をマップするには、このコネクションの前にデータマッパーステップを追加します。

9.3. リソースの FHIR サーバーのクエリー

インテグレーションでは、FHIR サーバーにクエリーを行って、指定のクエリーを満たす特定の FHIR リソースのインスタンスを取得できます。たとえば、65 歳以上の患者全員が肺炎の予防接種を受けるようにするには、1955 年より前に誕生した患者のリソースを取得するクエリーを指定します。1955 年より前に禁止されていた患者のリソースを取得するクエリーを指定します。これには、フローの途中に FHIR コネクションを追加します。

前提条件

  • 取得するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。
  2. 取得するリソースを持つ FHIR コネクションをクリックします。
  3. Choose an action ページで Search を選択します。
  4. Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。取得するリソースのタイプを選択または入力します。
  5. Query フィールドに FHIR クエリーを指定するか、このフィールドを空白のままにして以前のステップからクエリーをマッピングします。FHIR クエリーの作成に関する詳細は、「FHIR Release 3 Search」を参照してください。
  6. Next をクリックして、このコネクションをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、このコネクションは指定のクエリーを満たすリソースのリストを返します。Fuse Online はこのリストをコレクションとして扱います。

次のステップ

クエリーを指定しなかった場合は、このコネクションの前にデータマッパーステップを追加し、クエリーをこのコネクションにマップします。返されたリストのコレクションではなく、返された個々のリソースで操作を行うには、フローのこのコネクションの後に分割ステップ (split step) を追加します。

9.4. FHIR サーバーでのリソースの作成

インテグレーションではリソースを作成し、FHIR サーバーに追加することができます。コネクションの Create アクションを設定するときに、作成するリソースのタイプを指定します。たとえば、新しい患者のリソースを FHIR サーバーに追加する場合があります。リソースを作成するには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。

新しいリソースに値を入力するには、このステップを追加する FHIR コネクションのすぐ前にデータマッパーステップを追加します。フローの以前のステップは、新しいリソースに含まれるデータを提供することが想定されます。この FHIR コネクションが作成するターゲットリソースのフィールドに、以前のステップのフィールドをマップします。新しいリソースにはマップしたフィールドのみが含まれます。

コネクションが Create アクションを実行して FHIR サーバー上で新しいリソースを作成する場合、新しいリソースには自動生成された FHIR リソース ID が割り当てられます。新しいリソースのリソース ID を指定する場合は、Create アクションを選択する代わりに、コネクションが実行する Update アクション を選択します。

前提条件

  • リソースを追加する FHIR サーバーへのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online でインテグレーションの追加または最後のコネクションの追加が要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. リソースを追加するサーバーへの FHIR コネクションをクリックします。
  3. Choose an action ページで Create を選択します。
  4. Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。作成するリソースのタイプを選択または入力します。
  5. 作成するリソースタイプに他のリソースタイプが含まれている場合、Contained Resource Types フィールドで含まれているタイプを選択します。複数のタイプを選択する必要がある場合は Ctrl キーを使用します。

    含まれるリソースタイプを特定すると、データマッパーは含まれるリソースにあるフィールドを表示できるようになります。含まれるリソースタイプを指定しないと、含まれるリソースにあるフィールドをマップ元またはマップ先としてマッピングすることができません。実際に含まれないリソースを選択しても問題はありません。

  6. Next をクリックして、このコネクションをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、コネクションは FHIR サーバー上に新しいリソースを作成します。コネクションは、id.idPart フィールドが含まれる MethodOutcome リソースを返します。このフィールドには、新しいリソースのリソース ID が含まれ、これをフローの後続のステップにマップできます。

次のステップ

このフローに、新しいリソースに含まれるデータを取得する追加のステップが必要な場合、この FHIR コネクションの前に追加します。これらのステップが追加されたら、新しいリソースを作成する FHIR コネクションの直前にデータマッパーステップを追加します。データマッパーステップで、作成されるリソースのフィールドへマップします。

注意

新しいリソースを作成する FHIR コネクションの直前にデータマッパーステップがないと、コネクションは空のリソースの作成を試みます。空のリソースが作成されるかどうかは、FHIR サーバーの設定によります。

9.5. FHIR サーバー上のリソースにあるすべてのフィールドを更新

インテグレーションでは、FHIR サーバー上のリソースを更新できます。更新された値を提供するには、リソースを更新する FHIR コネクションの直前にデータマッパーステップを追加します。フローの以前のステップは、更新したリソースに含まれるデータを提供することが想定されます。この FHIR コネクションが更新するターゲットリソースのフィールドに、以前のステップのフィールドをマップします。

注意

更新されたリソースには、マップ先のフィールドのみが含まれます。そのため、値が変更するフィールドをマップする他に、リソースに含まれるようにする値の変更しないフィールドをマップする必要があります。特定のリソースフィールドをマップしないと、コネクションは更新されたリソースからそのフィールドを削除します。

以前のステップのリソース ID をこのコネクションのリソース ID にマップするようにしてください。これはコネクションが変更しない唯一のリソースフィールドになります。FHIR サーバーに、更新されるリソースのリソース ID を持つリソースがない場合、コネクションはそのリソース ID で新しいリソースを作成します。これは、ユーザーが選択したリソース ID で新しいリソースを追加する唯一の方法になります。

リソースを更新または作成するには、FHIR コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • リソースを更新または作成する FHIR サーバー上へのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online でインテグレーションの追加または最後のコネクションの追加が要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. FHIR サーバーでリソースの更新に使用する FHIR コネクションをクリックします。
  3. Choose an action ページで Update を選択します。
  4. Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。更新または作成するリソースのタイプを選択または入力します。
  5. 更新または作成するリソースタイプに他のリソースタイプが含まれている場合、Contained Resource Types フィールドで含まれているタイプを選択します。複数のタイプを選択する必要がある場合は Ctrl キーを使用します。

    含まれるリソースタイプを特定すると、データマッパーは含まれるリソースにあるフィールドを表示できるようになります。含まれるリソースタイプを指定しないと、含まれるリソースにあるフィールドをマップ元またはマップ先としてマッピングすることができません。実際に含まれないリソースを選択しても問題はありません。

  6. Next をクリックして、このコネクションをフローに追加します。
  7. 更新されたリソースに含まれるデータを取得する追加のステップがフローに必要な場合は、この FHIR コネクションの前に追加します。
  8. インテグレーションビジュアライゼーションで、リソースを更新する FHIR コネクションの前にあるプラス記号をクリックします。
  9. Data Mapper をクリックします。
  10. データマッパーで以下を行います。

    1. リソース ID をターゲットリソース ID にマップします。これは、新しいリソースのリソース ID を指定する唯一の方法になります。
    2. 更新されたリソースまたは新しいリソースに含める各リソースフィールドにマップします。値が変更しないフィールドおよび値を更新する必要があるフィールドにマップするようにしてください。
    3. Done をクリックして、データマッパーステップをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、コネクションは FHIR サーバーでリソースを更新または作成し、id.idPart フィールドが含まれる MethodOutcome リソースを返します。このフィールドには更新または作成されたリソースの ID が含まれ、これをフローの後続のステップにマップできます。

9.6. FHIR サーバー上のリソースにある指定のフィールドを更新

インテグレーションでは、FHIR サーバー上にあるリソースの個別のフィールドを更新できます。これには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • 更新するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. リソースの更新に使用する FHIR コネクションをクリックします。
  3. Choose an action ページで Patch を選択します。
  4. Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。更新するフィールドを持つリソースのタイプを選択または入力します。
  5. Number of Operations フィールドに、更新するフィールドの数を指定します。
  6. フローの以前のステップから値をマップする場合は Resource id フィールドを空白のままにしておきます。これが通常の作業になります。その他の場合は、更新するフィールドが含まれるリソースのリソース ID を指定します。

    注記: 現在のリリースでは、JSON パッチオプションは動作しません。代わりに、以下の手順で説明するように、データマッパーを使用してフィールドを更新します。

  7. Next をクリックして、このコネクションをフローに追加します。
  8. データマッパーステップの追加

    1. フロービジュアライゼーションで、追加したばかりの FHIR コネクションの前にあるプラス記号をクリックします。
    2. Data Mapper をクリックします。

      Target パネルには、更新する各フィールド用の番号が付けられたフォルダーが表示されます。Patch アクションを設定するとき、更新するフィールドの数を指定します。データマッパーは、この数のフォルダーを Target パネルに表示します。たとえば、更新するフィールドの数として 3 を指定すると、12、および 3 のラベルが付いた 3 つのターゲットフォルダーが表示されます。

    3. 更新する各フィールドをいずれかのターゲットフォルダーのフィールドにマップします。

      1. Target パネルでフォルダーを展開し、oppath、および value の 3 つのフィールドを表示します。
      2. ソースフィールド、定数、またはプロパティーをターゲット path フィールドにマップします。パスは更新するリソースフィールドを識別します。パスの値では、数字はリストフィールドのインデックスを示し、スラッシュは子フィールドに通じます。たとえば、/name/1/given/1/value パスをマップし、指定の name フィールドの値を更新します。
      3. フィールドの現在の値を置き換えるデフォルトの更新操作を許可するか、ソースフィールド、定数、またはプロパティーを op フィールドにマップし、フィールドの更新方法を示します。可能な操作の詳細は、「JSON patch operations」を参照してください。
      4. フィールドを更新して新しい値を取得する場合は、ソースフィールド、定数、またはプロパティーをターゲット value にマップします。これは、フィールドに含まれるようにする新しい値になります。
    4. Patch アクションの設定時にリソース ID を指定しなかった場合は、リソース ID をターゲット id フィールドにマップします。
    5. Done をクリックして、データマッパーステップをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、コネクションは指定のリソースフィールドを更新し、id.idPart フィールドが含まれる MethodOutcome リソースを返します。このフィールドには更新されたリソースの ID が含まれます。

9.7. FHIR サーバーで異なるタイプのリソースの作成

インテグレーションでは、FHIR サーバーで 2 つ以上のリソースを作成でき、各リソースを異なるタイプにすることができます。たとえば、新しい患者のリソースと新しい医療担当者のリソースを 1 つのコネクションで FHIR サーバーに追加できます。これには、FHIR コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • リソースを追加する FHIR サーバーへのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. 新しいリソースを作成し、FHIR サーバーに追加するために使用する FHIR コネクションをクリックします。
  3. Choose an action ページで Transaction を選択します。
  4. Included Resource Types フィールドに、このコネクションが作成するリソースタイプを選択します。Ctrl キーを使用して複数のリソースタイプを選択します。コネクションは、選択した各タイプのリソースを 1 つ作成します。
  5. Next をクリックして、このコネクションをフローに追加します。
  6. 新しいリソースにフィールドを入力するには、このコネクションの前にデータマッパーステップを追加します。

    1. フロービジュアライゼーションで、追加したばかりのコネクションの前にあるプラス記号をクリックします。
    2. Data Mapper をクリックします。
    3. データマッパーでソースフィールドをターゲットリソースフィールドにマップします。新しいリソースには、マップ先のターゲットフィールドのみが含まれます。
    4. Next をクリックして、データマッパーステップをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、コネクションはすべてのリソースを FHIR サーバーに追加します。エラーがある場合は、コネクションはすべてのリソースを FHIR サーバーに追加しません。アクションが無事実行されると、新しい個々のリソースのリソース ID が含まれるトランザクションリソースが返されます。これらのリソース ID をフローの後続のステップにマップできます。

9.8. FHIR サーバーからのリソースの削除

インテグレーションでは、FHIR サーバーからリソースを削除できます。これには、フローの途中に FHIR コネクションを追加するか、FHIR コネクションをシンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • 削除するリソースを持つ FHIR サーバーへのコネクションが作成されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. リソースの削除に使用する FHIR コネクションをクリックします。
  3. Choose an action ページで Delete を選択します。
  4. Resource Type フィールドをクリックし、FHIR リソースタイプのリストを表示します。削除するリソースのタイプを選択または入力します。
  5. Resource Id フィールドに、削除するリソースのリソース ID を指定します。インテグレーションの初期のステップからリソース ID をマップする予定である場合は、このフィールドを空白のままにしておきます。
  6. Resource version フィールドには、リソースのバージョン ID を任意で指定します。最新バージョンのリソースを削除する場合や、以前のステップから削除するリソースのバージョン ID をマップする場合は、このフィールドを空白のままにしておきます。
  7. Next をクリックして、このコネクションをフローに追加します。

結果

インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。実行中、コネクションは FHIR サーバーの指定のリソースフィールドを削除し、id.idPart フィールドが含まれる MethodOutcome リソースを返します。このフィールドには、削除されたリソースのリソース ID が含まれます。

次のステップ

Resource Id フィールドまたは Resource version フィールドに値をマップするには、このコネクションの前にデータマッパーステップを追加します。