本页介绍了如何将 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\"" }
如需发送请求,请选择以下方式之一:
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" } }
如需发送请求,请选择以下方式之一:
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 中查看错误日志。
如果长时间运行的操作返回错误,请参阅排查长时间运行的操作的问题。