Utiliser l'API Healthcare Natural Language

Cette page explique comment activer l'API Healthcare Natural Language, configurer des autorisations et appeler la méthode analyzeEntities pour extraire des insights médicaux du texte médical.

Présentation

L'API Healthcare Natural Language fournit des solutions de machine learning permettant de recueillir des informations utiles à partir de texte médical. L'API Healthcare Natural Language fait partie de l'API Cloud Healthcare. Pour obtenir une présentation de l'API Healthcare Natural Language, consultez la documentation sur le concept de l'API Healthcare Natural Language.

L'API Healthcare Natural Language analyse du texte médical non structuré, tel que des dossiers médicaux ou des déclarations d'assurance. Elle génère ensuite une représentation des données structurées des entités de connaissances médicales stockées dans ces sources de données pour une analyse et une automatisation en aval. Par exemple, vous pouvez :

  • Extraire des informations sur des concepts médicaux comme les maladies, les médicaments, les dispositifs médicaux, les procédures et leurs attributs pertinents sur le plan médical
  • Mapper des concepts médicaux à des vocabulaires médicaux standards tels que RxNorm, ICD-10, MeSH et SNOMED CT (utilisateurs américains uniquement)
  • Dégager des insights médicaux à partir de texte et les intégrer aux produits d'analyse de données dans Google Cloud

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

Activer l'API Healthcare Natural Language

Avant de commencer à utiliser l'API Healthcare Natural Language, vous devez l'activer pour votre projet Google Cloud. Vous pouvez utiliser l'API Healthcare Natural Language sans activer ni utiliser les fonctionnalités de l'API Cloud Healthcare.

Pour activer l'API, procédez comme suit :

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Créez un compte de service :

    1. Dans Cloud Console, accédez à la page Créer un compte de service.

      Accéder à la page "Créer un compte de service"
    2. Sélectionnez un projet.
    3. Dans le champ Nom du compte de service, saisissez un nom. Cloud Console remplit le champ ID du compte de service en fonction de ce nom.

      Dans le champ Description du compte de service, saisissez une description. Exemple : Service account for quickstart.

    4. Cliquez sur Créer et continuer.
    5. Cliquez sur le champ Sélectionner un rôle.

      Dans la section Accès rapide, cliquez sur Basique, puis sur Propriétaire.

    6. Cliquez sur Continuer.
    7. Cliquez sur OK pour terminer la création du compte de service.

      Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.

  5. Créez une clé de compte de service :

    1. Dans Cloud Console, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
    2. Cliquez sur Clés.
    3. Cliquez sur Add key (Ajouter une clé), puis sur Create new key (Créer une clé).
    4. Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
    5. Cliquez sur Close (Fermer).
  6. Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS pour qu'elle pointe vers le chemin du fichier JSON contenant la clé de votre compte de service. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

  7. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  8. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  9. Créez un compte de service :

    1. Dans Cloud Console, accédez à la page Créer un compte de service.

      Accéder à la page "Créer un compte de service"
    2. Sélectionnez un projet.
    3. Dans le champ Nom du compte de service, saisissez un nom. Cloud Console remplit le champ ID du compte de service en fonction de ce nom.

      Dans le champ Description du compte de service, saisissez une description. Exemple : Service account for quickstart.

    4. Cliquez sur Créer et continuer.
    5. Cliquez sur le champ Sélectionner un rôle.

      Dans la section Accès rapide, cliquez sur Basique, puis sur Propriétaire.

    6. Cliquez sur Continuer.
    7. Cliquez sur OK pour terminer la création du compte de service.

      Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.

  10. Créez une clé de compte de service :

    1. Dans Cloud Console, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
    2. Cliquez sur Clés.
    3. Cliquez sur Add key (Ajouter une clé), puis sur Create new key (Créer une clé).
    4. Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
    5. Cliquez sur Close (Fermer).
  11. Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS pour qu'elle pointe vers le chemin du fichier JSON contenant la clé de votre compte de service. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

  12. Activez Cloud Healthcare API.

    Activer l'API

  13. Installez et initialisez le SDK Cloud.

Configurer les autorisations

Pour utiliser les fonctionnalités de ce guide, vous devez disposer de l'autorisation healthcare.nlpservce.analyzeEntities, incluse dans le rôle healthcare.nlpServiceViewer.

Pour attribuer ce rôle, exécutez la commande gcloud projects add-iam-policy-binding :

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

Extraire des entités, des relations et des attributs contextuels

L'API Healthcare Natural Language utilise des modèles contextuels pour extraire des entités médicales, des relations et des attributs contextuels. Chaque entité de texte est extraite dans une entrée de dictionnaire médical. Pour extraire des insights médicaux de ce niveau à partir de texte médical, utilisez la méthode projects.locations.services.nlp.analyzeEntities.

Pour extraire des insights médicaux d'un texte médical à l'aide de l'API Healthcare Natural Language, envoyez une requête POST et spécifiez les informations suivantes dans la requête :

  • Le nom du service parent, y compris l'ID et l'emplacement du projet.
  • Le texte cible. La taille maximale est de 10 000 caractères Unicode.

curl

L'exemple suivant montre une requête POST utilisant curl :

curl -X POST \
   -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
   -H "Content-Type:application/json" \
   --data "{
    'nlpService':'projects/PROJECT_ID/locations/LOCATION/services/nlp',
    'documentContent':'Insulin regimen human 5 units IV administered.'
   }" \
   "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"

PowerShell

L'exemple suivant montre une requête POST utilisant Windows PowerShell :

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'nlpService':'projects/PROJECT_ID/locations/LOCATION/services/nlp',
    'documentContent':'Insulin regimen human 5 units IV administered.'
   }" `
   -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"  | Select-Object -Expand Content

Si la requête aboutit, la réponse inclut les informations suivantes :

  • Entités de connaissances médicales reconnues
  • Fonctionnalités fonctionnelles
  • Relations entre les entités reconnues
  • Attributs contextuels
  • Mappages des entités de connaissances médicales en termes standards

Pour obtenir la liste des types d'entités, d'attributs et de relations compatibles, consultez la documentation sur les concepts de l'API Healthcare Natural Language.

La réponse suivante tirée des exemples ci-dessus a identifié "Insuline Thérapeutique", l'entité avec le code C581 dans le système de terminologie NCI, en tant que médicament. La réponse inclut également l'indice de confiance attribué à la réponse. Pour en savoir plus sur les champs de réponse, consultez la documentation sur analyzeEntities.

{
  "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
    }
  ]
}

Vocabulaires sous licence inclus

Vous pouvez inclure les vocabulaires sous licence suivants dans vos requêtes adressées à l'API Healthcare Natural Language:

Les exemples suivants montrent comment envoyer une requête POST à l'API Healthcare Natural Language et inclure les deux vocabulaires disponibles dans l'objet licensedVocabularies. Vous pouvez spécifier un ou plusieurs vocabulaires disponibles sous licence.

curl

L'exemple suivant montre une requête POST utilisant curl :

curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type:application/json" \
    --data "{
      'nlpService':'projects/PROJECT_ID/locations/us-central1/services/nlp',
       'documentContent':'Diabetes. Insulin regimen human 5 units IV administered.',
       'licensedVocabularies':['SNOMEDCT_US','ICD10CM']
    }" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/services/nlp:analyzeEntities"

Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

Le résultat est le suivant. Le résultat de la spécification des vocabulaires sous licence est en gras:

{
  "entityMentions": [
    {
      "mentionId": "1",
      "type": "PROBLEM",
      "text": {
        "content": "Diabetes"
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C0011847"
        },
        {
          "entityId": "UMLS/C0011849"
        },
        {
          "entityId": "UMLS/C0241863"
        }
      ],
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.98781299591064453
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.872421145439148
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.99975031614303589
      },
      "confidence": 0.99663406610488892
    },
    {
      "mentionId": "2",
      "type": "MEDICINE",
      "text": {
        "content": "Insulin regimen",
        "beginOffset": 10
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C0795635"
        },
        {
          "entityId": "UMLS/C0021641"
        },
        {
          "entityId": "UMLS/C3537244"
        },
        {
          "entityId": "UMLS/C1533581"
        },
        {
          "entityId": "UMLS/C3714501"
        }
      ],
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.91042423248291016
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.99766635894775391
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.999998152256012
      },
      "confidence": 0.716249406337738
    },
    {
      "mentionId": "3",
      "type": "MEDICINE",
      "text": {
        "content": "human",
        "beginOffset": 26
      },
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.64570724964141846
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.90325617790222168
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.97613298892974854
      },
      "confidence": 0.57638454437255859
    },
    {
      "mentionId": "4",
      "type": "MED_DOSE",
      "text": {
        "content": "5 units",
        "beginOffset": 32
      },
      "confidence": 0.92076742649078369
    },
    {
      "mentionId": "5",
      "type": "MED_ROUTE",
      "text": {
        "content": "IV",
        "beginOffset": 40
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C0348016"
        }
      ],
      "confidence": 0.967033863067627
    }
  ],
  "entities": [
    {
      "entityId": "UMLS/C0011847",
      "preferredTerm": "Diabetes",
      "vocabularyCodes": [
        "ICD10CM/E11",
        "LNC/LA10529-8",
        "LNC/LP128793-9",
        "LNC/MTHU040702",
        "MTH/NOCODE",
        "OMIM/MTHU050182"
      ]
    },
    {
      "entityId": "UMLS/C0011849",
      "preferredTerm": "Diabetes Mellitus",
      "vocabularyCodes": [
        "HPO/HP:0000819",
        "ICD10CM/E08-E13",
        "ICD9CM/250",
        "LNC/LA14291-1",
        "LNC/LA27539-8",
        "LNC/MTHU020781",
        "MEDLINEPLUS/4",
        "MEDLINEPLUS/45",
        "MSH/D003920",
        "MTH/NOCODE",
        "MTH/U000263",
        "NCI/C2985",
        "NCI/OMFAQ",
        "NCI/TCGA",
        "OMIM/MTHU036798",
        "SNOMEDCT_US/73211009"
      ]
    },
    {
      "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",
        "MEDLINEPLUS/4935",
        "MSH/D007328",
        "MTH/NOCODE",
        "SNOMEDCT_US/39487003",
        "SNOMEDCT_US/412222002",
        "SNOMEDCT_US/67866001"
      ]
    },
    {
      "entityId": "UMLS/C0241863",
      "preferredTerm": "Diabetic",
      "vocabularyCodes": [
        "LNC/LA26134-9"
      ]
    },
    {
      "entityId": "UMLS/C0348016",
      "preferredTerm": "Intravenous",
      "vocabularyCodes": [
        "LNC/LA9437-0",
        "LNC/LP32453-0",
        "MTH/NOCODE",
        "NCI/C13346",
        "SNOMEDCT_US/255560000"
      ]
    },
    {
      "entityId": "UMLS/C0795635",
      "preferredTerm": "insulin, regular, human",
      "vocabularyCodes": [
        "LNC/LP17001-6",
        "MSH/D061386",
        "MTH/NOCODE",
        "NCI/C29125",
        "RXNORM/253182",
        "SNOMEDCT_US/126210001",
        "SNOMEDCT_US/417423002",
        "SNOMEDCT_US/420609005",
        "SNOMEDCT_US/96367001",
        "VANDF/4017559",
        "VANDF/4017569",
        "VANDF/4019786"
      ]
    },
    {
      "entityId": "UMLS/C1533581",
      "preferredTerm": "Therapeutic Insulin",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C581"
      ]
    },
    {
      "entityId": "UMLS/C3537244",
      "preferredTerm": "Insulins",
      "vocabularyCodes": [
        "MSH/D061385",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/C3714501",
      "preferredTerm": "Insulin Drug Class",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "VANDF/4021631"
      ]
    }
  ],
  "relationships": [
    {
      "subjectId": "2",
      "objectId": "4",
      "confidence": 0.99827027320861816
    },
    {
      "subjectId": "2",
      "objectId": "5",
      "confidence": 0.99729859828948975
    },
    {
      "subjectId": "3",
      "objectId": "4",
      "confidence": 0.80851161479949951
    },
    {
      "subjectId": "3",
      "objectId": "5",
      "confidence": 0.67507040500640869
    }
  ]
}

PowerShell

L'exemple suivant montre une requête POST utilisant Windows PowerShell :

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'nlpService':'projects/PROJECT_ID/locations/us-central1/services/nlp',
    'documentContent': 'Diabetes. Insulin regimen human 5 units IV administered.',
    'licensedVocabularies': ['SNOMEDCT_US','ICD10CM']
   }" `
   -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/services/nlp:analyzeEntities"  | Select-Object -Expand Content

Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

Le résultat est le suivant. Le résultat de la spécification des vocabulaires sous licence est en gras:

{
  "entityMentions": [
    {
      "mentionId": "1",
      "type": "PROBLEM",
      "text": {
        "content": "Diabetes"
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C0011847"
        },
        {
          "entityId": "UMLS/C0011849"
        },
        {
          "entityId": "UMLS/C0241863"
        }
      ],
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.98781299591064453
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.872421145439148
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.99975031614303589
      },
      "confidence": 0.99663406610488892
    },
    {
      "mentionId": "2",
      "type": "MEDICINE",
      "text": {
        "content": "Insulin regimen",
        "beginOffset": 10
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C0795635"
        },
        {
          "entityId": "UMLS/C0021641"
        },
        {
          "entityId": "UMLS/C3537244"
        },
        {
          "entityId": "UMLS/C1533581"
        },
        {
          "entityId": "UMLS/C3714501"
        }
      ],
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.91042423248291016
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.99766635894775391
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.999998152256012
      },
      "confidence": 0.716249406337738
    },
    {
      "mentionId": "3",
      "type": "MEDICINE",
      "text": {
        "content": "human",
        "beginOffset": 26
      },
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.64570724964141846
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.90325617790222168
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.97613298892974854
      },
      "confidence": 0.57638454437255859
    },
    {
      "mentionId": "4",
      "type": "MED_DOSE",
      "text": {
        "content": "5 units",
        "beginOffset": 32
      },
      "confidence": 0.92076742649078369
    },
    {
      "mentionId": "5",
      "type": "MED_ROUTE",
      "text": {
        "content": "IV",
        "beginOffset": 40
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/C0348016"
        }
      ],
      "confidence": 0.967033863067627
    }
  ],
  "entities": [
    {
      "entityId": "UMLS/C0011847",
      "preferredTerm": "Diabetes",
      "vocabularyCodes": [
        "ICD10CM/E11",
        "LNC/LA10529-8",
        "LNC/LP128793-9",
        "LNC/MTHU040702",
        "MTH/NOCODE",
        "OMIM/MTHU050182"
      ]
    },
    {
      "entityId": "UMLS/C0011849",
      "preferredTerm": "Diabetes Mellitus",
      "vocabularyCodes": [
        "HPO/HP:0000819",
        "ICD10CM/E08-E13",
        "ICD9CM/250",
        "LNC/LA14291-1",
        "LNC/LA27539-8",
        "LNC/MTHU020781",
        "MEDLINEPLUS/4",
        "MEDLINEPLUS/45",
        "MSH/D003920",
        "MTH/NOCODE",
        "MTH/U000263",
        "NCI/C2985",
        "NCI/OMFAQ",
        "NCI/TCGA",
        "OMIM/MTHU036798",
        "SNOMEDCT_US/73211009"
      ]
    },
    {
      "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",
        "MEDLINEPLUS/4935",
        "MSH/D007328",
        "MTH/NOCODE",
        "SNOMEDCT_US/39487003",
        "SNOMEDCT_US/412222002",
        "SNOMEDCT_US/67866001"
      ]
    },
    {
      "entityId": "UMLS/C0241863",
      "preferredTerm": "Diabetic",
      "vocabularyCodes": [
        "LNC/LA26134-9"
      ]
    },
    {
      "entityId": "UMLS/C0348016",
      "preferredTerm": "Intravenous",
      "vocabularyCodes": [
        "LNC/LA9437-0",
        "LNC/LP32453-0",
        "MTH/NOCODE",
        "NCI/C13346",
        "SNOMEDCT_US/255560000"
      ]
    },
    {
      "entityId": "UMLS/C0795635",
      "preferredTerm": "insulin, regular, human",
      "vocabularyCodes": [
        "LNC/LP17001-6",
        "MSH/D061386",
        "MTH/NOCODE",
        "NCI/C29125",
        "RXNORM/253182",
        "SNOMEDCT_US/126210001",
        "SNOMEDCT_US/417423002",
        "SNOMEDCT_US/420609005",
        "SNOMEDCT_US/96367001",
        "VANDF/4017559",
        "VANDF/4017569",
        "VANDF/4019786"
      ]
    },
    {
      "entityId": "UMLS/C1533581",
      "preferredTerm": "Therapeutic Insulin",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C581"
      ]
    },
    {
      "entityId": "UMLS/C3537244",
      "preferredTerm": "Insulins",
      "vocabularyCodes": [
        "MSH/D061385",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/C3714501",
      "preferredTerm": "Insulin Drug Class",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "VANDF/4021631"
      ]
    }
  ],
  "relationships": [
    {
      "subjectId": "2",
      "objectId": "4",
      "confidence": 0.99827027320861816
    },
    {
      "subjectId": "2",
      "objectId": "5",
      "confidence": 0.99729859828948975
    },
    {
      "subjectId": "3",
      "objectId": "4",
      "confidence": 0.80851161479949951
    },
    {
      "subjectId": "3",
      "objectId": "5",
      "confidence": 0.67507040500640869
    }
  ]
}