使用 Healthcare Natural Language API

本页面介绍了如何启用 Healthcare Natural Language API、如何配置权限以及如何调用 analyzeEntities 方法从医学信息中提取医学数据分析。

概览

Healthcare Natural Language API 提供用于从医学文本提取数据分析的机器学习解决方案。Healthcare Natural Language API 是 Cloud Healthcare API 的一部分。如需简要了解 Healthcare Natural Language API,请参阅 Healthcare Natural Language API 概念文档

Healthcare Natural Language API 会解析非机构化医学文本,例如医疗记录或保险索赔。然后,它会生成存储在这些数据源中的医学知识实体的结构化数据表示,以用于下游分析和自动化。例如,您可以:

  • 提取关于疾病、药物、医疗设备、手术及其临床相关特性等医学概念的信息
  • 将医学概念与 RxNorm、ICD-10、MeSH 和 SNOEDED CT 等标准医学词汇相对应(仅限美国用户)
  • 从文本中提取医学数据分析,并将其与 Google Cloud 中的数据分析产品集成

可用位置

Healthcare Natural Language API 在以下位置可用:

地点名称 地点描述
asia-south1 印度孟买
australia-southeast1 澳大利亚悉尼
europe-west2 英国伦敦
europe-west4 荷兰
northamerica-northeast1 加拿大蒙特利尔
us-central1 美国爱荷华州

启用 Healthcare Natural Language API

在开始使用 Healthcare Natural Language API 之前,您必须为您的 Google Cloud 项目启用该 API。您可以在不启用或使用 Cloud Healthcare API 功能的情况下使用 Healthcare Natural Language API。

如需启用 API,请完成以下步骤:

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Project > Owner role to the service account.

      To grant the role, find the Select a role list, then select Project > Owner.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  5. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.
  6. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含凭据的 JSON 文件的路径。 此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。

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

    Go to project selector

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Project > Owner role to the service account.

      To grant the role, find the Select a role list, then select Project > Owner.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  10. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.
  11. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含凭据的 JSON 文件的路径。 此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。

  12. 启用 Cloud Healthcare API。

    启用 API

  13. 安装 Google Cloud CLI。
  14. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init

设置权限

为了使用本指南中的功能,您必须拥有 healthcare.nlpservice.analyzeEntities 权限,它包含在 healthcare.nlpServiceViewer 角色中。

如需分配此角色,请运行 gcloud projects add-iam-policy-binding 命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member serviceAccount:SERVICE_ACCOUNT_ID \
    --role roles/healthcare.nlpServiceViewer

提取实体、关系和情境特性

Healthcare Natural Language API 使用情境感知模型来提取医疗实体、关系和情境特性。每个文本实体会提取到一个医学字典条目中。如需从医学文本中提取此级层的医学数据分析,请使用 projects.locations.services.nlp.analyzeEntities 方法。

如需在请求中包含许可的词汇,例如国际疾病分类、第十版临床修改 (ICD10CM)SNOMED 临床术语 (SNOMEDCT_US),请参阅包括许可的词汇

如需使用 Healthcare Natural Language API 从医学文本中提取医学数据分析,请发出 POST 请求并在 documentContent 字段中指定目标文本。医学文本的大小上限为 20,000 个 Unicode 字符。

以下示例展示了如何使用 analyzeEntities 方法从医学文本“胰岛素方案:人体静脉注射 5 个单位”中提取医学数据分析。

REST

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

  • PROJECT_ID:您的 Google Cloud 项目的 ID
  • LOCATION:数据集位置

请求 JSON 正文:

{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes."
}

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

curl

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

cat > request.json << 'EOF'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes."
}
EOF

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

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"

PowerShell

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

@'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes."
}
'@  | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities" | Select-Object -Expand Content

如果请求成功,响应中会包含以下信息:

  • 识别出的医学知识实体
  • 功能特征
  • 识别出的实体之间的关系
  • 情境特性
  • 将医学知识实体映射到标准术语

如需查看受支持的实体、属性和关系类型的列表,请参阅 Healthcare Natural Language API 功能

以下响应将治疗性胰岛素(NCI 术语系统中代码 C581 的实体)标识为药物。响应还包含为响应分配的置信度分数。如需详细了解响应字段,请参阅 analyzeEntities 文档。

包含已获许可的词汇

您可以在向 Healthcare Natural Language API 发出的请求中添加以下许可词汇:

以下示例展示了如何向 Healthcare Natural Language API 发出 POST 请求,并在 licensedVocabularies 对象中包含这两种可用的许可词汇。您可以指定一个或多个可用的许可词汇。

REST

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

  • PROJECT_ID:您的 Google Cloud 项目的 ID
  • LOCATION:数据集位置

请求 JSON 正文:

{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "licensedVocabularies": [
    "SNOMEDCT_US",
    "ICD10CM"
  ]
}

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

curl

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

cat > request.json << 'EOF'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "licensedVocabularies": [
    "SNOMEDCT_US",
    "ICD10CM"
  ]
}
EOF

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

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"

PowerShell

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

@'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "licensedVocabularies": [
    "SNOMEDCT_US",
    "ICD10CM"
  ]
}
'@  | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities" | Select-Object -Expand Content
如果请求成功,响应会包含来自 SNOMEDCT_USICD10CM 许可词汇表的词汇代码。输出如下所示,所请求的许可词汇代码以粗体显示:

将输出提取为 FHIR R4 软件包

您可以从文本中提取实体,并将其映射到 FHIR R4 资源和元素。生成的 FHIR R4 软件包包括 JSON 格式的所有实体、实体提及和关系。例如,Healthcare Natural Language API 将基本实体 PROBLEM 映射到 Condition FHIR R4 资源,实体 PROBLEM.ANATOMICAL_STRUCTURE 映射到 Condition.bodySite FHIR 元素。如需查看其他映射的列表,请参阅以 FHIR 软件包形式提供的 Healthcare Natural Language API 输出

以下示例展示了如何向 Healthcare Natural Language API 发出 POST 请求并提取 FHIR R4 软件包中的文本实体。如需了解详情,请参阅 AlternativeOutputFormat 对象。

REST

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

  • PROJECT_ID:您的 Google Cloud 项目的 ID
  • LOCATION:数据集位置

请求 JSON 正文:

{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "alternativeOutputFormat": "FHIR_BUNDLE"
}

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

curl

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

cat > request.json << 'EOF'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "alternativeOutputFormat": "FHIR_BUNDLE"
}
EOF

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

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"

PowerShell

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

@'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "alternativeOutputFormat": "FHIR_BUNDLE"
}
'@  | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities" | Select-Object -Expand Content
如果请求成功,则响应将包含一个具有以下条目的 JSON 对象:
  • 已识别的实体采用类似于 提取实体、关系和上下文特性 (Extract entity,lations and contextual Properties) 中的输出的格式提及实体及其关系。
  • 包含字符串格式的 FHIR Bundle 资源的 fhirBundle 键。FHIR 软件包包括所有实体、实体提及项以及 JSON 格式的关系。