快速入门:使用 gcloud 命令行工具

本页面介绍了如何将 Cloud Healthcare API 与 gcloud 命令行工具搭配使用来完成以下任务:

  1. 创建 Cloud Healthcare API 数据集。
  2. 在数据集内创建以下数据存储区之一:
    • 医学数字图像和通信 (DICOM) 存储区
    • 快速医疗互操作性资源 (FHIR) 存储区
    • Health Level Seven International 版本 2 (HL7v2) 存储区
  3. 存储 DICOM、FHIR 和 HL7v2 数据,并查看 DICOM 元数据。

如果您只想使用一种数据存储区,则可在完成准备工作以及创建数据集中的步骤后,直接跳到快速入门的相应部分。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 启用 Cloud Healthcare API。

    启用 API

  5. 根据您使用 gcloud 命令行工具的方式,完成以下任一步骤:
    • 如果您使用的是 Cloud Shell,请转到 Google Cloud Console,然后点击控制台窗口顶部的激活 Cloud Shell 按钮。

      转到 Google Cloud Console

      一个 Cloud Shell 会话随即会在控制台底部的新方框内打开,并显示命令行提示符。该 Shell 会话可能需要几秒钟来完成初始化。

    • 如果您使用的是 Compute Engine 虚拟机,请打开虚拟机的终端窗口。
    • 如果您在机器上使用的是 gcloud 工具,请安装并初始化 Cloud SDK

创建数据集

数据集包含数据存储区,数据存储区包含医疗保健数据。要使用 Cloud Healthcare API,您必须至少创建一个数据集。

使用 gcloud healthcare datasets create 命令创建数据集:

gcloud healthcare datasets create DATASET_ID \
    --location=LOCATION

替换以下内容:

  • DATASET_ID:数据集的标识符。数据集 ID 必须符合以下条件:
    • 位置中的唯一 ID
    • 包含 1-256 个字符的 Unicode 字符串,由以下各项组成:
      • 数字
      • 字母
      • 下划线
      • 短划线
      • 英文句点
  • LOCATION:数据集的位置。请使用 us-central1us-west2us-east4europe-west2europe-west3europe-west4europe-west6northamerica-northeast1southamerica-east1asia-east2asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1us

输出如下所示:

Created dataset [DATASET_ID].

如需完成本快速入门,请从以下部分中选择一个:

存储和查看 DICOM 实例

本部分介绍了如何完成以下任务:

  1. 创建 DICOM 存储区。
  2. 将 DICOM 实例从 Cloud Storage 导入 DICOM 存储区。
  3. 查看 DICOM 实例的元数据。

Cloud Healthcare API 实现了 DICOMweb 标准,用于存储和访问医学成像数据。

创建 DICOM 存储区

DICOM 存储区位于数据集内,包含 DICOM 实例。

使用 gcloud healthcare dicom-stores create 命令创建 DICOM 存储区:

gcloud healthcare dicom-stores create DICOM_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION

替换以下内容:

  • DICOM_STORE_ID:DICOM 存储区的标识符。DICOM 存储区 ID 必须具有以下内容:
    • 数据集内的唯一 ID
    • 包含 1-256 个字符的 Unicode 字符串,由以下各项组成:
      • 数字
      • 字母
      • 下划线
      • 短划线
      • 英文句点
  • DATASET_ID:数据集 ID
  • LOCATION:数据集位置

输出如下所示:

Created dicomStore [DICOM_STORE_ID].

导入 DICOM 实例

gs://gcs-public-data--healthcare-nih-chest-xray Cloud Storage 存储桶中提供了示例 DICOM 数据。

使用 gcloud healthcare dicom-stores import 命令导入 gs://gcs-public-data--healthcare-nih-chest-xray/dicom/00000001_000.dcm DICOM 实例:

gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --gcs-uri=gs://gcs-public-data--healthcare-nih-chest-xray/dicom/00000001_000.dcm

替换以下内容:

  • DICOM_STORE_ID:DICOM 存储区 ID
  • DATASET_ID:数据集 ID
  • LOCATION:数据集位置

输出如下所示:

Request issued for: [DICOM_STORE_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID

查看 DICOM 实例元数据

gcloud 工具不支持 DICOMweb 事务,例如查看或检索实例。您可以改用 Google 的 DICOMweb 命令行工具。DICOMweb 命令行工具使用 Python 运行。如需了解如何在 Google Cloud 上设置 Python,请参阅设置 Python 开发环境

查看 DICOM 实例元数据:

  1. 设置 Python 之后,使用 Pip 安装 DICOMweb 命令行工具:

    pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
    
  2. 查看 DICOM 实例的元数据:

    dcmweb \
      https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \
      search instances
    

    请替换以下内容:

    • DICOM_STORE_ID:DICOM 存储区 ID
    • DATASET_ID:数据集 ID
    • LOCATION:数据集位置

    输出如下所示:

    [
      {
        "00080016": {
          "Value": [
            "1.2.840.10008.5.1.4.1.1.7"
          ],
          "vr": "UI"
        },
        "00080018": {
          "Value": [
            "1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480"
          ],
          "vr": "UI"
        },
        "00080060": {
          "Value": [
            "DX"
          ],
          "vr": "CS"
        },
        "00100020": {
          "Value": [
            "1"
          ],
          "vr": "LO"
        },
        "00100040": {
          "Value": [
            "M"
          ],
          "vr": "CS"
        },
        "0020000D": {
          "Value": [
            "1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604"
          ],
          "vr": "UI"
        },
        "0020000E": {
          "Value": [
            "1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724"
          ],
          "vr": "UI"
        },
        "00280010": {
          "Value": [
            1024
          ],
          "vr": "US"
        },
        "00280011": {
          "Value": [
            1024
          ],
          "vr": "US"
        },
        "00280100": {
          "Value": [
            8
          ],
          "vr": "US"
        }
      }
    ]
    

现在,您已将 DICOM 实例存储在 Cloud Healthcare API 中并查看了其元数据,请继续查看后续步骤以了解后续步骤,例如如何搜索或检索 DICOM 图片。

存储 FHIR 资源

本部分介绍了如何完成以下任务:

  1. 创建 FHIR 存储区。
  2. 将 FHIR 资源从 Cloud Storage 存储桶导入 FHIR 存储区。

创建 FHIR 存储区

FHIR 存储区位于数据集内,包含 FHIR 资源。

使用 gcloud healthcare fhir-stores create 命令创建 FHIR 存储区:

gcloud healthcare fhir-stores create FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --version=R4

请替换以下内容:

  • FHIR_STORE_ID:FHIR 存储区的标识符。FHIR 存储区 ID 必须具有以下内容:
    • 数据集内的唯一 ID
    • 包含 1-256 个字符的 Unicode 字符串,由以下各项组成:
      • 数字
      • 字母
      • 下划线
      • 短划线
      • 英文句点
  • DATASET_ID:数据集 ID
  • LOCATION:数据集位置

输出如下所示:

Created fhirStore [FHIR_STORE_ID].

导入 FHIR 资源

示例 FHIR 数据可在 gs://gcp-public-data--synthea-fhir-data-10-patients Cloud Storage 存储桶中获取。该存储桶包含一个目录 fhir_r4_ndjson/,该目录包含多种类型的 FHIR 资源。

使用 gcloud healthcare fhir-stores import 命令将存储桶中的 FHIR 资源导入 FHIR 存储区:

gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --gcs-uri=gs://gcp-public-data--synthea-fhir-data-10-patients/fhir_r4_ndjson/*.ndjson \
  --content-structure=RESOURCE

替换以下内容:

  • FHIR_STORE_ID:FHIR 存储区 ID
  • DATASET_ID:数据集 ID
  • LOCATION:数据集位置

输出如下所示:

Request issued for: [FHIR_STORE_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID
version: R4

现在,您已将 FHIR 资源存储在 Cloud Healthcare API 中,请继续查看后续步骤以了解后续步骤,例如如何在 FHIR 存储区中查看和搜索 FHIR 资源。

存储 HL7v2 消息

本部分介绍了如何完成以下任务:

  1. 创建 HL7v2 存储区
  2. 创建 Cloud Storage 存储分区并将 HL7v2 消息复制到其中。
  3. 将 Cloud Storage 存储分区中的 HL7v2 消息导入 HL7v2 存储区。

Cloud Healthcare API 中的 HL7v2 实现符合 HL7v2 标准

创建 HL7v2 存储区

HL7v2 存储区位于数据集内,其中包含 HL7v2 消息。

使用 gcloud healthcare hl7V2-stores create 命令创建 HL7v2 存储区:

gcloud healthcare hl7V2-stores create HL7V2_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION

请替换以下内容:

  • HL7V2_STORE_ID:HL7v2 存储区的标识符。HL7v2 存储区 ID 必须具有以下内容:
    • 数据集内的唯一 ID
    • 包含 1-256 个字符的 Unicode 字符串,由以下各项组成:
      • 数字
      • 字母
      • 下划线
      • 短划线
      • 英文句点
  • DATASET_ID:数据集 ID
  • LOCATION:数据集位置

输出如下所示:

Created hl7v2Store [HL7V2_STORE_ID].

导入 HL7v2 消息

将 HL7v2 示例消息文件存储在 Cloud Storage 存储桶中,然后将示例消息文件导入 HL7v2 存储区:

  1. 示例 HL7v2 消息文件下载到您的机器上。该消息包含以下基本信息,它采用 base-64 编码存放在示例文件的 data 字段中:

    MSH|^~\&|A|SEND_FACILITY|A|A|20180101000000||TYPE^A|20180101000000|T|0.0|||AA||00|ASCII
    EVN|A00|20180101040000
    PID||14^111^^^^MRN|11111111^^^^MRN~1111111111^^^^ORGNMBR
    
  2. 如果您还没有希望用于存储示例 HL7v2 消息的 Cloud Storage 存储分区,请使用 gsutil mb 命令创建一个新的存储分区:

    gsutil mb gs://BUCKET
    

    BUCKET 变量替换为您自己的全局唯一存储分区名称。

    输出如下所示:

    Creating gs://BUCKET/...
    

    如果您选择的存储分区名称已被您或其他人占用,则该命令将返回如下消息:

    Creating gs://BUCKET/...
    ServiceException: 409 Bucket BUCKET already exists.
    

    如果存储分区名称已被使用,请使用其他存储分区名称重试。

  3. 使用 gsutil cp 命令将示例 HL7v2 消息复制到存储分区中:

    gsutil cp hl7v2-sample-import.ndjson gs://BUCKET
    

    输出如下所示:

    Copying file://hl7v2-sample-import.ndjson [Content-Type=application/octet-stream]...
    / [1 files][  241.0 B/  241.0 B]
    Operation completed over 1 objects/241.0 B.
    
  4. 将 HL7v2 文件复制到存储分区后,请使用 gcloud beta healthcare hl7V2-stores import 命令导入 HL7v2 消息:

    gcloud beta healthcare hl7v2-stores import gcs HL7V2_STORE_ID \
     --dataset=DATASET_ID \
     --location=LOCATION \
     --gcs-uri=gs://BUCKET/hl7v2-sample-import.ndjson
    

    请替换以下内容:

    • HL7V2_STORE_ID:HL7v2 存储区 ID
    • DATASET_ID:数据集 ID
    • LOCATION:数据集位置
    • BUCKET:包含 HL7v2 文件的 Cloud Storage 存储桶的名称

    输出如下所示:

    Request issued for: [HL7V2_STORE_ID]
    Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done.
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID
    

现在,您已将 HL7v2 消息存储在 Cloud Healthcare API 中,请继续查看后续步骤以了解后续步骤,例如如何在存储区中查看 HL7v2 消息白内容。

清理

为避免系统因本快速入门中使用的资源向您的 Google Cloud 帐号收取费用,您可以清理在 Google Cloud 上创建的资源。

如果您为此教程创建了新项目,请按照删除项目中的步骤操作。否则,请按照删除数据集中的步骤操作。

删除项目

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除数据集

如果您不再需要在本快速入门中创建的数据集,可以将其删除。删除数据集会永久删除该数据集以及其中包含的任何 FHIR、HL7v2 或 DICOM 存储区。

  1. 如需删除数据集,请使用 gcloud healthcare datasets delete 命令:

    gcloud healthcare datasets delete DATASET_ID \
    --location=LOCATION \
    --project=PROJECT_ID
    
  2. 要确认,请键入 Y

输出如下所示:

Deleted dataset [DATASET_ID].

结果怎么样?

后续步骤

请参阅以下各部分,了解 Cloud Healthcare API 的一般信息,以及如何使用 Cloud Console 或 curl 和 Windows PowerShell 执行任务。

DICOM

继续参阅 DICOM 指南,查看以下主题:

如需了解 Cloud Healthcare API 如何实现 DICOMweb 标准,请参阅 DICOM 一致性声明

FHIR

继续参阅 FHIR 指南,查看以下主题:

如需了解 Cloud Healthcare API 如何实现 FHIR 标准,请参阅 FHIR 一致性声明

HL7v2

继续参阅 HL7v2 指南,查看以下主题: