Healthcare Natural Language API

Healthcare Natural Language API 是 Cloud Healthcare API 的一部分,它使用自然语言模型从医疗文本中提取医疗保健信息。

本概念指南说明了使用 Healthcare Natural Language API 的基础知识,包括:

  • 可以向 Healthcare Natural Language API 发出的请求类型
  • 如何构建向 Healthcare Natural Language API 发出的请求
  • 如何处理来自 Healthcare Natural Language API 的响应

概览

Healthcare Natural Language API 会从医学文本中提取医疗保健信息。这些医疗保健信息可能包括:

  • 医学概念,例如药物、手术和身体异常状况
  • 功能特征,例如时间关系、主体和确定性评估
  • 关系,例如副作用和药物剂量

在 Healthcare Natural Language API 与 AutoML Entity Extraction for Healthcare 之间选择

Healthcare Natural Language API 提供预训练的自然语言模型,用于从医学文本中提取医学概念和关系。Healthcare Natural Language API 会将文本映射到一组预定义的医学知识类别

借助 AutoML Entity Extraction for Healthcare,您可以创建使用您自己的带注释医学文本和您自己的类别训练的自定义实体提取模型。如需了解详情,请参阅 AutoML Entity Extraction for Healthcare 文档

可用位置

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

地点名称 地点描述
us-central1 美国爱荷华州
europe-west4 荷兰

Healthcare Natural Language API 特征

Healthcare Natural Language API 检查医学文本中的医学概念和关系。您可以使用 analyzeEntities 方法执行实体分析。

实体分析请求字段

Healthcare Natural Language API 是一个 REST API,由 JSON 请求和响应组成。以下示例显示了使用 curl 的简单 Healthcare Natural Language API 请求:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data "{
    'nlpService': 'projects/PROJECT_ID/locations/LOCATION/services/nlp',
    'documentContent': 'Insulin regimen human 5 units IV administered.'
}" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"

示例请求演示了以下字段:

  • nlpService 包含 NLP 服务的资源名称。
  • documentContent 包含请求的数据,由医学文本组成。医学文本的大小上限为 10000 个 Unicode 字符。

实体分析响应字段

实体分析返回一组检测到的医学知识提及、医学概念以及医学知识提及之间的关系。

以下响应展示了对实体分析请求字段中示例请求的响应:

{
  "entityMentions": [
    {
      "mentionId": "1",
      "type": "MEDICINE",
      "text": {
        "content": "Insulin regimen human"
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/3537244"
        },
        {
          "entityId": "UMLS/3714501"
        },
        {
          "entityId": "UMLS/21641"
        },
        {
          "entityId": "UMLS/795635"
        },
        {
          "entityId": "UMLS/1533581"
        },
        {
          "entityId": "UMLS/4721402"
        }
      ],
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.87631082534790039
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.9999774694442749
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.99999970197677612
      },
      "confidence": 0.41636556386947632
    },
    {
      "mentionId": "2",
      "type": "MED_DOSE",
      "text": {
        "content": "5 units",
        "beginOffset": 22
      },
      "confidence": 0.56910794973373413
    },
    {
      "mentionId": "3",
      "type": "MED_ROUTE",
      "text": {
        "content": "IV",
        "beginOffset": 30
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/348016"
        }
      ],
      "confidence": 0.9180646538734436
    }
  ],
  "entities": [
    {
      "entityId": "UMLS/1533581",
      "preferredTerm": "Therapeutic Insulin",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C581"
      ]
    },
    {
      "entityId": "UMLS/21641",
      "preferredTerm": "Insulin",
      "vocabularyCodes": [
        "FMA/83365",
        "LNC/LA15805-7",
        "LNC/LP14676-8",
        "LNC/LP16325-0",
        "LNC/LP32542-0",
        "LNC/LP70329-5",
        "LNC/MTHU002108",
        "LNC/MTHU019392",
        "MSH/D007328",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/348016",
      "preferredTerm": "Intravenous",
      "vocabularyCodes": [
        "LNC/LA9437-0",
        "LNC/LP32453-0",
        "MTH/NOCODE",
        "NCI/C13346"
      ]
    },
    {
      "entityId": "UMLS/3537244",
      "preferredTerm": "Insulins",
      "vocabularyCodes": [
        "MSH/D061385",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/3714501",
      "preferredTerm": "Insulin Drug Class",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "VANDF/4021631"
      ]
    },
    {
      "entityId": "UMLS/4721402",
      "preferredTerm": "INS protein, human",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C2271"
      ]
    },
    {
      "entityId": "UMLS/795635",
      "preferredTerm": "insulin, regular, human",
      "vocabularyCodes": [
        "LNC/LP17001-6",
        "MSH/D061386",
        "MTH/NOCODE",
        "NCI/C29125",
        "RXNORM/253182",
        "VANDF/4017559",
        "VANDF/4017569",
        "VANDF/4019786"
      ]
    }
  ],
  "relationships": [
    {
      "subjectId": "1",
      "objectId": "2",
      "confidence": 0.53775161504745483
    },
    {
      "subjectId": "1",
      "objectId": "3",
      "confidence": 0.95007365942001343
    }
  ]
}

该示例演示了以下响应字段:

  • entityMentions 是源医学文本中医学知识实体的出现实例。每个实体提及都包含以下字段:

    • mentionId 是响应中的实体提及的唯一标识符。
    • type 是实体提及的医学知识类别
    • text 包括 textContent(包含实体提及的医学文本摘录)和 offset(实体提及在源医学文本中的位置)。
    • temporalAssessment 指定关联的实体如何与实体提及相关:CURRENTPERSONAL_HISTORYFAMILY_HISTORYFUTURISTICALLERGY 之一。
    • certaintyAssessment 是医学概念的否定或限定:POSITIVEPOSSIBLE_POSITIVEUNCERTAINPOSSIBLE_NEGATIVENEGATIVECONDITIONAL 之一。
    • subject 指定医学概念与之相关的主体:PATIENTFAMILY_MEMBEROTHER 之一。
    • linkedEntities 列出可能与此实体提及相关的医学概念。关联的实体指定将医学概念关联到 entities 中的实体的 entityId
  • entities 描述来自关联实体字段的医学概念。每个实体使用以下字段进行描述:

    • entityIdlinkedEntities 中的唯一标识符。
    • preferredTerm 是医学概念的首选术语。
    • vocabularyCodes 是医学概念在支持的医学词汇中的表示形式。
  • relationships 定义实体提及之间的有向关系。在示例中,关系的主体是“人胰岛素疗法”,关系的对象是“5 个单位”。confidence 表示关系中模型的置信度,为 0 到 1 之间的数字。

支持的医学词汇

Healthcare Natural Language API 支持以下医学词汇:

  • 剖析学基础模型
  • 基因本体论
  • 人类基因组组织基因命名委员会
  • 人类表型术语集
  • ICD-9-CM
  • MeSH
  • 超级叙词表名称
  • NCBI 生物分类数据库
  • NCI 叙词表
  • 美国国家药品档案
  • 在线人类孟德尔遗传
  • RXNORM
  • LOINC
  • ICD-10 操作编码系统

支持的医学知识类别

Healthcare Natural Language API 支持以下医学知识类别:

医学知识类别 说明
PROBLEM 身体异常状况,包括发现结果和疾病
SEVERITY 身体异常状况的严重程度
PROCEDURE 诊断或治疗操作
PROC_METHOD 执行操作的方法
PROCEDURE_RESULT 操作的结果
MEDICINE 用于治疗或预防疾病的药品或其他准备
MED_DOSE 药物剂量
MED_DURATION 用药时长
MED_FORM 特定药物的物理特征
MED_FREQUENCY 药物的服用频率
MED_ROUTE 药物施用的身体位置
MED_STATUS 对于现有药物,状态可以是一个修饰语,例如“继续”、“开始”、“重新开始”、“停止”、“交换”、“增加”、“减少”。
MED_STRENGTH 一剂药物中有效成分的量
MED_TOTALDOSE 一次服用的药物数量
MED_UNIT 药物中有效成分的计量单位
ANATOMICAL_STRUCTURE 人体的复杂部位
LABORATORY_DATA 人体样本的检测结果
LAB_RESULT 对实验数据的定性描述,例如升高、降低、阳性或阴性
LAB_VALUE 实验数据实例的值
LAB_UNIT 实验值的计量单位
BODY_MEASUREMENT 常规身体测量,例如生命体征
BM_RESULT 身体测量结果
BM_VALUE 身体测量的值
BM_UNIT 身体测量的单位
MEDICAL_DEVICE 物理或虚拟仪器
SUBSTANCE_ABUSE 精神活性物质滥用
BODY_FUNCTION 人体进行的机能.
BF_RESULT 身体机能结果

支持的功能特征类别

Healthcare Natural Language API 可以根据情景推断实体提及的功能特征或特性。例如,在语句“kusuma 的母亲有糖尿病”中,条件“糖尿病”的功能特征为 subject FAMILY_MEMBER

时间关系

temporalAssessment 字段中返回的时间关系描述了此实体提及如何与主体在时间上相关。

Healthcare Natural Language API 支持以下时间关系:

  • CURRENT
  • CLINICAL_HISTORY
  • FAMILY_HISTORY
  • UPCOMING
  • ALLERGY

主体

subject 字段中返回的主体描述了实体提及与之相关的个体。

Healthcare Natural Language API 支持以下主体:

  • PATIENT
  • FAMILY_MEMBER
  • OTHER

确定性评估

certaintyAssessment 字段中返回的确定性评估描述了原始记录者的置信度。例如,如果原始备注包含“患者喉咙痛”,确定性评估会返回 LIKELY 值,以表明记录者认为患者可能喉咙痛的置信度。如果原始备注包含“患者喉咙不痛”,则确定性评估会返回 NOT_LIKELY 值,以表明记录者认为患者不太可能喉咙痛的置信度。

确定性评估可以是以下值之一:

  • LIKELY
  • SOMEWHAT_LIKELY
  • UNCERTAIN
  • SOMEWHAT_UNLIKELY
  • UNLIKELY
  • CONDITIONAL

实体提及之间所支持的关系

Healthcare Natural Language API 可以根据周围的医学文本推断实体提及之间的关系。在响应中,关系的主体由 subjectId 标识,关系的对象由 objectId 标识。

Healthcare Natural Language API 支持实体提及之间的以下关系:

主体 对象
ANATOMICAL_STRUCTURE MEDICAL_DEVICE
BODY_FUNCTION BF_RESULT
BODY_MEASUREMENT BM_RESULT
BODY_MEASUREMENT BM_UNIT
BODY_MEASUREMENT BM_VALUE
LABORATORY_DATA LAB_RESULT
LABORATORY_DATA LAB_UNIT
LABORATORY_DATA LAB_VALUE
MEDICINE MED_DOSE
MEDICINE MED_DURATION
MEDICINE MED_FORM
MEDICINE MED_FREQUENCY
MEDICINE MED_ROUTE
MEDICINE MED_STATUS
MEDICINE MED_STRENGTH
MEDICINE MED_TOTALDOSE
MEDICINE MED_UNIT
PROBLEM ANATOMICAL_STRUCTURE
PROBLEM MEDICINE
PROBLEM PROCEDURE
PROBLEM SEVERITY
PROCEDURE ANATOMICAL_STRUCTURE
PROCEDURE PROC_METHOD
PROCEDURE PROCEDURE_RESULT
SUBSTANCE_ABUSE SEVERITY