从 Cloud Storage 导入 HL7v2 消息

本页介绍了如何将 HL7v2 消息从 Cloud Storage 导入 HL7v2 存储区。与使用 REST API 单独存储 HL7v2 消息相比,批量导入 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 控制台中,进入数据集页面。

    前往“数据集”页面

  2. 单击包含要向其导入 HL7v2 消息的 HL7v2 存储的数据集。

  3. 在数据存储区列表中,从 HL7v2 存储区的操作列表中选择导入

    系统会显示导入 HL7v2 存储区页面。

  4. 项目列表中,选择一个 Cloud Storage 项目。

  5. 位置列表中,选择一个 Cloud Storage 存储分区。

  6. 要设置导入文件的特定位置,请执行以下操作:

    1. 展开高级选项
    2. 选择替换 Cloud Storage 路径
    3. 要设置特定的文件导入来源,请在位置文本框中定义路径。您可以使用通配符从一个或多个目录中导入多个文件。如需详细了解对象命名,请参阅对象命名指南

      支持以下通配符:
      • 使用 * 可以匹配零个或更多的非分隔符字符。例如,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. 要跟踪操作的状态,请点击操作标签页。操作完成后,系统会显示以下指示:
    • 长时间运行的操作状态部分下方的确定标题下会显示一个绿色的对勾标记。
    • 概览部分在操作 ID 的同一行中显示一个绿色对勾标记和一个确定指示符。
    如果您遇到任何错误,请点击操作,然后点击在 Cloud Logging 中查看详细信息

API

以下示例展示了如何使用 projects.locations.datasets.hl7V2Stores.import 方法从 Cloud Storage 导入 HL7v2 消息。

在调用导入操作时,请注意以下事项:

  • 文件在存储分区中的位置是任意的,无需严格遵循以下示例中指定的格式。
  • 指定 HL7v2 消息在 Cloud Storage 中的位置时,您可以使用通配符从一个或多个目录中导入多个文件。 支持以下通配符:
    • 使用 * 可以匹配零个或更多的非分隔符字符。例如,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 存储分区中的位置
  • 访问令牌

以下示例展示了如何使用 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 存储分区中的位置
  • 访问令牌

以下示例展示了如何在 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 中查看错误日志

如果长时间运行的操作返回错误,请参阅排查长时间运行的操作的问题