Pub/Sub 通知の構成

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

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

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

  • メッセージが生成されたプロジェクト
  • メッセージ ID
  • FHIR メッセージで、メッセージを発生させた resourceType とアクション
  • HL7v2 メッセージでの、HL7v2 メッセージ タイプ

Cloud Healthcare API で 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 または gcloud コマンドライン ツールを使用して作成できます。

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

projects/PROJECT_ID/topics/TOPIC_NAME

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

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

コンソール

  1. Cloud Console の 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 モデルを使用するように構成できます。

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

コンソール

  1. Cloud Console の 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 通知を表示する

DicomStore リソースには、Pub/Sub トピックを指定できる notificationConfig オブジェクトが含まれています。notificationConfig オブジェクトを使用すると、一括インポート時に Pub/Sub 通知を送信するかどうかも指定できます(省略可)。このフィールドは、v1beta1 バージョンでのみ使用できます。

新しい DICOM インスタンスを DICOM ストアに保存すると、Cloud Healthcare API がメッセージを DICOM ストアの Pub/Sub トピックに公開します。

保存された DICOM インスタンスの通知を表示するには、次の手順を行います。

  1. DICOM ストアを作成または編集して、Pub/Sub トピックで構成します。(省略可)一括インポート中に Pub/Sub 通知を送信するかどうかを指定します(この機能は v1beta1 API でのみ使用できます)。
  2. 必要な pubsub.publisher ロールをプロジェクトのサービス アカウントに追加します
  3. DICOM ストアにインスタンスを保存します。これにより、Cloud Healthcare API で構成済みの Pub/Sub トピックにメッセージが公開されます。
  4. gcloud pubsub subscriptions pull コマンドを実行して、Pub/Sub トピックに公開されたメッセージを表示します。

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

    このコマンドは、保存された DICOM インスタンスに関する次の出力を返します。

    ┌----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------┐
    |                                                                          DATA                                                                           |    MESSAGE_ID   | ATTRIBUTES |
    ├---------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|------------|
    | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID | 123456789012345 |            |
    └----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------┘
    

FHIR 通知を表示する

FhirStore リソースには、Pub/Sub トピックを指定できる notificationConfig オブジェクトが含まれています。

FHIR ストアで FHIR リソースが作成、更新、または削除されると、Cloud Healthcare API で FHIR ストアの Pub/Sub トピックにメッセージが公開されます。

作成した FHIR リソースの通知を表示するには、次の手順を行います。

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

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

    このコマンドにより、作成された FHIR リソースに関する次の出力が返されます。

    ┌----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------┐
    |                                                      DATA                                                      |    MESSAGE_ID   |       ATTRIBUTES      |
    ├----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------|
    | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/resources/Patient/PATIENT_ID | 123456789012345 | action=CreateResource |
    |                                                                                                                |                 | resourceType=Patient  |
    └----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------┘
    

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/us-central1/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=TYPE  |
    └--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
    

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

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

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

次のステップ

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