本頁面說明如何使用 projects.locations.datasets.hl7V2Stores.export
方法,將 HL7v2 訊息匯出至 Pub/Sub。
您可以將 HL7v2 訊息匯出至 Pub/Sub,以便進行後續處理。
假設您有一個 Dataflow 管道,可在新訊息擷取至 HL7v2 儲存庫時轉換 HL7v2 訊息。管道會從 Pub/Sub 訂閱項目讀取資料,並等待新的 HL7v2 訊息通知。使用 hl7V2Stores.import
方法將 HL7v2 訊息匯入 HL7v2 儲存區時,該方法不會傳送 Pub/Sub 通知。如要觸發管道,請匯入 HL7v2 訊息,然後使用 hl7v2Stores.export
方法將訊息匯出至 Pub/Sub。
事前準備
啟用 Pub/Sub API
在 Google Cloud 控制台啟用 Pub/Sub API:
設定 Pub/Sub 權限
如要將 HL7v2 存放區的訊息匯出至 Pub/Sub,您必須將 pubsub.publisher
角色新增至專案的 Cloud Healthcare Service Agent
服務帳戶。如要瞭解如何新增必要角色,請參閱「DICOM、FHIR 和 HL7v2 儲存庫的 Pub/Sub 權限」。
建立 Pub/Sub 主題
如要建立主題,請參閱「建立主題」。
個別資料儲存庫可以有自己的 Pub/Sub 主題,多個資料儲存庫也可以共用相同的主題。
指定 Pub/Sub 主題時,請使用下列格式:
projects/PROJECT_ID/topics/TOPIC_NAME
PROJECT_ID
是您的 Google Cloud 專案 ID,TOPIC_NAME
則是 Pub/Sub 主題的名稱。
將 HL7v2 訊息匯出至 Pub/Sub
curl
如要將 HL7v2 訊息匯出至 Pub/Sub,請提出 POST
要求,並指定下列資訊:
- 父項資料集的名稱
- HL7v2 儲存庫名稱
- 目的地 Pub/Sub 主題
以下範例顯示如何使用 curl
發出 POST
要求。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'pubsubDestination': { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"
如果要求成功,伺服器會以 JSON 格式傳回回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
回應會包含作業名稱。如要追蹤作業狀態,可以使用 Operation get
方法:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
如果要求成功,伺服器會以 JSON 格式傳回作業狀態的回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.hl7v2.Hl7V2Service.ExportMessages", "createTime": "CREATE_TIME", "endTime": "END_TIME", "counter": { "success": "RESOURCE_COUNT" } }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse" } }
使用篩選器匯出部分 HL7v2 訊息
您可以在篩選條件中使用下列欄位:
您可以在 filter
欄位中,將下列篩選器參數指定為篩選條件。如要瞭解篩選器語法及建構查詢,請參閱查詢字串。
message_type
:來自 MSH.9.1 欄位。例如:NOT message_type = "ADT"
。send_date
:訊息從 MSH.7 區段傳送的YYYY-MM-DD
日期,以資料集的時區指定。例如:send_date < "2017-01-02"
。send_time
:傳送訊息時的時間戳記。這個參數來自訊息的 MSH.7 區段。這個參數會使用 RFC 3339 時間格式進行比較。例如:send_time < "2017-01-02T00:00:00-05:00"
。create_time
:訊息在 Cloud Healthcare API 中建立的時間戳記,使用 RFC 3339 時間格式進行比較。 例如:create_time < "2017-01-02T00:00:00-05:00"
。send_facility
:訊息的來源照護中心 (來自 MSH.4 區段)。例如:send_facility = "ABC"
。
下列範例說明如何指定篩選條件,只匯出 ADT
類型的 HL7v2 訊息。
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'pubsubDestination': { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC' }, 'filter': 'message_type = \"ADT\"' }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"
在 Pub/Sub 中查看匯出的 HL7v2 訊息
如要在 Pub/Sub 中查看匯出的 HL7v2 訊息,請執行 gcloud pubsub subscriptions pull
指令。這個指令會使用 --format=json
旗標,以 JSON 格式傳回輸出內容,而非預設的 YAML 格式。
gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \ --format=json
PROJECT_ID
是 Google Cloud 專案PUBSUB_SUBSCRIPTION
是附加至 Pub/Sub 主題的訂閱項目,您已將 HL7v2 訊息匯出至該主題
輸出內容如下:
[ { "ackId": "ACK_ID", "message": { "attributes": { "msgType": "TYPE" }, "data": "DATA", "messageId": "8076570784126536", "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ" } } ]