Usar la API Natural Language de Healthcare

En esta página se explica cómo habilitar la API Natural Language de Healthcare, configurar los permisos y llamar al método analyzeEntities para extraer información valiosa de texto médico.

Información general

La API Natural Language de Healthcare proporciona soluciones de aprendizaje automático para extraer información valiosa de textos médicos. La API Natural Language de Healthcare forma parte de la API Cloud Healthcare. Para obtener una descripción general de la API Natural Language de Healthcare, consulta la documentación conceptual de la API Natural Language de Healthcare.

La API Natural Language de Healthcare analiza texto médico sin estructurar, como historiales médicos o reclamaciones de seguros. A continuación, genera una representación de datos estructurados de las entidades de conocimiento médico almacenadas en estas fuentes de datos para el análisis y la automatización posteriores. Por ejemplo, puedes:

  • Extraer información sobre conceptos médicos, como enfermedades, medicamentos, dispositivos médicos y procedimientos, así como sus atributos clínicamente relevantes
  • Asignar conceptos médicos a vocabularios médicos estándar, como RxNorm, CIE-10, MeSH y SNOMED CT (solo para usuarios de EE. UU. y Reino Unido)
  • Extraer información valiosa del ámbito médico a partir de texto e integrarla con productos de analíticas de datos en Google Cloud

Ubicaciones disponibles

La API Natural Language de Healthcare está disponible en las siguientes ubicaciones:

Nombre de la ubicación Descripción de la ubicación
asia-south1 Bombay (India)
australia-southeast1 Sídney (Australia)
europe-west2 Londres (Reino Unido)
europe-west4 Países Bajos
northamerica-northeast1 Montreal (Canadá)
us-central1 Iowa (EE. UU.)

Habilitar la API Natural Language de Healthcare

Antes de empezar a usar la API Natural Language de Healthcare, debes habilitarla en tu Google Cloud proyecto. Puedes usar la API Natural Language de Healthcare sin habilitar ni usar las funciones de la API Cloud Healthcare.

Para habilitar la API, sigue estos pasos:

  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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. 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.

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

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

    7. Click Continue.
    8. 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. 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.

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

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

    7. Click Continue.
    8. 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  13. Install the Google Cloud CLI.

  14. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  15. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init

    Configurar permisos

    Para usar las funciones de esta guía, debe tener el healthcare.nlpservice.analyzeEntities permiso, que se incluye en el healthcare.nlpServiceViewer rol.

    Para asignar este rol, ejecuta el comando gcloud projects add-iam-policy-binding:

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

    Extraer entidades, relaciones y atributos contextuales

    La API Natural Language de Healthcare usa modelos basados en el contexto para extraer entidades, relaciones y atributos contextuales médicos. Cada entidad de texto se extrae en una entrada de diccionario médico. Para extraer este nivel de información valiosa médica de un texto médico, usa el método projects.locations.services.nlp.analyzeEntities.

    Para incluir el vocabulario con licencia de SNOMED CT en tus menciones de entidades, consulta Incluir vocabularios con licencia.

    Para extraer información valiosa de textos médicos con la API Natural Language de Healthcare, haz una solicitud POST y especifica el texto de destino en el campo documentContent. El tamaño máximo del texto médico es de 20.000 caracteres Unicode.

    En los siguientes ejemplos se muestra cómo usar el método analyzeEntities para extraer información valiosa médica del texto médico "Se administrarán 5 unidades de insulina por vía intravenosa para la diabetes".

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Si la solicitud se realiza correctamente, la respuesta incluye la siguiente información:

    • Entidades de conocimientos médicos reconocidas
    • Funciones
    • Relaciones entre las entidades reconocidas
    • Atributos contextuales
    • Asignaciones de las entidades de conocimiento médico a terminologías estándar

    Para ver una lista de los tipos de entidades, atributos y relaciones admitidos, consulta las funciones de la API Natural Language de Healthcare.

    En la siguiente respuesta se identifica la insulina terapéutica, la entidad con el código C581 en el sistema de terminología del NCI, como medicamento. La respuesta también incluye la puntuación de confianza asignada a la respuesta. Para obtener más información sobre los campos de respuesta, consulta la documentación de analyzeEntities.

    Incluir vocabularios con licencia

    De forma predeterminada, las respuestas de la API Natural Language de Healthcare incluyen los vocabularios médicos admitidos.

    Puedes incluir el vocabulario SNOMED Clinical Terms, US Version (SNOMEDCT_US) en la respuesta si tu solicitud cumple los siguientes requisitos:

    • La solicitud de la API se origina en EE. UU.
    • El campo licensedVocabularies del cuerpo de la solicitud tiene el valor SNOMEDCT_US.

    Si no necesitas el vocabulario SNOMED CT, no se aplicará ninguna de estas restricciones.

    En el siguiente ejemplo se muestra cómo incluir el vocabulario con licencia de SNOMED CT en el objeto LicensedVocabularies para extraer información valiosa médica del texto "Se administrará un régimen de insulina de 5 unidades por vía intravenosa para la diabetes".

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    Si la solicitud se realiza correctamente, la respuesta incluye códigos de vocabulario de los vocabularios con licencia SNOMEDCT_US y ICD10CM. El resultado es el siguiente y los códigos de vocabulario con licencia solicitados están en negrita:

    Extraer la salida como un paquete FHIR R4

    Puedes extraer entidades de texto y asignarlas a recursos y elementos de FHIR R4. El paquete FHIR R4 resultante incluye todas las entidades, las menciones de entidades y las relaciones en formato JSON. Por ejemplo, la API Natural Language de Healthcare asigna la entidad base PROBLEM al recurso Condition FHIR R4 y la entidad PROBLEM.ANATOMICAL_STRUCTURE al elemento Condition.bodySite FHIR. Para ver una lista de otras asignaciones, consulta Salida de la API Natural Language de Healthcare como paquete FHIR.

    En los siguientes ejemplos se muestra cómo extraer información valiosa médica del texto médico "Se administrarán 5 unidades de insulina por vía intravenosa para la diabetes" en un paquete FHIR R4. Para obtener más información, consulta el objeto AlternativeOutputFormat.

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    Si la solicitud se realiza correctamente, la respuesta contiene un objeto JSON con las siguientes entradas:
    • Las menciones a entidades reconocidas con las entidades y sus relaciones en un formato similar al resultado de Extraer entidades, relaciones y atributos contextuales.
    • Una clave fhirBundle que contiene un recurso de paquete FHIR con formato de cadena. El paquete FHIR incluye todas las entidades, las menciones de entidades y las relaciones en formato JSON.