本页介绍了如何将 HL7v2 消息从 HL7v2 存储区导出到 Cloud Storage。您可以将 HL7v2 消息批量导出到 Cloud Storage 以进行下游处理。
准备工作
如需了解您必须向 Cloud Healthcare Service Agent 服务账号授予的角色,请参阅从 Cloud Storage 导出 HL7v2 消息。
将 HL7v2 消息导出到 Cloud Storage
执行此任务所需的权限
如需执行此任务,您必须已获得以下权限或以下 Identity and Access Management (IAM) 角色:
权限
- 请求 HL7v2 存储区上的
healthcare.hl7V2Stores.export
权限
角色
您可以要求管理员为您授予这些 Identity and Access Management 角色。如需了解如何授予角色,请参阅管理访问权限或控制对 Cloud Healthcare API 资源的访问。您也可以通过自定义角色或其他预定义角色来获取所需的权限。
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 消息。
使用
hl7V2Stores.export
方法导出 HL7v2 消息:在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目的 IDPROJECT_ID
:数据集位置LOCATION
:HL7v2 存储区的父数据集DATASET_ID
:HL7v2 存储区 IDHL7V2_STORE_ID
:用于写入导出的 HL7v2 消息的 Cloud Storage 存储分区或文件夹的名称CLOUD_STORAGE_LOCATION
请求 JSON 正文:
{ "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" }如需发送请求,请选择以下方式之一:
将请求正文保存在名为
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"将请求正文保存在名为
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
的值。下一步中您需要用到该值。响应
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }使用
projects.locations.datasets.operations.get
方法获取长时间运行的操作的状态。在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目的 IDPROJECT_ID
:数据集 IDDATASET_ID
:数据集位置LOCATION
:从长时间运行的操作返回的 IDOPERATION_ID
如需发送请求,请选择以下方式之一:
执行以下命令:
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 "执行以下命令:
$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 Content打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
"done": true
,则表示长时间运行的操作已完成。响应
{ "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": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL " "counter": { "success": "SUCCESS_COUNT ", // If there were any failures, they display in the `failure` field. "failure": "FAILURE_COUNT " } }, "done": true, // The `response` field only displays if there were no errors. "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse", }, // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. "error": { "code":ERROR_CODE , "message": "DESCRIPTION ", "details": [ { "@type": "...",FIELD1 : ..., ... } ] } }
按 Message
字段导出 HL7v2 消息
在 Cloud Healthcare API 中,HL7v2 消息存储在 Message
资源中。您可以使用 MessageView
枚举来确定每个导出的 HL7v2 消息中包含 Message
资源中的哪些字段。
以下示例展示了如何使用 MessageView
中的 BASIC
值,以便在导出的 HL7v2 消息中仅包含 name
字段。
使用
hl7V2Stores.export
方法导出 HL7v2 消息:在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目的 IDPROJECT_ID
:数据集位置LOCATION
:HL7v2 存储区的父数据集DATASET_ID
:HL7v2 存储区 IDHL7V2_STORE_ID
:用于写入导出的 HL7v2 消息的 Cloud Storage 存储分区或文件夹的名称CLOUD_STORAGE_LOCATION
请求 JSON 正文:
{ "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } }如需发送请求,请选择以下方式之一:
将请求正文保存在名为
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"将请求正文保存在名为
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
的值。下一步中您需要用到该值。响应
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }使用
projects.locations.datasets.operations.get
方法获取长时间运行的操作的状态。在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目的 IDPROJECT_ID
:数据集 IDDATASET_ID
:数据集位置LOCATION
:从长时间运行的操作返回的 IDOPERATION_ID
如需发送请求,请选择以下方式之一:
执行以下命令:
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 "执行以下命令:
$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 Content打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
"done": true
,则表示长时间运行的操作已完成。响应
{ "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": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL " "counter": { "success": "SUCCESS_COUNT ", // If there were any failures, they display in the `failure` field. "failure": "FAILURE_COUNT " } }, "done": true, // The `response` field only displays if there were no errors. "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse", }, // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. "error": { "code":ERROR_CODE , "message": "DESCRIPTION ", "details": [ { "@type": "...",FIELD1 : ..., ... } ] } }
对 HL7v2 导出请求进行问题排查
如果在导出 HL7v2 消息时发生错误,系统会将错误记录到 Cloud Logging。如需了解详情,请参阅在 Cloud Logging 中查看错误日志。
如果长时间运行的操作返回错误,请参阅排查长时间运行的操作的问题。