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

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

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

准备工作

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

    转到“项目选择器”

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

  4. 启用 Cloud Healthcare API。

    启用 API

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

      转到 Google Cloud Console

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

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

创建数据集

数据集是在 Google Cloud 中保存医疗保健数据的基本容器。要使用 Cloud Healthcare API,您必须至少创建一个数据集。

如需创建数据集,请使用 gcloud healthcare datasets create 命令

gcloud healthcare datasets create DATASET_ID \
    --location=LOCATION

请替换以下内容:

  • DATASET_ID:数据集的标识符。数据集 ID 在位置内必须是唯一的。数据集 ID 可以是 1-256 字符的任何 Unicode 字符串,由数字、字母、下划线、短划线和英文句点组成。
  • LOCATION:要在其中创建数据集的 Google Cloud 位置。请使用 us-central1us-west2us-east4europe-west2europe-west4europe-west6northamerica-northeast1southamerica-east1asia-east2asia-northeast1asia-southeast1australia-southeast1us。要使用项目的默认区域,请省略 --location 选项。

输出如下所示:

Created dataset [DATASET_ID].

存储和查看 DICOM、FHIR 和 HL7v2 数据

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

存储和查看 DICOM 实例

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

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

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

  1. DICOM 存储区位于数据集内,包含 DICOM 实例。如需创建 DICOM 存储区,请使用 gcloud healthcare dicom-stores create 命令:

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

    请替换以下内容:

    • DICOM_STORE_ID:DICOM 存储区的标识符。DICOM 存储区 ID 在数据集中必须具有唯一性。DICOM 存储 ID 可以是 1 到 256 个字符之间的任何 Unicode 字符串,由数字、字母、下划线、短划线和英文句点组成。
    • DATASET_ID:DICOM 存储区的父级数据集的名称。
    • LOCATION:父级数据集的位置。

    输出如下所示:

    Created dicomStore [DICOM_STORE_ID].
    
  2. 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 存储区的标识符。
    • DATASET_ID:DICOM 存储区的父级数据集的名称。
    • 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
    
  3. (可选)gcloud 工具不支持 DICOMweb 事务,例如查看或检索实例。您可以改用 Google 的 DICOMweb 命令行工具。DICOMweb 命令行工具使用 Python 运行。如需了解如何在 Google Cloud 上设置 Python,请参阅设置 Python 开发环境

    设置 Python 后,您可以使用 Pip 安装该工具:

    pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
    

    如需查看实例的元数据,请使用 DICOMweb 命令行工具运行以下命令:

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

    输出如下所示:

    [
      {
        "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. 创建 Cloud Storage 存储分区并将 FHIR 资源文件复制到其中。
  3. 将 FHIR 资源从 Cloud Storage 存储分区导入 FHIR 存储区。

如需完成本快速入门,请按以下步骤操作:

  1. FHIR 存储区位于数据集内,包含 FHIR 资源。如需创建 FHIR 存储区,请使用 gcloud healthcare fhir-stores create 命令:

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

    请替换以下内容:

    • FHIR_STORE_ID:FHIR 存储区的标识符。FHIR 存储区 ID 在数据集中必须是独一无二的。FHIR 存储区 ID 可以是 1 到 256 个字符之间的任何 Unicode 字符串,由数字、字母、下划线、短划线和英文句点组成。
    • DATASET_ID:FHIR 存储区的父级数据集的名称。
    • LOCATION:父级数据集的位置。
    • FHIR 存储区版本的可用选项包含 DSTU2STU3R4。在本快速入门中,请使用 STU3

    输出如下所示:

    Created fhirStore [FHIR_STORE_ID].
    
  2. 示例 JSON FHIR 资源文件保存到您的机器中。此文件包含患者资源的基本数据以及患者拥有的 Encounter。

  3. 如果您还没有希望用于存储示例 FHIR 资源文件的 Cloud Storage 存储分区,请使用 gsutil mb 命令创建一个新的存储分区:

    gsutil mb gs://BUCKET
    

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

    输出如下所示:

    Creating gs://BUCKET/...
    

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

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

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

  4. 使用 gsutil cp 命令将示例 JSON FHIR 资源文件复制到存储分区中:

    gsutil cp resources.ndjson gs://BUCKET
    

    输出如下所示:

    Copying file://resources.ndjson [Content-Type=application/octet-stream]...
    / [1 files][  860.0 B/  860.0 B]
    Operation completed over 1 objects/860.0 B.
    
  5. 将 FHIR 资源文件复制到存储分区后,请使用 gcloud healthcare fhir-stores import 命令导入 FHIR 资源:

    gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \
     --dataset=DATASET_ID \
     --location=LOCATION \
     --gcs-uri=gs://BUCKET/resources.ndjson \
     --content-structure=RESOURCE
    

    请替换以下内容:

    • FHIR_STORE_ID:FHIR 存储区的标识符。
    • DATASET_ID:FHIR 存储区的父级数据集的名称。
    • LOCATION:父级数据集的位置。
    • BUCKET:包含 FHIR 资源文件的 Cloud Storage 存储分区的名称。

    输出如下所示:

    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: STU3
    

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

存储和查看 HL7v2 消息

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

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

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

  1. HL7v2 存储区位于数据集内,其中包含 HL7v2 消息。如需创建 HL7v2 存储区,请使用 gcloud healthcare hl7V2-stores create 命令。

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

    请替换以下内容:

    • HL7V2_STORE_ID:HL7v2 存储区的标识符。HL7v2 存储区 ID 在数据集中必须具有唯一性。HL7v2 存储 ID 可以是 1 到 256 个字符的任意一个 Unicode 字符串,由数字、字母、下划线、短划线和英文句点组成。
    • DATASET_ID:HL7v2 存储区的父级数据集的名称。
    • LOCATION:父级数据集的位置。

    输出如下所示:

    Created hl7v2Store [HL7V2_STORE_ID].
    
  2. 示例 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
    
  3. 如果您还没有希望用于存储示例 HL7v2 消息的 Cloud Storage 存储分区,请使用 gsutil mb 命令创建一个新的存储分区:

    gsutil mb gs://BUCKET
    

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

    输出如下所示:

    Creating gs://BUCKET/...
    

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

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

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

  4. 使用 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.
    
  5. 将 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 存储区的标识符。
    • DATASET_ID:HL7v2 存储区的父级数据集的名称。
    • 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 指南,查看以下主题: