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、SNOMED 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 を有効にする必要があります。Healthcare Natural Language API は、Cloud Healthcare API の機能を有効または無効にすることなく使用できます。

この API を有効にするには、次の操作手順を行います。

  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. 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. Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

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

    Go to project selector

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

  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. Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

  12. Enable the Cloud Healthcare API.

    Enable the API

  13. Install the Google Cloud CLI.
  14. To initialize the gcloud CLI, run the following command:

    gcloud init

権限を設定する

このガイドの機能を使用するには、healthcare.nlpServiceViewer ロールに含まれる healthcare.nlpservice.analyzeEntities 権限が必要です。

このロールを割り当てるには、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 メソッドを使用します。

エンティティへの言及に SNOMED CT の認可された用語を含めるには、認可された用語を含めるをご覧ください。

Healthcare Natural Language API を使用して医療テキストから医療分析情報を抽出するには、POST リクエストを作成し、documentContent フィールドにターゲット テキストを指定します。医療テキストの最大サイズは 20,000 Unicode 文字です。

次のサンプルは、analyzeEntities メソッドを使用して、医療テキスト「インスリン投与法 5 ユニット IV は糖尿病のために管理されます」の医療分析情報を抽出する方法を示しています。

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 の機能をご覧ください。

次のレスポンスにより、NSI 用語システムのコード C581 を持つエンティティである治療用インスリンが薬剤として識別されます。このレスポンスには、レスポンスに割り当てられた信頼スコアも含まれます。レスポンス フィールドの詳細については、analyzeEntities のドキュメントをご覧ください。

認可された用語を含める

デフォルトでは、Healthcare Natural Language API レスポンスにサポートされている医療用語が含まれます。

リクエストが次の要件を満たしている場合は、レスポンスに SNOMED 臨床用語、米国版(SNOMEDCT_US)の用語を含めることができます。

  • API リクエストの送信元が米国である。
  • リクエスト本文の licensedVocabularies フィールドの値は SNOMEDCT_US です。

SNOMED CT の用語が不要な場合、これらの制限は適用されません。

次のサンプルでは、SNOMED CT の認可された用語を LicensedVocabularies オブジェクトに含めて、医療テキスト「インスリン投与法 5 ユニット IV は糖尿病のために管理されます」から医療分析情報を抽出する方法を示しています。

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_US および ICD10CM の語彙コードが含まれます。出力は次のようになります。リクエストされた認可された用語コードは太字になっています。

出力を FHIR R4 バンドルとして抽出する

テキストからエンティティを抽出し、FHIR R4 リソースと要素にマッピングできます。生成された FHIR R4 バンドルには、すべてのエンティティ、エンティティへの言及、JSON 形式の関係が含まれます。たとえば、Healthcare Natural Language API は、基本エンティティ PROBLEMCondition FHIR R4 リソースにマッピングし、エンティティ PROBLEM.ANATOMICAL_STRUCTURECondition.bodySite FHIR 要素にマッピングします。他のマッピングの一覧については、FHIR バンドルとしての Healthcare Natural Language API の出力をご覧ください。

次のサンプルは、FHIR R4 バンドル内の医療テキスト「インスリン投与法 5 ユニット IV は糖尿病のために管理されます」の医療分析情報を抽出する方法を示しています。詳しくは、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 オブジェクトが含まれます。
  • 認識されたエンティティでは、エンティティ、リレーション、コンテキスト属性を抽出するでの出力と同様の形式で、エンティティとその関係が言及されます。
  • 文字列形式の FHIR バンドル リソースを含む fhirBundle キー。 FHIR バンドルには、すべてのエンティティ、エンティティへの言及、JSON 形式の関係が含まれます。