当 Cloud Healthcare API 数据存储区中发生临床事件时,您可以使用 Pub/Sub 接收通知。这些通知会在发生以下情况时通知您:
- DICOM 实例使用
dicomStores.dicomWeb.studies.storeInstances
方法或从 Cloud Storage 导入存储在 DICOM 存储区中。 - 在 FHIR 存储区中创建、更新或删除 FHIR 资源时。但是,当从 Cloud Storage 导入 FHIR 资源时,系统不会发送通知。
- 首次在 HL7v2 存储区中注入或创建 HL7v2 消息时。重复消息不会触发通知。
当发生其中一个事件时,Cloud Healthcare API 会向名为“主题”的指定 Pub/Sub 资源发布消息。然后,订阅了该主题的应用可能收到该消息。
对于 DICOM 和 HL7v2,这些消息不包含任何个人信息。仅包含以下内容:
- 生成了消息的项目
- 消息 ID
- HL7v2 消息中的 HL7v2 消息类型
FHIR Pub/Sub 消息可以包含个人信息。如需了解详情,请参阅包含 FHIR 资源数据的 FHIR 通知。
如需大致了解如何将 Pub/Sub 通知与 Cloud Healthcare API 配合使用,请参阅 Pub/Sub 通知。
须知事项
查看 Pub/Sub 配额
在配置 Pub/Sub 通知之前,请先熟悉 Pub/Sub 配额和限制。如需了解如何查看配额、申请更多配额,以及配额用尽后会出现什么情况,请参阅使用配额。
启用 Pub/Sub API
如需启用 Pub/Sub 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 控制台或 Google Cloud CLI 创建主题。
在创建主题或参照数据存储区配置中的主题时,您需要使用以下格式的限定 URI:
projects/PROJECT_ID/topics/TOPIC_NAME
其中 PROJECT_ID 是您的 Google Cloud 项目 ID,TOPIC_NAME 是主题的名称。
如需创建主题,请完成以下步骤:
控制台
进入 Google Cloud 控制台中的 Pub/Sub 主题页面。
点击创建主题。
在主题名称中输入 URI:
projects/PROJECT_ID/topics/TOPIC_NAME
其中 PROJECT_ID 是您的 Google Cloud 项目 ID。
点击创建。
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 订阅。
订阅将主题与负责接收和处理发布到该主题的消息的订阅者应用关联起来。
订阅可配置为根据其特性过滤消息;请参阅过滤来自订阅的消息的说明。
如需创建订阅,请完成以下步骤。
控制台
进入 Google Cloud 控制台中的 Pub/Sub 主题页面。
点击项目的主题。
点击创建订阅。
输入订阅名称:
projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME
将传送类型设置保留为拉取。
点击创建。
gcloud
要创建主题,请运行 gcloud pubsub subscriptions create
命令:
gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME
如果请求成功,命令将返回以下输出:
Created subscription [projects/PROJECT_ID/subscriptions/TOPIC_NAME].
查看存储的 DICOM 实例通知
如需了解如何使用 Pub/Sub 通知和 DICOM 数据,请参阅 DICOM Pub/Sub 通知。
查看 HL7v2 通知
Hl7V2Store
资源包含一个数组 notificationConfigs
,您可以在其中指定 Pub/Sub 主题和过滤条件。
在 HL7v2 存储区中提取或创建 HL7v2 消息时,Cloud Healthcare API 会向其中的过滤条件与 HL7v2 消息匹配的 Pub/Sub 主题发布一条消息。
如需查看提取的 HL7v2 消息的通知,请完成以下步骤:
- 创建或修改 HL7v2 存储区,然后使用 Pub/Sub 主题进行配置。
- 将所需的
pubsub.publisher
角色添加到项目的服务账号中。 - 提取 HL7v2 消息到 HL7v2 存储区中。这会触发 Cloud Healthcare API 向配置的 Pub/Sub 主题发布消息。
如需查看发布到 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 主题,请参阅: