在线播放 FHIR 资源并将其与 BigQuery 同步


本教程介绍了一些场景,在这些场景中,您可以使用 BigQuery 流式传输以近乎实时的速度使 FHIR 存储区与 BigQuery 数据集保持同步。

目标

本教程演示以下几个步骤:

  1. 配置 BigQuery 权限。
  2. 创建 FHIR 存储区并添加患者资源。
  3. 在 FHIR 存储区上配置 BigQuery 流式传输。
  4. 验证到 BigQuery 的流式传输配置。
  5. 将现有 FHIR 资源导出到 BigQuery。
  6. 将多个 FHIR 存储区中的资源流式传输到同一 BigQuery 数据集。

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Healthcare API.

    Enable the API

  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init

第 1 步:配置 BigQuery 权限

要将 FHIR 资源更改流式传输到 BigQuery,您必须向 Cloud Healthcare Service Agent 服务帐号授予额外权限。如需了解详情,请参阅FHIR 存储区 BigQuery 权限

第 2 步:配置和验证 BigQuery 流式传输

如需启用流式传输到 BigQuery 的功能,请按照以下说明操作:

创建 FHIR 存储区并添加患者资源

如需创建 FHIR 存储区并添加两个患者资源,请按照以下步骤操作:

  1. 创建 FHIR 存储区:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • LOCATION:数据集位置
    • DATASET_ID:FHIR 存储区的父数据集
    • FHIR_STORE_ID:FHIR 存储区的标识符。FHIR 存储区 ID 必须具有以下内容:
      • 数据集内的唯一 ID
      • 包含 1-256 个字符的 Unicode 字符串,由以下各项组成:
        • 数字
        • 字母
        • 下划线
        • 短划线
        • 英文句点
    • FHIR_STORE_VERSION:FHIR 版本的 FHIR 版本。可用选项包括 DSTU2、STU3 或 R4。

    请求 JSON 正文:

    {
      "version": "FHIR_STORE_VERSION"
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "version": "FHIR_STORE_VERSION"
    }
    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/fhirStores?fhirStoreId=FHIR_STORE_ID"

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "version": "FHIR_STORE_VERSION"
    }
    '@  | 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/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand Content

    API Explorer

    复制请求正文并打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行

    您应该收到类似以下内容的 JSON 响应:

  2. 在 FHIR 存储区中创建第一个患者资源:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • LOCATION:数据集位置
    • DATASET_ID:FHIR 存储区的父数据集
    • FHIR_STORE_ID:FHIR 存储区 ID

    请求 JSON 正文:

    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    EOF

    然后,执行以下命令以发送 REST 请求:

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

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.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

    您应该收到类似以下内容的 JSON 响应:

  3. 在 FHIR 存储区中创建第二个患者:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目 ID
    • LOCATION:父级数据集的位置
    • DATASET_ID:FHIR 存储区的父数据集
    • FHIR_STORE_ID:FHIR 存储区 ID

    请求 JSON 正文:

    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    EOF

    然后,执行以下命令以发送 REST 请求:

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

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.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

    您应该收到类似以下内容的 JSON 响应:

  4. 在 FHIR 存储区中搜索患者资源,并验证存储区是否包含两个患者资源:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目 ID
    • LOCATION:父级数据集的位置
    • DATASET_ID:FHIR 存储区的父数据集
    • FHIR_STORE_ID:FHIR 存储区 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/fhirStores/FHIR_STORE_ID/fhir/Patient"

    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/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

在 FHIR 存储区上配置 BigQuery 流式传输

更新 FHIR 存储区配置 BigQuery 流式传输。配置流式传输后,Cloud Healthcare API 会将任何资源更改流式传输到 BigQuery 数据集。

  1. 更新现有 FHIR 存储区以添加 BigQuery 数据集的位置:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目 ID
    • LOCATION:父级数据集的位置
    • DATASET_ID:FHIR 存储区的父数据集
    • FHIR_STORE_ID:您的 FHIR 存储区 ID
    • BIGQUERY_PROJECT_ID:包含用于流式传输 FHIR 资源更改的 BigQuery 数据集的 Google Cloud 项目
    • BIGQUERY_DATASET_ID:要在其中流式传输 FHIR 资源更改的 BigQuery 数据集

    请求 JSON 正文:

    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    EOF

    然后,执行以下命令以发送 REST 请求:

    curl -X PATCH \
    -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/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs"

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    然后,执行以下命令以发送 REST 请求:

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

    Invoke-WebRequest `
    -Method PATCH `
    -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/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

    API Explorer

    复制请求正文并打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行

    您应该收到类似以下内容的 JSON 响应:

验证到 BigQuery 的流式传输配置

通过完成以下步骤验证流式配置是否正确:

  1. 在 FHIR 存储区中创建第三个患者:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目 ID
    • LOCATION:父级数据集的位置
    • DATASET_ID:FHIR 存储区的父数据集
    • FHIR_STORE_ID:FHIR 存储区 ID

    请求 JSON 正文:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    EOF

    然后,执行以下命令以发送 REST 请求:

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

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.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

    您应该收到类似以下内容的 JSON 响应:

  2. 运行 bq query 以查询 BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient 表。BigQuery 按 FHIR 资源类型整理表。您创建的第三个患者资源位于 Patient 表中。

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'

    查询将返回以下结果。结果显示 BigQuery 表中有一条患者资源记录,因为您在 FHIR 存储区上配置流后添加了患者资源。

    +-----+
    | f0_ |
    +-----+
    |   1 |
    +-----+
    

第 3 步:将现有 FHIR 资源导出到 BigQuery

如果您的现有 FHIR 存储区包含要与 BigQuery 数据集同步的数据,则必须完成以下步骤以确保现有数据位于 BigQuery 中:

  1. 配置到 BigQuery 的流式传输。
  2. 将现有数据导出到 BigQuery 数据集。

如需在配置到 BigQuery 数据集的流式传输之前导出FHIR 存储区中存在的两个患者资源,请完成以下步骤:

  1. 要将 FHIR 存储区中的资源导出到 BigQuery,请运行 gcloud healthcare fhir-stores export bq 命令。该命令使用 --write-disposition=write-append 标志,该标志会将数据附加到现有 BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient 表。

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
       --dataset=DATASET_ID \
       --location=LOCATION \
       --bq-dataset=bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET \
       --schema-type=analytics_v2 \
       --write-disposition=write-append
  2. 查询 BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient 表以验证 BigQuery 数据集中的患者资源数量:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'

    该查询返回以下结果,显示 BigQuery 表中有 4 条患者记录:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

    BigQuery 表中的实际患者资源数量为 3,但查询返回 4。当资源包含不同操作中的重复项时,可能会发生不一致。在本例中,将第一个患者资源添加到 BigQuery 表中两次:

    • 流式插入患者资源的时间
    • 将 FHIR 存储区中的资源导出到 BigQuery 时

    BigQuery 表还包含第一个患者资源的变更历史记录。例如,如果使用 fhir.delete 删除患者资源,则 BigQuery 表将具有值 DELETEmeta.tag.code 列。

  3. 如需获取 FHIR 存储区中数据的最新快照,请查询视图。Cloud Healthcare API 仅通过查看每个资源的最新版本来构建视图。查询视图是保持 FHIR 存储区与其相应 BigQuery 表保持同步的最准确方法。

    如需查询视图,请运行以下命令:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'

    该查询返回以下结果,这些结果正确显示 BigQuery 表中有 3 个患者资源:

    +-----+
    | f0_ |
    +-----+
    |   3 |
    +-----+
    

第 4 步:将多个 FHIR 存储区中的资源流式传输到同一 BigQuery 数据集

在某些情况下,您可能希望将多个 FHIR 存储区中的 FHIR 资源流式传输到同一 BigQuery 数据集,以分析 FHIR 存储区中汇总的 FHIR 资源。

在以下步骤中,您将在第一个 FHIR 存储区所在的 Cloud Healthcare API 数据集中创建第二个 FHIR 存储区,但可以在集合 FHIR 资源时使用不同数据集中的 FHIR 存储区。

  1. 创建第二个启用了 BigQuery 流式传输的 FHIR 存储区,并使用您在在 FHIR 存储区上配置 BigQuery 流处理中使用的 BigQuery 数据集。

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目 ID
    • LOCATION:父级数据集的位置
    • DATASET_ID:FHIR 存储区的父数据集
    • SECOND_FHIR_STORE_ID:第二个 FHIR 存储区的标识符。FHIR 存储区 ID 在数据集中必须是独一无二的。FHIR 存储区 ID 可以是 1 到 256 个字符之间的任何 Unicode 字符串,由数字、字母、下划线、短划线和英文句点组成。
    • FHIR_STORE_VERSION:FHIR 存储区版本:DSTU2、STU3 或 R4
    • BIGQUERY_PROJECT_ID:包含用于流式传输 FHIR 资源更改的 BigQuery 数据集的 Google Cloud 项目
    • BIGQUERY_DATASET_ID:要在其中流式传输 FHIR 资源更改的 BigQuery 数据集

    请求 JSON 正文:

    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    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/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID"

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    '@  | 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/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID" | Select-Object -Expand Content

    API Explorer

    复制请求正文并打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行

    您应该收到类似以下内容的 JSON 响应:

  2. 在第二个 FHIR 存储区中创建患者资源:

    REST

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

    • PROJECT_ID:您的 Google Cloud 项目 ID
    • LOCATION:父级数据集的位置
    • DATASET_ID:FHIR 存储区的父数据集
    • SECOND_FHIR_STORE_ID:第二个 FHIR 存储区 ID

    请求 JSON 正文:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    EOF

    然后,执行以下命令以发送 REST 请求:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient"

    PowerShell

    将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

  3. 查询 BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient 表以验证 BigQuery 表中的患者资源数量:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'

    在流式传输有关新患者的数据时,BigQuery 使用 BigQuery 数据集中的现有 Patient 表。该查询返回以下结果,显示 BigQuery 表中有 5 条患者资源记录。请参阅将现有的 FHIR 资源导出到 BigQuery,了解表格中包含 5 项资源(而非 4 项)的原因。

    +-----+
    | f0_ |
    +-----+
    |   5 |
    +-----+
    
  4. 运行以下命令以查询视图:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'

    查询返回以下结果,显示组合第一个和第二个 FHIR 存储区以及 BigQuery 表中有 4 个患者资源:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

清理

如果您为此教程创建了新项目,请按照删除项目中的步骤操作。要仅删除 Cloud Healthcare API 和 BigQuery 资源,请完成删除 Cloud Healthcare API 数据集删除 BigQuery 数据集中的步骤。

删除项目

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

删除 Cloud Healthcare API 数据集

如果您不再需要在本教程中创建的 Cloud Healthcare API 数据集,可以将其删除。删除数据集将永久删除数据集及其包含的任何 FHIR 存储区。

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

    gcloud healthcare datasets delete DATASET_ID \
    --location=LOCATION \
    --project=PROJECT_ID

    请替换以下内容:

    • DATASET_ID:Cloud Healthcare API 数据集
    • LOCATION:数据集的位置
    • PROJECT_ID:您的 Google Cloud 项目 ID
  2. 要确认,请键入 Y

输出如下所示:

Deleted dataset [DATASET_ID].

删除 BigQuery 数据集

如果您不再需要本教程中创建的 BigQuery 数据集,可以将其删除。删除数据集将永久删除数据集及其包含的任何表。

  1. 移除 BIGQUERY_PROJECT_IDBIGQUERY_DATASET_ID 数据集,方法是运行 bq rm 命令:

    bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID

    --recursive 标志会删除数据集中的所有表,包括 Patient 表。

  2. 要确认,请键入 Y

后续步骤