從 Cloud Storage 匯入 HL7v2 訊息

本頁面說明如何從 Cloud Storage 將 HL7v2 訊息匯入 HL7v2 儲存庫。與使用 REST API 個別儲存 HL7v2 訊息相比,大量匯入訊息的速度更快,也更簡單。

事前準備

如要瞭解必須授予 Cloud Healthcare Service Agent 服務帳戶的角色,請參閱「從 Cloud Storage 匯入 HL7v2 訊息」。

輸入檔案格式規定

如要匯入 HL7v2 訊息,您必須先在 Cloud Storage 中建立一或多個以換行符號分隔的 JSON (.ndjson) 檔案,其中包含一或多則訊息。檔案中的每一行都是單一 Message 資源,內含以 base64 編碼的 HL7v2 訊息。Message 資源也可以包含選用標籤。

舉例來說,以下名為 messages.ndjson 的檔案包含兩則 HL7v2 訊息。標籤是在第二則訊息中定義。

{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg=="}
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==","labels":{"foo":"bar"}}

匯入 HL7v2 訊息

控制台

如要從 Cloud Storage 值區匯入 HL7v2 訊息,請完成下列步驟:

  1. 在 Google Cloud 控制台中,前往「Datasets」(資料集) 頁面。

    前往「資料集」頁面

  2. 按一下包含 HL7v2 儲存庫的資料集,您要將 HL7v2 訊息匯入該儲存庫。

  3. 在資料儲存庫清單中,從 HL7v2 儲存庫的「Actions」(動作) 清單中選擇「Import」(匯入)

    「Import to HL7v2 store」(匯入 HL7v2 儲存庫) 頁面隨即顯示。

  4. 在「Project」(專案) 清單中,選取 Cloud Storage 專案。

  5. 在「Location」(位置) 清單中,選取 Cloud Storage bucket。

  6. 如要指定匯入檔案的位置,請按照下列步驟操作:

    1. 展開「進階選項」
    2. 選取「覆寫 Cloud Storage 路徑」
    3. 如要設定匯入檔案的特定來源,請在「位置」文字方塊中定義路徑。你可以使用萬用字元,從一或多個目錄匯入多個檔案。如要進一步瞭解物件命名方式,請參閱物件命名規範

      支援的萬用字元如下:
      • 使用 * 可比對 0 個以上的非分隔符字元。舉例來說,gs://BUCKET/DIRECTORY/Example*.ndjson 會與 DIRECTORY 中的 Example.ndjson 和 Example22.ndjson 相符。
      • 使用 ** 來比對 0 個以上的字元 (包括分隔符)。必須用於路徑結尾,且路徑中不得有其他萬用字元。也可以搭配檔案名稱副檔名 (例如 .ndjson) 使用,匯入指定目錄及其子目錄中,副檔名為該名稱的所有檔案。舉例來說,gs://BUCKET/DIRECTORY/**.ndjson 會匯入 DIRECTORY 及其子目錄中副檔名為 .ndjson 的所有檔案。
      • 使用「?」比對 1 個字元。舉例來說,gs://BUCKET/DIRECTORY/Example?.ndjson 會與 Example1.ndjson 相符,但與 Example.ndjson 或 Example01.ndjson 不相符。
  7. 按一下「匯入」,從定義的來源匯入 HL7v2 訊息。

  8. 如要追蹤作業狀態,請按一下「Operations」(作業) 分頁標籤。作業完成後,會顯示下列指標:
    • 「長時間執行的作業狀態」部分在「OK」標題下方顯示綠色勾號。
    • 「總覽」部分會顯示綠色勾號和「OK」指標,與作業 ID 位於同一列。
    如果發生任何錯誤,請按一下「動作」,然後點選「在 Cloud Logging 中查看詳細資料」

API

下列範例說明如何使用 projects.locations.datasets.hl7V2Stores.import 方法,從 Cloud Storage 匯入 HL7v2 訊息。

呼叫匯入作業時,請注意下列事項:

  • 檔案在值區中的位置是任意的,不一定要完全符合下列範例中指定的格式。
  • 在 Cloud Storage 中指定 HL7v2 訊息的位置時,可以使用萬用字元從一或多個目錄匯入多個檔案。 支援的萬用字元如下:
    • 使用 * 可比對 0 個以上的非分隔符字元。舉例來說,gs://BUCKET/DIRECTORY/Example*.ndjson 會與 DIRECTORY 中的 Example.ndjson 和 Example22.ndjson 相符。
    • 使用 ** 來比對 0 個以上的字元 (包括分隔符)。必須用於路徑結尾,且路徑中不得有其他萬用字元。也可以搭配檔案名稱副檔名 (例如 .ndjson) 使用,匯入指定目錄及其子目錄中,副檔名為該名稱的所有檔案。舉例來說,gs://BUCKET/DIRECTORY/**.ndjson 會匯入 DIRECTORY 及其子目錄中副檔名為 .ndjson 的所有檔案。
    • 使用「?」比對 1 個字元。舉例來說,gs://BUCKET/DIRECTORY/Example?.ndjson 會與 Example1.ndjson 相符,但與 Example.ndjson 或 Example01.ndjson 不相符。

curl

如要將 HL7v2 訊息匯入 HL7v2 儲存庫,請提出 POST 要求,並指定下列資訊:

  • 父項資料集的名稱
  • HL7v2 儲存庫名稱
  • Cloud Storage bucket 中物件的位置
  • 存取權杖

以下範例說明如何使用 curl,透過 POST 要求匯入單一檔案。

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'gcsSource': {
        'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import"

如果要求成功,伺服器會以 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.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

PowerShell

如要將 HL7v2 訊息匯入 HL7v2 儲存庫,請提出 POST 要求,並指定下列資訊:

  • 父項資料集的名稱
  • HL7v2 儲存庫名稱
  • Cloud Storage bucket 中物件的位置
  • 存取權杖

下列範例說明如何使用 Windows PowerShell,透過 POST 要求匯入單一檔案。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'gcsSource': {
      'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import" | Select-Object -Expand Content

如果要求成功,伺服器會以 JSON 格式傳回回應:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

回應會包含作業名稱。如要追蹤作業狀態,可以使用 Operation get 方法

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

如果要求成功,伺服器會以 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.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

排解 HL7v2 匯入要求問題

如果匯入 HL7v2 訊息時發生錯誤,系統會將錯誤記錄至 Cloud Logging。詳情請參閱「查看 Cloud Logging 中的錯誤記錄檔」。

如果長期執行的作業傳回錯誤,請參閱排解長期執行的作業問題