本页介绍了如何将 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 消息,请完成以下步骤:
在 Google Cloud 控制台中,进入数据集页面。
单击包含要向其导入 HL7v2 消息的 HL7v2 存储的数据集。
在数据存储区列表中,从 HL7v2 存储区的操作列表中选择导入。
系统会显示导入 HL7v2 存储区页面。
在项目列表中,选择一个 Cloud Storage 项目。
在位置列表中,选择一个 Cloud Storage 存储分区。
要设置导入文件的特定位置,请执行以下操作:
- 展开高级选项。
- 选择替换 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。
- 使用
点击导入,从定义的来源导入 HL7v2 消息。
- 要跟踪操作的状态,请点击操作标签页。操作完成后,系统会显示以下指示:
- 长时间运行的操作状态部分下方的确定标题下会显示一个绿色的对勾标记。
- 概览部分在操作 ID 的同一行中显示一个绿色对勾标记和一个确定指示符。
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 中查看错误日志。
如果长时间运行的操作返回错误,请参阅排查长时间运行的操作的问题。