設定 Pub/Sub 通知

您可以使用 Pub/Sub,在 Cloud Healthcare API 資料儲存庫發生臨床事件時接收通知。這些通知會在以下情況下通知你:

發生上述任一事件時,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,請按一下下列按鈕:

啟用 API

設定 Pub/Sub 權限

如要允許訊息從 Cloud Healthcare API 發布至 Pub/Sub,您必須將 pubsub.publisher 角色新增至專案的 Cloud Healthcare 服務代理人 服務帳戶。如要瞭解新增必要角色的步驟,請參閱「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 則是主題的名稱。

如要建立主題,請完成下列步驟:

控制台

  1. 前往 Google Cloud 控制台的 Pub/Sub「主題」頁面。

    前往 Pub/Sub 主題頁面

  2. 按一下 [Create Topic] (建立主題)

  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. 前往 Google Cloud 控制台的 Pub/Sub「主題」頁面。

    前往 Pub/Sub 主題頁面

  2. 按一下專案的主題。

  3. 按一下 [Create Subscription] (建立訂閱)

  4. 輸入訂閱名稱:

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME

    將「Delivery Type」保留為「提取」

  5. 按一下 [Create] (建立)。

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 資源包含陣列 notificationConfigs,您可以在其中指定 Pub/Sub 主題和篩選條件。

在 HL7v2 儲存庫中擷取或建立 HL7v2 訊息時,Cloud Healthcare API 會將訊息發布至 Pub/Sub 主題,該主題的篩選器會與 HL7v2 訊息相符。

如要查看已攝入的 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 主題: