Bibliothèque cliente de correspondance clinique Azure Cognitive Services Health Insights pour Python - version 1.0.0b1

Health Insights est un service Azure Applied AI créé avec Azure Cognitive Services Framework, qui tire parti de plusieurs services Cognitive Services, services d’API Santé et autres ressources Azure. Le modèle de correspondance clinique reçoit les données des patients et les protocoles d’essais cliniques, et fournit des essais cliniques pertinents basés sur des critères d’éligibilité.

| Code sourcePackage (PyPI) | Documentation de référence sur les | API | Documentation produitÉchantillons

Prise en main

Prérequis

  • Python 3.7 ou version ultérieure est requis pour utiliser ce package.
  • Vous avez besoin d’un abonnement Azure pour utiliser ce package.
  • Un instance Cognitive Services Health Insights existant.

Installer le package

pip install azure-healthinsights-clinicalmatching

Ce tableau montre la relation entre les versions du kit de développement logiciel (SDK) et les versions d’API prises en charge du service :

Version du SDK Version d’API prise en charge du service
1.0.0b1 Préversion du 01/03/2023

Authentifier le client

Obtenir le point de terminaison

Vous pouvez trouver le point de terminaison de votre ressource de service Health Insights à l’aide du portail Azure ou d’Azure CLI

# Get the endpoint for the Health Insights service resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint"

Obtenir la clé API

Vous pouvez obtenir la clé API à partir de la ressource de service Health Insights dans le portail Azure. Vous pouvez également utiliser l’extrait de code Azure CLI ci-dessous pour obtenir la clé API de votre ressource.

az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>

Créer un ClinicalMatchingClient avec des informations d’identification de clé API

Une fois que vous avez la valeur de la clé API, vous pouvez la passer sous forme de chaîne dans un instance d’AzureKeyCredential. Utilisez la clé comme paramètre d’informations d’identification pour authentifier le client :

import os
from azure.core.credentials import AzureKeyCredential
from azure.healthinsights.clinicalmatching import ClinicalMatchingClient

KEY = os.environ["HEALTHINSIGHTS_KEY"]
ENDPOINT = os.environ["HEALTHINSIGHTS_ENDPOINT"]

trial_matcher_client = ClinicalMatchingClient(endpoint=ENDPOINT, credential=AzureKeyCredential(KEY))

opérations Long-Running

Les opérations de longue durée sont des opérations qui consistent en une demande initiale envoyée au service pour démarrer une opération, suivie d’un interrogation du service à intervalles réguliers pour déterminer si l’opération s’est terminée ou échouée, et si elle a réussi, pour obtenir le résultat.

Les méthodes qui prennent en charge l’analyse des soins de santé, l’analyse de texte personnalisée ou plusieurs analyses sont modélisées comme des opérations de longue durée. Le client expose une begin_<method-name> méthode qui retourne un objet poller. Les appelants doivent attendre que l’opération se termine en appelant result() sur l’objet poller retourné par la begin_<method-name> méthode. Des exemples d’extraits de code sont fournis pour illustrer l’utilisation d’opérations de longue durée ci-dessous.

Concepts clés

Trial Matcher fournit à l’utilisateur des services deux modes de fonctionnement main : centré sur les patients et centré sur les essais cliniques.

  • En mode centré sur le patient, le modèle Test Matcher base la correspondance du patient sur l’état clinique, l’emplacement, les priorités, les critères d’éligibilité et d’autres critères que le patient et/ou les utilisateurs du service peuvent choisir de hiérarchiser. Le modèle permet de restreindre et de hiérarchiser l’ensemble des essais cliniques pertinents à un ensemble plus petit d’essais pour 2010, pour lequel le patient spécifique semble être qualifié.
  • Sur les essais cliniques centrés, le Matcher d’essai trouve un groupe de patients potentiellement éligibles à un essai clinique. Le matcher d’essai réduit les patients, d’abord filtrés sur l’état clinique et les observations cliniques sélectionnées, puis se concentre sur les patients qui répondent aux critères de base, pour trouver le groupe de patients qui semblent être des patients éligibles à un essai.

Exemples

La section suivante fournit plusieurs extraits de code couvrant certaines des tâches de service les plus courantes Health Insights - Clinical Matching, notamment :

Essais de correspondance

Recherche d’essais éligibles potentiels pour un patient.

import os
import datetime
from azure.core.credentials import AzureKeyCredential
from azure.healthinsights.clinicalmatching import ClinicalMatchingClient, models

KEY = os.environ["HEALTHINSIGHTS_KEY"]
ENDPOINT = os.environ["HEALTHINSIGHTS_ENDPOINT"]

# Create a Trial Matcher client
# <client>
trial_matcher_client = ClinicalMatchingClient(endpoint=ENDPOINT,
                                              credential=AzureKeyCredential(KEY))
# </client>

# Create clinical info list
# <clinicalInfo>
clinical_info_list = [models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C0032181",
                                                  name="Platelet count",
                                                  value="250000"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C0002965",
                                                  name="Unstable Angina",
                                                  value="true"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C1522449",
                                                  name="Radiotherapy",
                                                  value="false"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C0242957",
                                                  name="GeneOrProtein-Expression",
                                                  value="Negative;EntityType:GENEORPROTEIN-EXPRESSION"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C1300072",
                                                  name="cancer stage",
                                                  value="2")]

# </clinicalInfo>

# Construct Patient
# <PatientConstructor>
patient_info = models.PatientInfo(sex=models.PatientInfoSex.MALE, birth_date=datetime.date(1965, 12, 26),
                                  clinical_info=clinical_info_list)
patient1 = models.PatientRecord(id="patient_id", info=patient_info)
# </PatientConstructor>

# Create registry filter
registry_filters = models.ClinicalTrialRegistryFilter()
# Limit the trial to a specific patient condition ("Non-small cell lung cancer")
registry_filters.conditions = ["non small cell lung cancer (nsclc)"]
# Specify the clinical trial registry source as ClinicalTrials.Gov
registry_filters.sources = [models.ClinicalTrialSource.CLINICALTRIALS_GOV]
# Limit the clinical trial to a certain location, in this case California, USA
registry_filters.facility_locations = [
    models.GeographicLocation(country_or_region="United States", city="Gilbert", state="Arizona")]
# Limit the trial to a specific recruitment status
registry_filters.recruitment_statuses = [models.ClinicalTrialRecruitmentStatus.RECRUITING]

# Construct ClinicalTrial instance and attach the registry filter to it.
clinical_trials = models.ClinicalTrials(registry_filters=[registry_filters])

# Create TrialMatcherRequest
configuration = models.TrialMatcherModelConfiguration(clinical_trials=clinical_trials)
trial_matcher_data = models.TrialMatcherData(patients=[patient1], configuration=configuration)

poller = trial_matcher_client.begin_match_trials(trial_matcher_data)
trial_matcher_result = poller.result()
if trial_matcher_result.status == models.JobStatus.SUCCEEDED:
    tm_results = trial_matcher_result.results
    for patient_result in tm_results.patients:
        print(f"Inferences of Patient {patient_result.id}")
        for tm_inferences in patient_result.inferences:
            print(f"Trial Id {tm_inferences.id}")
            print(f"Type: {str(tm_inferences.type)}  Value: {tm_inferences.value}")
            print(f"Description {tm_inferences.description}")
else:
    tm_errors = trial_matcher_result.errors
    if tm_errors is not None:
        for error in tm_errors:
            print(f"{error.code} : {error.message}")

Dépannage

Général

La bibliothèque cliente de correspondance clinique Health Insights génère des exceptions définies dans Azure Core.

Journalisation

Cette bibliothèque utilise la bibliothèque de journalisation standard pour la journalisation.

Les informations de base sur les sessions HTTP (URL, en-têtes, etc.) sont enregistrées au INFO niveau.

La journalisation détaillée DEBUG de niveau, y compris les corps de requête/réponse et les en-têtes non expurgés, peut être activée sur le client ou par opération avec l’argument logging_enable mot clé.

Consultez la documentation complète sur la journalisation du KIT de développement logiciel (SDK) avec des exemples ici.

Configuration facultative

Les arguments facultatifs mot clé peuvent être transmis au niveau du client et par opération. La documentation de référence azure-core décrit les configurations disponibles pour les nouvelles tentatives, la journalisation, les protocoles de transport, etc.

Étapes suivantes

Documentation complémentaire

Pour obtenir une documentation plus complète sur la correspondance clinique Azure Health Insights, consultez la documentation relative à la correspondance clinique sur docs.microsoft.com.

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez opencode@microsoft.com pour toute question ou tout commentaire supplémentaire.