配置 Pub/Sub 通知

当 Cloud Healthcare API 数据存储区中发生临床事件时,您可以使用 Pub/Sub 接收通知。这些通知会在发生以下情况时通知您:

当发生其中一个事件时,Cloud Healthcare API 会向名为“主题”的指定 Pub/Sub 资源发布消息。然后,订阅了该主题的应用可能收到该消息。

这些消息不包含任何个人信息。仅包含以下内容:

  • 生成了消息的项目
  • 消息 ID
  • 在 FHIR 消息中,导致生成消息的 resourceType 和操作
  • HL7v2 消息中的 HL7v2 消息类型

如需大致了解如何将 Pub/Sub 通知与 Cloud Healthcare API 配合使用,请参阅 Pub/Sub 通知

前提条件

要使用此功能,请先完成以下部分:

启用 Pub/Sub API

如需启用 Pub/Sub API,请点击以下按钮:

启用该 API

配置 Pub/Sub 权限

要允许将消息从 Cloud Healthcare API 发布到 Pub/Sub,您必须将 pubsub.publisher 角色添加到项目的 Cloud Healthcare Service Agent 服务帐号。如需查看添加所需角色的步骤,请参阅 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. 转到 Cloud Console 中的 Pub/Sub 主题页面。

    转到 Pub/Sub 主题页面

  2. 点击项目的主题。

  3. 点击创建订阅

  4. 输入订阅名称:

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME

    传送类型设置保留为拉取

  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 资源包含一个 notificationConfig 对象,您可以在其中指定 Pub/Sub 主题。(可选)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 资源包含一个 notificationConfig 对象,您可以在其中指定 Pub/Sub 主题。

在 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 资源包含一个数组 notificationConfigs,您可以在其中指定 Pub/Sub 主题和过滤条件。

在 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 主题,请参阅: