Pub/Sub 通知の構成

Pub/Sub を使用して、Cloud Healthcare API データストアで臨床イベントが発生したときに通知を受け取ることが可能です。こうした通知は次の場合に送信されます。

  • DICOM インスタンスは dicomStores.dicomWeb.studies.storeInstances メソッドを使用して DICOMストア に保存されるか、Cloud Storageからインポートされます。
  • FHIR リソースが FHIR ストア内で作成、更新、削除されたただし、FHIR リソースが Cloud Storage からインポートされたときには、通知は送信されません。
  • HL7v2 メッセージが HL7v2 ストアで初めて作成または取り込まれた。重複するメッセージによって通知がトリガーされることはありません。

これらのイベントのいずれかが発生すると、Cloud Healthcare API は、トピックと呼ばれる名前付き Pub/Sub リソースにメッセージを公開します。メッセージはトピックにサブスクライブしているアプリケーションで受信できます。

DICOM と HL7v2 の場合、こうしたメッセージに個人情報は含まれません。以下のみが含まれます。

  • メッセージが生成されたプロジェクト
  • メッセージ ID
  • HL7v2 メッセージでの、HL7v2 メッセージ タイプ

FHIR Pub/Sub メッセージには個人情報が含まれている場合があります。詳細については、FHIR リソースデータを含む FHIR 通知をご覧ください。

Cloud Healthcare API で Pub/Sub 通知を使用することの概要は、Pub/Sub 通知をご覧ください。

準備

Pub/Sub 割り当ての確認

Pub/Sub 通知を構成する前に、Pub/Sub 割り当てと上限についてよく理解してください。割り当ての確認方法、割り当ての増加をリクエストする方法、割り当てがなくなったらどうなるかについては、割り当ての操作をご覧ください。

Pub/Sub API を有効にする

Pub/Sub API を有効にするには、次のボタンをクリックします。

API の有効化

Pub/Sub 権限の構成

メッセージを Cloud Healthcare API から Pub/Sub に公開するには、プロジェクトの Cloud Healthcare サービス エージェント サービス アカウントpubsub.publisher ロールを追加する必要があります。必要なロールを追加する手順については、DICOM、FHIR、HL7v2 ストアの Pub/Sub 権限をご覧ください。

Pub/Sub トピックの作成

Pub/Sub トピックは、通知を受け取るデータストアごとに構成する必要があります。個々のデータストアに独自の Pub/Sub トピックを含めるか、複数のデータストアで同じトピックを共有できます。トピックは、Google Cloud Console または Google Cloud CLI を使用して作成できます。

トピックを作成する場合や、データストアの構成でトピックを参照する場合は、次の形式の修飾 URI を使用する必要があります。

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID は Google Cloud プロジェクト ID、TOPIC_NAMEはトピックの名前です。

トピックを作成するには、次の手順を行います。

Console

  1. Google Cloud コンソールで Pub/Sub トピックページに移動します。

    Pub/Sub トピックページに移動

  2. [トピックを作成] をクリックします。

  3. URI を使用したトピック名を入力します。

    projects/PROJECT_ID/topics/TOPIC_NAME

    ここで PROJECT_ID Google Cloud プロジェクト ID です。

  4. [作成] をクリックします。

gcloud

トピックを作成するには、gcloud pubsub topics create コマンドを実行します。

gcloud pubsub topics create projects/PROJECT_ID/topics/TOPIC_NAME

リクエストが成功すると、コマンドから次の出力が返されます。

Created topic [projects/PROJECT_ID/topics/TOPIC_NAME].

Pub/Sub サブスクリプションの作成

トピックにパブリッシュされたメッセージを受信するには、Pub/Sub サブスクリプションを作成する必要があります。Pub/Sub サブスクリプションは、各 Pub/Sub トピックに少なくとも 1 つ必要です。

サブスクリプションにより、トピックとサブスクライバー アプリケーションが関連付けられます。このアプリケーションがそのトピックに公開されたメッセージを受信して処理します。

サブスクリプションは、push モデルまたは pull モデルを使用するように構成できます。

サブスクリプションは、メッセージの属性に基づいてメッセージをフィルタリングするように構成できます。サブスクリプションからのメッセージのフィルタリングの手順をご覧ください。

サブスクリプションの作成は、次の手順で行います。

Console

  1. Google Cloud コンソールで Pub/Sub トピックページに移動します。

    Pub/Sub トピックページに移動

  2. プロジェクトのトピックをクリックします。

  3. [サブスクリプションを作成] をクリックします。

  4. サブスクリプション名を入力します。

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME

    [配信タイプ] は [Pull] に設定されたままにします。

  5. [作成] をクリックします。

gcloud

トピックを作成するには、gcloud pubsub subscriptions create コマンドを実行します。

gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME

リクエストが成功すると、コマンドから次の出力が返されます。

Created subscription [projects/PROJECT_ID/subscriptions/TOPIC_NAME].

保存された DICOM インスタンス通知を表示する

DICOM データで Pub/Sub 通知を使用する方法については、DICOM Pub/Sub 通知をご覧ください。

HL7v2 通知を表示する

Hl7V2Store リソースには、Pub/Sub トピックとフィルタリング条件を指定できる配列 notificationConfigs が含まれています。

HL7v2 メッセージが HL7v2 ストアに取り込まれるか作成されると、Cloud Healthcare API で HL7v2 メッセージと一致するフィルタを持つ Pub/Sub トピックにメッセージが公開されます。

取り込み HL7v2 メッセージの通知を表示するには、次の手順を行います。

  1. HL7v2 ストアを作成または編集して、Pub/Sub トピックで構成します。
  2. 必要な pubsub.publisher ロールをプロジェクトのサービス アカウントに追加します
  3. HL7v2 ストアに HL7v2 メッセージを取り込みます。これにより、Cloud Healthcare API で構成済みの Pub/Sub トピックにメッセージが公開されます。
  4. Pub/Sub トピックにパブリッシュされたメッセージを表示するには、gcloud pubsub subscriptions pull コマンドを実行します。

    gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
    

    このコマンドは、取り込まれた HL7v2 メッセージに関する次の出力を返します。

    ┌--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┐
    |                                                                 DATA                                               |    MESSAGE_ID   |   ATTRIBUTES  |
    ├--------------------------------------------------------------------------------------------------------------------|-----------------|---------------|
    | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=TYPE  |
    └--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
    

Cloud Healthcare API と Pub/Sub メッセージ ストレージ ポリシー

Cloud Healthcare API データと Pub/Sub メッセージの関連データが同じリージョンに存在するようにするには、Pub/Sub メッセージ ストレージ ポリシーを設定する必要があります。

データが同じリージョンに留まるように、データストアに構成された Pub/Sub トピックにメッセージ ストレージ ポリシーを明示的に設定する必要があります。たとえば、Cloud Healthcare API データセットと FHIR ストアが us-central1 にある場合、メッセージ ストレージ ポリシーで us-central1 リージョンのみを許可する必要があります。

メッセージ ストレージ ポリシーを構成するには、メッセージ ストア ポリシーの構成をご覧ください。

不明な Pub/Sub メッセージのトラブルシューティング

通知を Pub/Sub に公開できない場合は、Cloud Logging にエラーが記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。

エラー生成率が制限を超えると、この制限を超えたエラーは Cloud Logging に送信されません。

次のステップ

Pub/Sub トピックを構成する方法について、以下で確認する。