本页面介绍了如何将 HL7v2 消息从 HL7v2 存储区导出到 Cloud Storage。您可以将 HL7v2 消息批量导出到 Cloud Storage 以进行下游处理。
准备工作
如需了解必须向 Cloud Healthcare Service Agent 服务账号授予哪些角色,请参阅从 Cloud Storage 导出 HL7v2 消息。
将 HL7v2 消息导出到 Cloud Storage
Cloud Healthcare API 会将每条 HL7v2 消息导出为 NDJSON .ndjson 文件中的一行。HL7v2 消息按其 sendTime 值的时间顺序排序。
导出到 Cloud Storage 存储桶或文件夹(而不是对象),因为当有许多 HL7v2 消息时,Cloud Healthcare API 可能会创建多个 NDJSON 文件。
如果您导出到不存在的 Cloud Storage 文件夹,系统会创建该文件夹。
控制台
要将 HL7v2 消息导出到 Cloud Storage,请完成以下步骤:
在 Google Cloud 控制台中,前往数据集页面。
单击包含要从中导出 HL7v2 消息的 HL7v2 存储的数据集。
在数据存储区列表中,从 HL7v2 存储区的操作列表选择导出。
系统会显示导出 HL7v2 消息页面。
在项目列表中,选择一个 Cloud Storage 项目。
在位置列表中,选择一个 Cloud Storage 存储分区。
点击导出,将 HL7v2 实例导出到 Cloud Storage 中的指定位置。
- 要跟踪操作的状态,请点击操作标签页。操作完成后,系统会显示以下指示:
- 长时间运行的操作状态部分下方的确定标题下会显示一个绿色的对勾标记。
- 概览部分在操作 ID 的同一行中显示一个绿色对勾标记和一个确定指示符。
使用过滤条件将 HL7v2 消息导出到 Cloud Storage
默认情况下,将 HL7v2 消息导出到 Cloud Storage 时,系统会导出 HL7v2 存储区中的所有 HL7v2 消息以及每个 Message 对象中的所有字段。
您可以按如下方式过滤导出的 HL7v2 消息:
- 使用过滤条件导出符合过滤条件的部分 HL7v2 消息。如需了解详情,请参阅使用过滤条件导出部分 HL7v2 消息。
- 使用
MessageView对象选择每个Message中要导出的字段。如需了解详情,请参阅按Message字段导出 HL7v2 消息。
使用过滤条件导出部分 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 消息。
REST
使用
hl7V2Stores.export方法导出 HL7v2 消息:在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:数据集位置DATASET_ID:HL7v2 存储区的父数据集HL7V2_STORE_ID:HL7v2 存储区 IDCLOUD_STORAGE_LOCATION:用于写入导出的 HL7v2 消息的 Cloud Storage 存储桶或文件夹的名称
请求 JSON 正文:
{ "gcsDestination": { "uriPrefix": "gs://CLOUD_STORAGE_LOCATION" }, "filter": "message_type = \"ADT\"" }如需发送请求,请选择以下方式之一:
输出如下所示。响应包含长时间运行的操作 (LRO) 的标识符。如果方法调用可能需要额外的时间才能完成,系统就会返回长时间运行的操作。记下curl
将请求正文保存在名为
request.json的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "gcsDestination": { "uriPrefix": "gs://CLOUD_STORAGE_LOCATION" }, "filter": "message_type = \"ADT\"" } EOF然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"PowerShell
将请求正文保存在名为
request.json的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "gcsDestination": { "uriPrefix": "gs://CLOUD_STORAGE_LOCATION" }, "filter": "message_type = \"ADT\"" } '@ | Out-File -FilePath request.json -Encoding utf8然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export" | Select-Object -Expand ContentOPERATION_ID的值。您需要在下一步中使用此值。使用
projects.locations.datasets.operations.get方法可获取长时间运行的操作的状态。在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的 Google Cloud 项目的 IDDATASET_ID:数据集 IDLOCATION:数据集位置OPERATION_ID:从长时间运行的操作返回的 ID
如需发送请求,请选择以下方式之一:
输出如下所示。当响应包含curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
执行以下命令:
$cred = gcloud auth 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 ContentAPI Explorer
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
"done": true时,长时间运行的操作已完成。
按 Message 字段导出 HL7v2 消息
在 Cloud Healthcare API 中,HL7v2 消息存储在 Message 资源中。您可以使用 MessageView 枚举来确定每个导出的 HL7v2 消息中包含 Message 资源中的哪些字段。
以下示例展示了如何在 MessageView 中使用 BASIC 值,以便仅在导出的 HL7v2 消息中包含 name 字段。
REST
使用
hl7V2Stores.export方法导出 HL7v2 消息:在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:数据集位置DATASET_ID:HL7v2 存储区的父数据集HL7V2_STORE_ID:HL7v2 存储区 IDCLOUD_STORAGE_LOCATION:用于写入导出的 HL7v2 消息的 Cloud Storage 存储桶或文件夹的名称
请求 JSON 正文:
{ "gcsDestination": { "uriPrefix": "gs://CLOUD_STORAGE_LOCATION", "messageView": "BASIC" } }如需发送请求,请选择以下方式之一:
输出如下所示。响应包含长时间运行的操作 (LRO) 的标识符。如果方法调用可能需要额外的时间才能完成,系统就会返回长时间运行的操作。记下curl
将请求正文保存在名为
request.json的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "gcsDestination": { "uriPrefix": "gs://CLOUD_STORAGE_LOCATION", "messageView": "BASIC" } } EOF然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"PowerShell
将请求正文保存在名为
request.json的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "gcsDestination": { "uriPrefix": "gs://CLOUD_STORAGE_LOCATION", "messageView": "BASIC" } } '@ | Out-File -FilePath request.json -Encoding utf8然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export" | Select-Object -Expand ContentOPERATION_ID的值。您需要在下一步中使用此值。使用
projects.locations.datasets.operations.get方法可获取长时间运行的操作的状态。在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的 Google Cloud 项目的 IDDATASET_ID:数据集 IDLOCATION:数据集位置OPERATION_ID:从长时间运行的操作返回的 ID
如需发送请求,请选择以下方式之一:
输出如下所示。当响应包含curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
执行以下命令:
$cred = gcloud auth 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 ContentAPI Explorer
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
"done": true时,长时间运行的操作已完成。
对 HL7v2 导出请求进行问题排查
如果在导出 HL7v2 消息时发生错误,系统会将错误记录到 Cloud Logging。如需了解详情,请参阅在 Cloud Logging 中查看错误日志。
如果长时间运行的操作返回错误,请参阅排查长时间运行的操作的问题。