您可以使用 Pub/Sub,在 Cloud Healthcare API 資料儲存庫發生臨床事件時接收通知。這些通知會在以下情況下通知你:
- DICOM 例項會使用
dicomStores.dicomWeb.studies.storeInstances
方法或從 Cloud Storage 匯入儲存在 DICOM 儲存庫中。 - 在 FHIR 儲存庫中建立、更新或刪除 FHIR 資源。不過,如果 FHIR 資源是從 Cloud Storage 匯入,系統就不會傳送通知。
- 首次在 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
將「Delivery Type」保留為「提取」。
按一下 [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 訊息通知,請完成下列步驟:
- 建立或編輯 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 主題: