Share via


Biblioteca de cliente do Azure Cognitive Services Health Insights Clinical Matching para Python – versão 1.0.0b1

O Health Insights é um Serviço de IA Aplicado do Azure criado com o Azure Cognitive Services Framework, que tira partido de vários Serviços Cognitivos, serviços de API de Cuidados de Saúde e outros recursos do Azure. O modelo de Correspondência Clínica recebe dados dos pacientes e protocolos de ensaios clínicos e fornece ensaios clínicos relevantes com base em critérios de elegibilidade.

Código fonte | Pacote (PyPI) | Documentação | de referência da APIDocumentação do | produto Exemplos

Introdução

Pré-requisitos

  • O Python 3.7 ou posterior é necessário para utilizar este pacote.
  • Precisa de uma subscrição do Azure para utilizar este pacote.
  • Uma instância das Informações de Estado de Funcionamento dos Serviços Cognitivos existente.

Instalar o pacote

pip install azure-healthinsights-clinicalmatching

Esta tabela mostra a relação entre as versões do SDK e as versões de API suportadas do serviço:

Versão do SDK Versão de serviço da API suportada
1.0.0b1 2023-03-01-preview

Autenticar o cliente

Obter o ponto final

Pode encontrar o ponto final do recurso do serviço Informações de Estado de Funcionamento com o Portal do Azure ou a CLI do 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"

Obter a Chave de API

Pode obter a Chave de API a partir do recurso do serviço Informações de Estado de Funcionamento no portal do Azure. Em alternativa, pode utilizar o fragmento da CLI do Azure abaixo para obter a chave de API do recurso.

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

Criar um ClinicalMatchingClient com uma Credencial de Chave de API

Assim que tiver o valor da chave de API, pode passá-lo como uma cadeia numa instância do AzureKeyCredential. Utilize a chave como o parâmetro de credencial para autenticar o 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))

Operações de Long-Running

As operações de execução prolongada são operações que consistem num pedido inicial enviado ao serviço para iniciar uma operação, seguidas de consulta do serviço em intervalos para determinar se a operação foi concluída ou falhou e, se foi bem-sucedida, para obter o resultado.

Os métodos que suportam a análise de cuidados de saúde, a análise de texto personalizado ou várias análises são modelados como operações de execução prolongada. O cliente expõe um begin_<method-name> método que devolve um objeto poller. Os autores da chamada devem aguardar que a operação seja concluída ao chamar result() o objeto poller devolvido do begin_<method-name> método . Os fragmentos de código de exemplo são fornecidos para ilustrar a utilização de operações de execução prolongada abaixo.

Conceitos-chave

O Trial Matcher fornece ao utilizador dos serviços dois modos principais de funcionamento: pacientes centrados e centrados no ensaio clínico.

  • No modo centrado no paciente, o modelo Do Matcher de Avaliação baseia a correspondência do paciente na condição clínica, na localização, nas prioridades, nos critérios de elegibilidade e noutros critérios que os utilizadores do paciente e/ou do serviço podem optar por atribuir prioridades. O modelo ajuda a reduzir e priorizar o conjunto de ensaios clínicos relevantes para um conjunto mais pequeno de ensaios, para começar, para o qual o paciente específico parece estar qualificado.
  • No ensaio clínico centrado, o Matcher de Ensaio está a encontrar um grupo de pacientes potencialmente elegíveis para um ensaio clínico. O Matcher de Ensaio restringe os pacientes, primeiro filtrado em condição clínica e observações clínicas selecionadas, e depois foca-se nos pacientes que cumpriram os critérios de linha de base, para encontrar o grupo de pacientes que parece ser pacientes elegíveis para um ensaio.

Exemplos

A secção seguinte fornece vários fragmentos de código que abrangem algumas das tarefas mais comuns do serviço Informações de Saúde – Correspondência Clínica, incluindo:

Corresponder a avaliações

Encontrar potenciais testes elegíveis para um 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}")

Resolução de problemas

Geral

A biblioteca de cliente de Correspondência Clínica do Health Insights irá gerar exceções definidas no Azure Core.

Registo

Esta biblioteca utiliza a biblioteca de registo padrão para registo.

As informações básicas sobre sessões HTTP (URLs, cabeçalhos, etc.) são registadas ao INFO nível.

O registo de nível detalhado DEBUG , incluindo os corpos de pedido/resposta e os cabeçalhos não retotados , pode ser ativado no cliente ou por operação com o logging_enable argumento de palavra-chave.

Veja a documentação completa do registo do SDK com exemplos aqui.

Configuração opcional

Os argumentos de palavra-chave opcionais podem ser transmitidos ao nível do cliente e por operação. A documentação de referência azure-core descreve as configurações disponíveis para repetições, registo, protocolos de transporte e muito mais.

Passos seguintes

Documentação adicional

Para obter documentação mais extensa sobre a Correspondência Clínica do Azure Health Insights, veja a documentação de Correspondência Clínica sobre docs.microsoft.com.

Contribuir

Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.

Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.

Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, veja a Code of Conduct FAQ (FAQ do Código de Conduta) ou envie um e-mail para opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.