您可以使用 Pub/Sub,在 Cloud Healthcare API 資料儲存庫中發生臨床事件時接收通知。這些通知會在下列情況發出:
- DICOM 執行個體會使用
dicomStores.dicomWeb.studies.storeInstances
方法儲存在 DICOM 儲存庫中,或從 Cloud Storage 匯入dicomStores.notificationConfig
。 - DICOM 執行個體會使用
dicomStores.notificationConfigs
儲存、匯入、更新或刪除 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 服務代理人 服務帳戶。
如要瞭解如何新增必要角色,請參閱「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「主題」頁面。
按一下 [Create Topic] (建立主題)。
使用 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「主題」頁面。
按一下專案的主題。
按一下 [Create Subscription] (建立訂閱)。
輸入訂閱名稱:
projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME
將「傳送類型」保留為「提取」。
按一下 [Create] (建立)。
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 會將訊息發布至 Pub/Sub 主題,這些主題的篩選器與 HL7v2 訊息相符。
如要查看已擷取 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 主題: