将 HL7v2 消息导出到 Cloud Storage

本页介绍了如何将 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,请完成以下步骤:

  1. 在 Google Cloud 控制台中,进入数据集页面。

    前往“数据集”页面

  2. 单击包含要从中导出 HL7v2 消息的 HL7v2 存储的数据集。

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

    系统会显示导出 HL7v2 消息页面。

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

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

  6. 点击导出,将 HL7v2 实例导出到 Cloud Storage 中的指定位置。

  7. 要跟踪操作的状态,请点击操作标签页。操作完成后,系统会显示以下指示:
    • 长时间运行的操作状态部分下方的确定标题下会显示一个绿色的对勾标记。
    • 概览部分在操作 ID 的同一行中显示一个绿色对勾标记和一个确定指示符。
    如果您遇到任何错误,请点击操作,然后点击在 Cloud Logging 中查看详细信息

使用过滤条件将 HL7v2 消息导出到 Cloud Storage

默认情况下,将 HL7v2 消息导出到 Cloud Storage 时,系统会导出 HL7v2 存储区中的所有 HL7v2 消息以及每个 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

  1. 使用 hl7V2Stores.export 方法导出 HL7v2 消息:

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • LOCATION:数据集位置
    • DATASET_ID:HL7v2 存储区的父数据集
    • HL7V2_STORE_ID:HL7v2 存储区 ID
    • CLOUD_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 Content
    输出如下所示。响应包含长时间运行的操作 (LRO) 的标识符。当方法调用可能需要额外时间才能完成时,会返回长时间运行的操作。记下 OPERATION_ID 的值。下一步中您需要用到该值。

  2. 使用 projects.locations.datasets.operations.get 方法获取长时间运行的操作的状态。

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • DATASET_ID:数据集 ID
    • LOCATION:数据集位置
    • 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 Content

    API Explorer

    打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

    输出如下所示。如果响应包含 "done": true,则表示长时间运行的操作已完成。

Message 字段导出 HL7v2 消息

在 Cloud Healthcare API 中,HL7v2 消息存储在 Message 资源中。您可以使用 MessageView 枚举来确定每个导出的 HL7v2 消息中包含 Message 资源中的哪些字段。

以下示例展示了如何使用 MessageView 中的 BASIC 值,以便在导出的 HL7v2 消息中仅包含 name 字段。

REST

  1. 使用 hl7V2Stores.export 方法导出 HL7v2 消息:

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • LOCATION:数据集位置
    • DATASET_ID:HL7v2 存储区的父数据集
    • HL7V2_STORE_ID:HL7v2 存储区 ID
    • CLOUD_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 Content
    输出如下所示。响应包含长时间运行的操作 (LRO) 的标识符。当方法调用可能需要额外时间才能完成时,会返回长时间运行的操作。记下 OPERATION_ID 的值。下一步中您需要用到该值。

  2. 使用 projects.locations.datasets.operations.get 方法获取长时间运行的操作的状态。

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • DATASET_ID:数据集 ID
    • LOCATION:数据集位置
    • 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 Content

    API Explorer

    打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

    输出如下所示。如果响应包含 "done": true,则表示长时间运行的操作已完成。

对 HL7v2 导出请求进行问题排查

如果在导出 HL7v2 消息时发生错误,系统会将错误记录到 Cloud Logging。如需了解详情,请参阅在 Cloud Logging 中查看错误日志

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