快速入门:使用 curl 或 Windows PowerShell

本页面介绍了如何将 Cloud Healthcare API 与 curl 和 Windows PowerShell 搭配使用来完成以下任务:

  1. 创建 Cloud Healthcare API 数据集。
  2. 在数据集内创建 DICOM、FHIR 或 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. 安装并初始化 Cloud SDK
  6. 使用 gcloud 命令行工具测试您的身份验证环境。检查以下命令是否输出无错误的文本字符串:
    gcloud auth application-default print-access-token

提示:需要命令提示符?您可以使用 Google Cloud Shell。Google Cloud Shell 命令行环境已经包含 Google Cloud SDK,因此您无需再进行安装。(Google Compute Engine 虚拟机也预装了 Google Cloud SDK。)

创建数据集

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

curl

如需创建数据集,请发出 POST 请求,并为数据集提供名称和位置。以下示例展示了使用 curlPOST 请求。

设置 LOCATION 变量时,请使用 us-central1us-west2us-east4europe-west2europe-west4europe-west6northamerica-northeast1southamerica-east1asia-east2asia-northeast1asia-southeast1australia-southeast1us

curl -X POST \
    --data "" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID"

如果请求成功,服务器将以 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 格式返回包含操作状态的响应。当响应包含 "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.dataset.DatasetService.CreateDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.dataset.Dataset",
    "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
  }
}

PowerShell

如需创建数据集,请发出 POST 请求,并为数据集提供名称和位置。以下示例展示了使用 Windows PowerShell 的 POST 请求。

设置 LOCATION 变量时,请使用 us-central1us-west2us-east4europe-west2europe-west4europe-west6northamerica-northeast1southamerica-east1asia-east2asia-northeast1asia-southeast1australia-southeast1us

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | 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 格式返回包含操作状态的响应。当响应包含 "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.dataset.DatasetService.CreateDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.dataset.Dataset",
    "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
  }
}

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

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

存储和查看 DICOM 实例

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

  1. 创建 DICOM 存储区。
  2. 将 DICOM 实例存储在 DICOM 存储区中。
  3. 查看 DICOM 实例的元数据。

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

  1. DICOM 存储区位于数据集内,用于存储 DICOM 实例。您可以使用 projects.locations.datasets.dicomStores.create 方法创建 DICOM 存储区。

    curl

    如需创建 DICOM 存储区,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • DICOM 存储区的名称。DICOM 存储区 ID 在其父数据集中必须唯一。它可以是从 1 到 256 个字符的任意 Unicode 字符串,由数字、字母、下划线、短划线和句点组成。

    以下示例展示了使用 curlPOST 请求。

    curl -X POST \
        --data "" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores?dicomStoreId=DICOM_STORE_ID"
    

    如果请求成功,则服务器会返回 JSON 格式的以下响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID"
    }
    

    PowerShell

    如需创建 DICOM 存储区,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • DICOM 存储区的名称。DICOM 存储区 ID 在其父数据集中必须唯一。它可以是从 1 到 256 个字符的任意 Unicode 字符串,由数字、字母、下划线、短划线和句点组成。

    以下示例展示了使用 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" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores?dicomStoreId=DICOM_STORE_ID" | Select-Object -Expand Content
    

    如果请求成功,则服务器返回 JSON 格式的类似下列示例的响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID"
    }
    

  2. 示例 DICOM 实例文件下载到您的机器。该文件包含去标识化的患者 X 光片。

  3. 运行以下命令,将 DICOM 实例存储在您创建好的 DICOM 存储区中:

    curl

    如需存储 DICOM 实例,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • DICOM 存储区的名称
    • 您的机器上的 DICOM 实例文件的文件名和位置

    以下示例展示了使用 curlPOST 请求。

    curl -X POST \
        -H "Content-Type: application/dicom" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        --data-binary @dicom_00000001_000.dcm \
        https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies
    

    如果请求成功,则服务器会返回 XML 格式的以下响应:

    <NativeDicomModel>
      <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
        <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604</Value>
      </DicomAttribute>
      <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
        <Item number="1">
          <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
            <Value number="1">1.2.840.10008.5.1.4.1.1.7</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID">
            <Value number="1">1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
            <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604/series/1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724/instances/1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
        </Item>
      </DicomAttribute>
    </NativeDicomModel>
    

    PowerShell

    如需存储 DICOM 实例,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • DICOM 存储区的名称
    • 您的机器上的 DICOM 实例文件的文件名和位置

    以下示例展示了使用 Windows PowerShell 的 POST 请求:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/dicom" `
      -InFile dicom_00000001_000.dcm `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
    

    如果请求成功,则服务器会返回 XML 格式的以下响应:

    <NativeDicomModel>
      <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
        <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604</Value>
      </DicomAttribute>
      <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
        <Item number="1">
          <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
            <Value number="1">1.2.840.10008.5.1.4.1.1.7</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID">
            <Value number="1">1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
            <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604/series/1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724/instances/1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
        </Item>
      </DicomAttribute>
    </NativeDicomModel>
    

  4. 在 DICOM 存储区中搜索实例,以查看您存储的实例的元数据:

    curl

    如需查看您已存储的 DICOM 实例的元数据,请发出 GET 请求并指定以下信息:

    • 父级数据集的名称和位置
    • DICOM 存储区的名称

    以下示例展示了使用 curl 在 DICOM 存储区中搜索实例的 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/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
    

    如果请求成功,服务器将以 JSON 格式返回响应:

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

    PowerShell

    如需查看您已存储的 DICOM 实例的元数据,请发出 GET 请求并指定以下信息:

    • 父级数据集的名称和位置
    • DICOM 存储区的名称

    以下示例展示了使用 Windows PowerShell 在 DICOM 存储区中搜索实例的 GET 请求:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
    

    如果请求成功,服务器将以 JSON 格式返回响应:

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

现在您已在 Cloud Healthcare API 中存储和查看了 DICOM 实例,请继续查看后续步骤以了解后续步骤。

存储和查看 FHIR 资源

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

  1. 创建 FHIR 存储区。
  2. 在 FHIR 存储区中存储 FHIR 资源。
  3. 查看 FHIR 资源的数据。

Cloud Healthcare API 实现了 FHIR 规范标准,用于存储和访问 FHIR 数据。

  1. FHIR 存储区位于数据集内,用于存储 FHIR 资源。您可以使用 projects.locations.datasets.fhirStores.create 方法创建 FHIR 存储区:

    curl

    如需创建 FHIR 存储区,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • FHIR 存储区的名称。FHIR 存储区 ID 在其父数据集中必须是唯一的。它可以是从 1 到 256 个字符的任意 Unicode 字符串,由数字、字母、下划线、短划线和句点组成。
    • FHIR 存储区的 FHIR 版本,可用选项包括 DSTU2STU3R4。在本快速入门中,请使用 R4

    以下示例展示了使用 curlPOST 请求。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          'version': 'R4'
        }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"
    

    如果请求成功,则服务器会返回 JSON 格式的以下响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "version": "R4"
    }
    

    PowerShell

    如需创建 FHIR 存储区,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • FHIR 存储区的名称。FHIR 存储区 ID 在其父数据集中必须是唯一的。它可以是从 1 到 256 个字符的任意 Unicode 字符串,由数字、字母、下划线、短划线和句点组成。
    • FHIR 存储区的 FHIR 版本:DSTU2STU3R4

    以下示例展示了使用 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 "{
          'version': 'R4'
      }" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand Content
    

    如果请求成功,服务器将以 JSON 格式返回响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "version": "R4"
    }
    

  2. 保存示例 JSON FHIR 资源文件。该文件包含针对一个患者资源的基本数据。

  3. 运行以下命令,将患者资源存储在您创建的 FHIR 存储区中:

    curl

    如需通过示例文件创建患者资源,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • FHIR 存储区的名称
    • 您的机器上的 FHIR 资源文件的文件名和位置

    以下示例展示了如何使用 curl 来发送创建该患者资源的 POST 请求:

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/fhir+json; charset=utf-8" \
        --data @Patient.json \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
    

    如果请求成功,则服务器将返回以下响应:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "LAST_UPDATED",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
    }
    

    PowerShell

    如需通过示例文件创建患者资源,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • FHIR 存储区的名称
    • 您的机器上的 FHIR 资源文件的文件名和位置

    以下示例展示了如何使用 Windows PowerShell 发送 POST 请求来创建患者资源:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/dicom" `
      -InFile Patient.json `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content
    

    如果请求成功,则服务器将返回以下响应:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "LAST_UPDATED",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
    }
    

  4. 在 FHIR 存储区中搜索资源,以查看该患者的相关信息:

    curl

    如需搜索该患者资源并查看其详细信息,请发出 GET 请求并指定以下信息:

    • 父级数据集的名称和位置
    • FHIR 存储区的名称
    • 包含您要搜索的信息的查询字符串。在本示例中,您要搜索的是患者的姓氏。

    以下示例显示了一个使用 curl 搜索所有姓“Smith”患者的 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/fhirStores/FHIR_STORE_ID/fhir/Patient?family:exact=Smith"
    

    如果请求成功,服务器将以 JSON 格式的 FHIR Bundle形式返回响应。Bundle.typesearchset,搜索结果是 Bundle.entry 数组中的条目。在此示例中,请求返回单个患者资源,包括该资源内的数据:

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    如需搜索该患者资源并查看其详细信息,请发出 GET 请求并指定以下信息:

    • 父级数据集的名称和位置
    • FHIR 存储区的名称
    • 包含您要搜索的信息的查询字符串。在本示例中,您要搜索的是患者的姓氏。

    以下示例显示了一个使用 Windows PowerShell 搜索所有姓“Smith”患者的 GET 请求。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE?family:exact=Smith" | ConvertTo-Json
    

    如果请求成功,服务器将以 JSON 格式的 FHIR Bundle形式返回响应。Bundle.typesearchset,搜索结果是 Bundle.entry 数组中的条目。在此示例中,请求返回单个患者资源,包括该资源内的数据:

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

现在您已在 Cloud Healthcare API 中存储和查看了 FHIR 资源,请继续查看后续步骤以了解后续步骤。

存储和查看 HL7v2 消息

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

  1. 创建 HL7v2 存储区
  2. 将 HL7v2 消息存储在 HL7v2 存储区中。
  3. 查看 HL7v2 消息的数据。

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

  1. HL7v2 存储区位于数据集内,用于存储 HL7v2 数据。您可以使用 projects.locations.datasets.hl7V2Stores.create 方法创建 HL7v2 存储区。

    curl

    如要创建 HL7v2 存储区,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • HL7v2 存储区的名称。HL7v2 存储区 ID 在其父数据集中必须是唯一的。它可以是从 1 到 256 个字符的任意 Unicode 字符串,由数字、字母、下划线、短划线和句点组成。

    以下示例展示了使用 curlPOST 请求。

    curl -X POST \
        --data "" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"
    

    如果请求成功,则服务器会返回 JSON 格式的以下响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"
    }
    

    PowerShell

    如要创建 HL7v2 存储区,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • HL7v2 存储区的名称。HL7v2 存储区 ID 在其父数据集中必须是唯一的。它可以是从 1 到 256 个字符的任意 Unicode 字符串,由数字、字母、下划线、短划线和句点组成。

    以下示例展示了使用 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" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content
    

    如果请求成功,则服务器返回 JSON 格式的类似下列示例的响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/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 消息的方法有两种:创建和提取。如需了解详情,请参阅创建和提取 HL7v2 消息概览。在此示例中,您使用创建的方法来存储 HL7v2 消息,因为提取方法通常使用来自医护中心的 HL7v2 消息。

    运行以下命令,将 HL7v2 消息存储在您创建的 HL7v2 存储区中:

    curl

    如需存储 HL7v2 消息,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • HL7v2 存储区的名称
    • 您的机器上的 HL7v2 消息文件的名称和位置

    以下示例展示了使用 curlPOST 请求。

    curl -X POST \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         -H "Content-Type: application/json; charset=utf-8" \
         --data-binary @hl7v2-sample.json \
         "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
    

    如果请求成功,则服务器会返回 JSON 格式的以下响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ]
    }
    

    PowerShell

    如需存储 HL7v2 消息,请发出 POST 请求并指定以下信息:

    • 父级数据集的名称和位置
    • HL7v2 存储区的名称
    • 您的机器上的 HL7v2 消息文件的名称和位置

    以下示例展示了使用 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" `
      -InFile hl7v2-sample.json `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
    

    如果请求成功,则服务器会返回 JSON 格式的以下响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ]
    }
    

  4. 使用您在创建消息时收到的响应中的 MESSAGE_ID 运行以下命令来查看消息的详细信息:

    curl

    如需获取 HL7v2 消息的内容,请发出 GET 请求并指定以下信息:

    • 父级数据集的名称和位置
    • HL7v2 存储区的名称
    • 消息 ID

    以下示例展示了使用 curlGET 请求。

    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/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID"
    

    如果请求成功,服务器将以 JSON 格式返回响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ],
      "parsedData": {
        "segments": [
          {
            "segmentId": "MSH",
            "fields": {
              "5": "A",
              "8.1": "TYPE",
              "6": "20180101000000",
              "8.2": "A",
              "3": "SEND_FACILITY",
              "4": "A",
              "11": "0.0",
              "10": "T",
              "1": "^~\\&",
              "17": "ASCII",
              "2": "A",
              "0": "MSH",
              "14": "AA",
              "9": "20180101000000",
              "16": "00"
            }
          },
          {
            "segmentId": "EVN",
            "fields": {
              "2": "20180101040000",
              "0": "EVN",
              "1": "A00"
            }
          },
          {
            "segmentId": "PID",
            "fields": {
              "3[0].5": "MRN",
              "3[1].1": "1111111111",
              "3[1].5": "ORGNMBR",
              "0": "PID",
              "2.1": "14\u0001111",
              "2.5": "MRN",
              "3[0].1": "11111111"
            }
          }
        ]
      }
    }
    

    PowerShell

    如需获取 HL7v2 消息的内容,请发出 GET 请求并指定以下信息:

    • 父级数据集的名称和位置
    • HL7v2 存储区的名称
    • 消息 ID

    以下示例展示了使用 Windows PowerShell 的 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/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" | Select-Object -Expand Content
    

    如果请求成功,服务器将以 JSON 格式返回响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ],
      "parsedData": {
        "segments": [
          {
            "segmentId": "MSH",
            "fields": {
              "5": "A",
              "8.1": "TYPE",
              "6": "20180101000000",
              "8.2": "A",
              "3": "SEND_FACILITY",
              "4": "A",
              "11": "0.0",
              "10": "T",
              "1": "^~\\&",
              "17": "ASCII",
              "2": "A",
              "0": "MSH",
              "14": "AA",
              "9": "20180101000000",
              "16": "00"
            }
          },
          {
            "segmentId": "EVN",
            "fields": {
              "2": "20180101040000",
              "0": "EVN",
              "1": "A00"
            }
          },
          {
            "segmentId": "PID",
            "fields": {
              "3[0].5": "MRN",
              "3[1].1": "1111111111",
              "3[1].5": "ORGNMBR",
              "0": "PID",
              "2.1": "14\u0001111",
              "2.5": "MRN",
              "3[0].1": "11111111"
            }
          }
        ]
      }
    }
    

现在您已在 Cloud Healthcare API 中存储和查看了 HL7v2 消息,请继续查看后续步骤以了解后续步骤。

清理

为避免系统因本快速入门中使用的资源向您的 Google Cloud 帐号收取费用,您可以清理在 Google Cloud 上创建的资源。 如果您为此教程创建了新项目,请按照删除项目中的步骤操作。否则,请按照删除数据集中的步骤操作。

删除项目

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

    转到“管理资源”

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

删除数据集

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

curl

如需删除数据集,请发送 DELETE 请求并提供其名称和位置。以下示例展示了使用 curlDELETE 请求:

curl -X DELETE \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"

如果请求成功,服务器将以 JSON 格式返回响应:

{}

PowerShell

如需删除数据集,请发送 DELETE 请求,并提供该数据集的名称和位置。以下示例展示了使用 Windows PowerShell 的 DELETE 请求:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Delete `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID" | Select-Object -Expand Content

如果请求成功,服务器将以 JSON 格式返回响应:

{}

结果怎么样?

后续步骤

参阅以下部分,了解 Cloud Healthcare API 的一般信息以及如何使用 Cloud Console 和 gcloud 命令行工具执行任务:

DICOM

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

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

FHIR

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

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

HL7v2

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