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 には、医療テキストからなるリクエストのデータが含まれています。医療テキストの最大サイズは 10,000 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 では、リンクされたエンティティ フィールドの医療コンセプトを記述します。各エンティティは、次のフィールドを使用して記述されます。

    • entityId は、linkedEntities の一意の識別子です。
    • preferredTerm は、医療コンセプトの優先用語です。
    • vocabularyCodes は、サポートされている医療語彙での医療コンセプトの表現です。
  • relationships は、エンティティへの言及間の有向関係を定義します。この例では、関係のタイトルは「Insulin regimen human」で、関係のオブジェクトは「5 units」です。confidence は、関係におけるモデルの信頼度を 0〜1 の数値で示します。

サポートされている医療用語

Healthcare Natural Language API では、次の医療用語がサポートされます。

  • Foundational Model of Anatomy
  • Gene Ontology
  • HUGO Gene Nomenclature Committee
  • Human Phenotype Ontology
  • ICD-9-CM
  • MeSH
  • Metathesaurus Names
  • NCBI Taxonomy
  • NCI Thesaurus
  • National Drug File
  • Online Mendelian Inheritance in Man
  • RxNorm
  • LOINC
  • ICD-10 Procedure Coding System

サポートされている医療ナレッジ カテゴリ

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 1 回分の投薬量に含まれる有効成分の量
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 は、エンティティへの言及の間の次の関係をサポートしています。

件名 Object から継承されたメソッド
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