Usar a API Healthcare Natural Language

Nesta página, você verá como ativar a API Healthcare Natural Language, configurar permissões e chamar o método analyzeEntities para extrair insights clínicos do texto médico.

Visão geral

A API Natural Language oferece soluções de aprendizado de máquina para gerar insights de textos médicos. A API Cloud Natural Language é parte da API Cloud Healthcare. Para uma visão geral, consulte a documentação conceitual da API Healthcare Natural Language.

A API Healthcare Natural Language analisa textos médicos não estruturados, como registros médicos ou pedidos de seguro. Em seguida, ela gera uma representação de dados estruturados das entidades de conhecimento médico armazenadas nessas fontes para análise e automação de downstream. Por exemplo, você pode:

  • extrair informações sobre conceitos médicos, como doenças, medicamentos, dispositivos médicos, procedimentos e seus atributos clinicamente relevantes;
  • mapear conceitos médicos para vocabulários médicos padrão, como RxNorm, ICD-10, MeSH e SNOMED CT (somente usuários dos EUA);
  • Extrair insights médicos de textos e integrá-los a produtos de análise de dados no Google Cloud

Locais disponíveis

A API Healthcare Natural Language está disponível nos seguintes locais:

Nome do local Descrição do local
asia-south1 Mumbai, Índia
australia-southeast1 Sydney, Austrália
europe-west2 Londres, Reino Unido
europe-west4 Países Baixos
northamerica-northeast1 Montreal, Canadá
us-central1 Iowa, EUA

Ative a API Healthcare Natural Language

Antes de começar a usar a API Healthcare Natural Language, é necessário ativar a API no projeto do Google Cloud. É possível usar a API Healthcare Natural Language sem ativar ou usar recursos da API Cloud Healthcare.

Para ativar a API, conclua as seguintes etapas:

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Crie uma conta de serviço:

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"
    2. Selecione o projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar e continuar.
    5. Conceda o papel Project > Owner à conta de serviço do.

      Para conceder o papel, encontre a lista Selecionar um papel e clique em Project > Owner.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

      Não feche a janela do navegador. Você vai usá-la na próxima etapa.

  5. Crie uma chave de conta de serviço:

    1. No console do Google Cloud, clique no endereço de e-mail da conta de serviço que você criou.
    2. Clique em Chaves.
    3. Clique em Adicionar chave e em Criar nova chave.
    4. Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
    5. Clique em Fechar.
  6. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém suas credenciais. Essa variável só se aplica à sessão de shell atual. Assim, se você abrir uma nova sessão, precisará definir a variável novamente.

  7. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Crie uma conta de serviço:

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"
    2. Selecione o projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar e continuar.
    5. Conceda o papel Project > Owner à conta de serviço do.

      Para conceder o papel, encontre a lista Selecionar um papel e clique em Project > Owner.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

      Não feche a janela do navegador. Você vai usá-la na próxima etapa.

  10. Crie uma chave de conta de serviço:

    1. No console do Google Cloud, clique no endereço de e-mail da conta de serviço que você criou.
    2. Clique em Chaves.
    3. Clique em Adicionar chave e em Criar nova chave.
    4. Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
    5. Clique em Fechar.
  11. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém suas credenciais. Essa variável só se aplica à sessão de shell atual. Assim, se você abrir uma nova sessão, precisará definir a variável novamente.

  12. Ative a Cloud Healthcare API.

    Ative a API

  13. Instale a CLI do Google Cloud.
  14. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Configurar permissões

Para usar os recursos deste guia, é necessário ter a permissão healthcare.nlpservice.analyzeEntities, que está incluída no papel healthcare.nlpServiceViewer.

Para atribuir esse papel, execute o comando gcloud projects add-iam-policy-binding:

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

Extrair entidades, relações e atributos contextuais

A API Healthcare Natural Language usa modelos com reconhecimento de contexto para extrair entidades, relações e atributos contextuais médicos. Cada entidade de texto é extraída para uma entrada de dicionário médico. Para extrair esse nível de insights médicos do texto, use o método projects.locations.services.nlp.analyzeEntities.

Para incluir o vocabulário licenciado SNOMED CT nas menções da entidade, consulte Incluir vocabulários licenciados.

Para extrair insights médicos de textos médicos usando a API Healthcare Natural Language, faça uma solicitação POST e especifique o texto de destino no campo documentContent. O tamanho máximo do texto médico é de 20 mil caracteres Unicode.

Os exemplos a seguir mostram como usar o método analyzeEntities para extrair insights médicos do texto médico "O regime de insulina 5 unidades IV serão administrados para diabetes".

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • LOCATION: o local do conjunto de dados;

Solicitar corpo JSON:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes."
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação 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

Se a solicitação for bem-sucedida, a resposta incluirá as seguintes informações:

  • Entidades de conhecimento médico reconhecidas
  • Recursos funcionais
  • Relações entre as entidades reconhecidas
  • Atributos contextuais
  • Mapeamentos de entidades de conhecimento médico em terminologias padrão

Para conferir uma lista de tipos de entidade, atributo e relação compatíveis, consulte os recursos da API Healthcare Natural Language.

A resposta a seguir identifica a insulina terapêutica, a entidade com o código C581 no sistema de terminologia NCI, como o medicamento. Ela também inclui a pontuação de confiança atribuída à resposta. Para mais informações sobre os campos de resposta, consulte a documentação analyzeEntities.

Incluir vocabulários licenciados

Por padrão, as respostas da API Healthcare Natural Language incluem os vocabulários médicos compatíveis.

Você pode incluir o vocabulário SNOMED clínicos, versão US (SNOMEDCT_US) na resposta se sua solicitação atender aos seguintes requisitos:

  • A solicitação de API tem origem nos EUA.
  • O campo licensedVocabularies no corpo da solicitação tem o valor SNOMEDCT_US.

Se você não precisar do vocabulário CT SNOMED, nenhuma dessas restrições se aplicará.

O exemplo a seguir mostra como incluir o vocabulário licenciado SNOMED CT no objeto LicensedVocabularies para extrair insights médicos do texto médico "regime de insulina 5 unidades IV serão administradas para diabetes".

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • LOCATION: o local do conjunto de dados;

Solicitar corpo JSON:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "licensedVocabularies": [
    "SNOMEDCT_US",
    "ICD10CM"
  ]
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação 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
Se a solicitação for bem-sucedida, a resposta incluirá códigos de vocabulário dos vocabulários licenciados SNOMEDCT_US e ICD10CM. A saída é a seguinte, e os códigos de vocabulário licenciado solicitados estão em negrito:

Extrair a saída como um pacote FHIR R4

É possível extrair entidades do texto e mapeá-las para recursos e elementos FHIR R4. O pacote FHIR R4 resultante inclui todas as entidades, menções a entidades e relacionamentos no formato JSON. Por exemplo, a API Healthcare Natural Language mapeia a entidade base PROBLEM para o recurso FHIR R4 Condition e a entidade PROBLEM.ANATOMICAL_STRUCTURE para o elemento FHIR Condition.bodySite. Para uma lista de outros mapeamentos, consulte Saída da API Healthcare Natural Language como um pacote FHIR.

Os exemplos a seguir mostram como extrair insights médicos do texto médico "O regime de insulina 5 unidades IV serão administrados para diabetes" em um pacote FHIR R4. Para mais informações, consulte o objeto AlternativeOutputFormat.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • LOCATION: o local do conjunto de dados;

Solicitar corpo JSON:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "documentContent": "Insulin regimen 5 units IV will be administered for diabetes.",
  "alternativeOutputFormat": "FHIR_BUNDLE"
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação 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
Quando a solicitação é bem-sucedida, a resposta inclui um objeto JSON com as seguintes entradas:
  • A entidade reconhecida menciona as entidades e os relacionamentos delas em um formato semelhante à saída em Extrair entidades, relações e atributos contextuais.
  • Uma chave fhirBundle que contém um recurso de pacote FHIR formatado em string. O pacote FHIR inclui todas as entidades, as entidades citadas e os relacionamentos no formato JSON.