API Healthcare Natural Language

L'API Healthcare Natural Language fait partie de l'API Cloud Healthcare qui utilise des modèles de langage naturel pour extraire des informations médicales du texte médical.

Ce guide conceptuel explique les principes de base de l'utilisation de l'API Healthcare Natural Language, y compris :

  • Les types de requêtes que vous pouvez envoyer à l'API Healthcare Natural Language
  • Comment créer des requêtes à l'API Healthcare Natural Language
  • Comment traiter les réponses de l'API Healthcare Natural Language

Présentation

L'API Healthcare Natural Language extrait des informations de santé à partir de texte médical. Ces informations de santé peuvent inclure les éléments suivants :

  • Des concepts médicaux, tels que des médicaments, des procédures et des maladies
  • Des caractéristiques fonctionnelles, telles que les relations temporelles, les sujets et les évaluations de certitude
  • Des relations, telles que les effets secondaires et le dosage des médicaments

Choisir entre l'API Healthcare Natural Language et AutoML Entity Extraction for Healthcare

L'API Healthcare Natural Language propose des modèles de langage naturel pré-entraînés pour extraire les concepts médicaux et relations du texte médical. L'API Healthcare Natural Language mappe le texte dans un ensemble prédéfini de catégories de connaissances médicales.

AutoML Entity Extraction for Healthcare vous permet de créer un modèle d'extraction d'entités personnalisé entraîné utilisant votre propre texte médical annoté et vos propres catégories. Pour en savoir plus, consultez la documentation sur AutoML Entity Extraction for Healthcare.

Régions acceptées

L'API Healthcare Natural Language est disponible dans les emplacements suivants :

Nom du lieu Description de l'emplacement
us-central1 Iowa, États-Unis
europe-west4 Pays-Bas

Fonctionnalités de l'API Healthcare Natural Language

L'API Healthcare Natural Language inspecte le texte pour rechercher des concepts médicaux et des relations. Vous pouvez effectuer une analyse des entités à l'aide de la méthode analyzeEntities.

Champs d'une requête d'analyse des entités

L'API Healthcare Natural Language est une API REST qui comprend des requêtes et réponses JSON. L'exemple suivant montre une requête simple de l'API Healthcare Natural Language à l'aide de curl :

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"

L'exemple de requête illustre les champs suivants :

  • nlpService contient le nom de ressource du service TLN.
  • documentContent contient les données de la requête, à savoir le texte médical. La taille maximale du texte médical est de 10 000 caractères Unicode.

Champs d'une réponse d'analyse des entités

L'analyse des entités renvoie un ensemble des mentions médicales, des concepts médicaux et des relations entre les mentions médicales que l'analyse a détecté.

La réponse suivante montre la réponse à l'exemple de requête dans les champs de requête d'analyse d'entités :

{
  "entityMentions": [
    {
      "mentionId": "1",
      "type": "MEDICINE",
      "text": {
        "content": "Insulin regimen human"
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C3537244"
        },
        {
          "entityId": "UMLS/C3714501"
        },
        {
          "entityId": "UMLS/C0021641"
        },
        {
          "entityId": "UMLS/C0795635"
        },
        {
          "entityId": "UMLS/C1533581"
        },
        {
          "entityId": "UMLS/C4721402"
        }
      ],
      "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/C0348016"
        }
      ],
      "confidence": 0.9180646538734436
    }
  ],
  "entities": [
    {
      "entityId": "UMLS/C1533581",
      "preferredTerm": "Therapeutic Insulin",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C581"
      ]
    },
    {
      "entityId": "UMLS/C0021641",
      "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/C0348016",
      "preferredTerm": "Intravenous",
      "vocabularyCodes": [
        "LNC/LA9437-0",
        "LNC/LP32453-0",
        "MTH/NOCODE",
        "NCI/C13346"
      ]
    },
    {
      "entityId": "UMLS/C3537244",
      "preferredTerm": "Insulins",
      "vocabularyCodes": [
        "MSH/D061385",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/C3714501",
      "preferredTerm": "Insulin Drug Class",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "VANDF/4021631"
      ]
    },
    {
      "entityId": "UMLS/C4721402",
      "preferredTerm": "INS protein, human",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C2271"
      ]
    },
    {
      "entityId": "UMLS/C0795635",
      "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
    }
  ]
}

L'exemple illustre les champs de réponse suivants :

  • entityMentions correspond aux occurrences d'entités d'informations médicales dans le texte médical source. Chaque mention d'entité comporte les champs suivants :

    • mentionId est un identifiant unique pour une mention d'entité dans la réponse.
    • type est la catégorie d'information médicale de la mention d'entité.
    • text comprend textContent, l'extrait du texte médical contenant la mention d'entité, et offset, l'emplacement de la mention d'entité dans le texte médical source.
    • temporalAssessment spécifie la relation entre l'entité associée et la mention d'entité. Sa valeur peut être CURRENT, CLINICAL_HISTORY, FAMILY_HISTORY, UPCOMING ou ALLERGY.
    • certaintyAssessment est la négation ou la qualification du concept médical. Sa valeur peut être LIKELY, SOMEWHAT_LIKELY, UNCERTAIN, SOMEWHAT_UNLIKELY, UNLIKELY ou CONDITIONAL.
    • subject spécifie le sujet auquel le concept médical se rapporte. Sa valeur peut être PATIENT, FAMILY_MEMBER ou OTHER.
    • linkedEntities répertorie les concepts médicaux qui pourraient être associés à cette mention d'entité. Les entités associées spécifient entityId, qui associe un concept médical à une entité dans entities.
  • entities décrit les concepts médicaux issus des champs des entités associées. Chaque entité est décrite à l'aide des champs suivants :

    • entityId est l'identifiant unique issu de linkedEntities.
    • preferredTerm est le terme privilégié pour le concept médical.
    • vocabularyCodes correspond à la représentation du concept médical dans les vocabulaires médicaux acceptés.
  • relationships définit les relations dirigées entre les mentions d'entités. Dans l'exemple, le sujet de la relation est "Insulin regimen human" (régime d'insuline humain) et l'objet de la relation est "5 unités". confidence indique le niveau de confiance du modèle dans la relation sous la forme d'un nombre compris entre 0 et 1.

Vocabulaire médical compatible

L'API Healthcare Natural Language accepte les vocabulaires suivants :

  • Foundational Model of Anatomy
  • Gene Ontology
  • HUGO Gene Nomenclature Committee
  • Human Phenotype Ontology
  • ICD-9-CM
  • Sujets de santé de MedlinePlus
  • MeSH
  • Metathesaurus Names
  • NCBI Taxonomy
  • NCI Thesaurus
  • National Drug File
  • Online Mendelian Inheritance in Man
  • RXNORM
  • LOINC
  • ICD-10 Procedure Coding System
  • IC-10-10-CM (disponible uniquement pour les utilisateurs résidant aux États-Unis)
  • SNOMED CT (disponible uniquement pour les utilisateurs résidant aux États-Unis)

Catégories d'informations médicales compatibles

L'API Healthcare Natural Language accepte les catégories d'informations médicales suivantes :

Catégorie d'information médicale Description
PROBLEM Pathologie, y compris les constatations et les maladies
SEVERITY Gravité de la pathologie
PROCEDURE Procédure de diagnostic ou de traitement
PROC_METHOD Méthode de réalisation d'une procédure
PROCEDURE_RESULT Résultats d'une procédure
MEDICINE Médicament ou autres préparations à des fins de traitement ou de prévention de la maladie
MED_DOSE Dosage des médicaments
MED_DURATION Durée des médicaments
MED_FORM Caractéristiques physiques du médicament spécifique
MED_FREQUENCY Fréquence de prise des médicaments
MED_ROUTE Emplacement du corps où le médicament est administré
MED_STATUS Pour un médicament existant, l'état peut être un modificateur tel que "continue" (continuer), "start" (commencer), "restart" (recommencer), "stop" (arrêter), "switch" (changer), "increase" (augmenter), "decrease" (baisser).
MED_STRENGTH Quantité d'ingrédients actifs dans une dose de médicaments
MED_TOTALDOSE Quantité de médicaments à prendre en même temps
MED_UNIT Unité de mesure pour l'ingrédient actif dans un médicament
ANATOMICAL_STRUCTURE Partie complexe du corps humain
LABORATORY_DATA Résultats du test d'un échantillon corporel
LAB_RESULT Description qualitative des données du laboratoire : augmentation, diminution, positif ou négatif
LAB_VALUE Valeur d'une instance de données de laboratoire
LAB_UNIT Unité de mesure pour une valeur de laboratoire
BODY_MEASUREMENT Une mesure normale du corps humain, telle qu'un signe vital
BM_RESULT Résultat de mesure corporelle
BM_VALUE Valeur d'une mesure corporelle
BM_UNIT Unité de mesure corporelle
MEDICAL_DEVICE Instrument physique ou virtuel
SUBSTANCE_ABUSE Abus d'une substance psychoactive
BODY_FUNCTION Fonction exercée par le corps humain
BF_RESULT Résultat de la fonction corporelle

Catégories de fonctionnalités fonctionnelles disponibles

L'API Healthcare Natural Language peut induire les fonctionnalités fonctionnelles, ou attributs, d'une entité mentionnée à partir du contexte. Par exemple, dans la phrase "La mère de Kusuma a le diabète", la condition "diabète" a la fonctionnalité fonctionnelle de subject FAMILY_MEMBER.

Relations temporelles

Les relations temporelles, renvoyées dans le champ temporalAssessment, décrivent la relation temporelle entre cette mention d'entité et le sujet.

L'API Healthcare Natural Language accepte les relations temporelles suivantes :

  • CURRENT
  • CLINICAL_HISTORY
  • FAMILY_HISTORY
  • UPCOMING
  • ALLERGY

Objets

Le sujet, renvoyé dans le champ subject, décrit la personne à laquelle se rapporte la mention d'entité.

L'API Healthcare Natural Language accepte les sujets suivants :

  • PATIENT
  • FAMILY_MEMBER
  • OTHER

Évaluations de certitude

Les évaluations de certitude, renvoyées dans le champ certaintyAssessment, décrivent la confiance du preneur de notes initial. Par exemple, si la note d'origine contient "Le patient présente des maux de gorge", l'évaluation de certitude renvoie la valeur LIKELY pour indiquer que le preneur de notes est confiant qu'il était probable que le patient présentait des maux de gorge. Si la note d'origine contient "Le patient ne présente pas de maux de gorge", l'évaluation de certitude renvoie la valeur NOT_LIKELY pour indiquer que le preneur de notes est confiant qu'il n'était pas probable que le patient présente des maux de gorge.

Les évaluations de certitude peuvent être associées à l'une des valeurs suivantes :

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

Relations acceptées entre les mentions d'entités

L'API Healthcare Natural Language peut induire les relations entre les mentions d'entité en fonction du texte médical environnant. Dans la réponse, le sujet de la relation est identifié par subjectId et l'objet de la relation est identifié par objectId.

L'API Healthcare Natural Language accepte les relations suivantes entre les mentions d'entité :

Objet Objet
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