Compartir a través de


Biblioteca cliente de Coincidencia clínica de Azure Cognitive Services Health Insights para Python: versión 1.0.0b1

Health Insights es un servicio de inteligencia artificial aplicado de Azure creado con Azure Cognitive Services Framework, que aprovecha varios servicios de Cognitive Services, Healthcare API y otros recursos de Azure. El modelo de coincidencia clínica recibe datos de pacientes y protocolos de ensayos clínicos, y proporciona ensayos clínicos pertinentes en función de los criterios de idoneidad.

Código | fuente Paquete (PyPI) | Documentación | de referencia de APIDocumentación | del producto Muestras

Introducción

Requisitos previos

  • Se requiere Python 3.7 o posterior para usar este paquete.
  • Necesita una suscripción de Azure para usar este paquete.
  • Una instancia de Cognitive Services Health Insights existente.

Instalar el paquete

pip install azure-healthinsights-clinicalmatching

En esta tabla se muestra la relación entre las versiones del SDK y las versiones de la API admitidas del servicio:

Versión del SDK Versión de la API admitidas del servicio
1.0.0b1 2023-03-01-preview

Autenticar el cliente

Obtención del punto de conexión

Puede encontrar el punto de conexión del recurso del servicio Health Insights mediante Azure Portal o la CLI de Azure.

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

Obtención de la clave de API

Puede obtener la clave de API del recurso del servicio Health Insights en Azure Portal. Como alternativa, puede usar el siguiente fragmento de código de la CLI de Azure para obtener la clave de API del recurso.

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

Creación de una instancia de ClinicalMatchingClient con una credencial de clave de API

Una vez que tenga el valor de la clave de API, puede pasarlo como una cadena a una instancia de AzureKeyCredential. Use la clave como parámetro de credencial para autenticar el cliente:

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

Operaciones de Long-Running

Las operaciones de larga duración son operaciones que constan de una solicitud inicial enviada al servicio para iniciar una operación, seguidas de sondear el servicio a intervalos para determinar si la operación se ha completado o no, y si se ha realizado correctamente, para obtener el resultado.

Los métodos que admiten el análisis sanitario, el análisis de texto personalizado o varios análisis se modelan como operaciones de larga duración. El cliente expone un begin_<method-name> método que devuelve un objeto poller. Los autores de llamadas deben esperar a que se complete la operación llamando result() al objeto de sondeo devuelto desde el begin_<method-name> método . A continuación se proporcionan fragmentos de código de ejemplo para ilustrar el uso de operaciones de larga duración .

Conceptos clave

Trial Matcher proporciona al usuario de los servicios dos modos principales de funcionamiento: pacientes centrados en ensayos clínicos y centrados en ensayos clínicos.

  • En el modo centrado en el paciente, el modelo del buscador de coincidencias de prueba basa la coincidencia de pacientes en la condición clínica, la ubicación, las prioridades, los criterios de idoneidad y otros criterios que los usuarios del paciente o del servicio pueden elegir priorizar. El modelo ayuda a reducir y priorizar el conjunto de ensayos clínicos pertinentes a un conjunto más pequeño de ensayos con los que empezar, que parece que el paciente específico es calificado.
  • En el ensayo clínico centrado, el buscador de coincidencias de ensayos está buscando un grupo de pacientes potencialmente aptos para un ensayo clínico. El buscador de coincidencias de ensayo reduce los pacientes, primero filtrados sobre la condición clínica y las observaciones clínicas seleccionadas y, a continuación, se centra en aquellos pacientes que cumplen los criterios de línea base, para encontrar el grupo de pacientes que parecen ser pacientes aptos para un ensayo.

Ejemplos

En la sección siguiente se proporcionan varios fragmentos de código que abarcan algunas de las tareas del servicio Health Insights - Clinical Matching más comunes, entre las que se incluyen:

Pruebas de coincidencia

Encontrar posibles ensayos aptos para un paciente.

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}")

Solución de problemas

General

La biblioteca cliente de Coincidencia clínica de Health Insights generará excepciones definidas en Azure Core.

Registro

Esta biblioteca usa la biblioteca de registro estándar para el registro.

La información básica sobre las sesiones HTTP (direcciones URL, encabezados, etc.) se registra en el INFO nivel.

El registro de nivel detallado DEBUG , incluidos los cuerpos de solicitud/respuesta y los encabezados no aprobados , se puede habilitar en el cliente o por operación con el argumento de palabra logging_enable clave.

Consulte la documentación completa del registro del SDK con ejemplos aquí.

Configuración opcional

Los argumentos de palabra clave opcionales se pueden pasar en el nivel de cliente y por operación. En la documentación de referencia de azure-core se describen las configuraciones disponibles para reintentos, registro, protocolos de transporte, etc.

Pasos siguientes

Documentación adicional

Para obtener documentación más amplia sobre La coincidencia clínica de Azure Health Insights, consulte la documentación de Coincidencia clínica en docs.microsoft.com.

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para obtener más información, vea las preguntas más frecuentes sobre el código de conducta o póngase en contacto con opencode@microsoft.com si tiene preguntas o comentarios.