Sdílet prostřednictvím


Klientská knihovna Azure Cognitive Services Health Insights clinical matching pro Python – verze 1.0.0b1

Health Insights je služba Azure Applied AI Service vytvořená pomocí rozhraní Azure Cognitive Services Framework, která využívá více služeb Cognitive Services, služeb healthcare API a dalších prostředků Azure. Model klinické shody přijímá údaje o pacientech a protokoly klinických hodnocení a poskytuje relevantní klinická hodnocení na základě kritérií způsobilosti.

Zdrojový kód | Balíček (PyPI) | Referenční dokumentace k | rozhraní API Dokumentace k | produktu Vzorky

Začínáme

Požadavky

  • K použití tohoto balíčku se vyžaduje Python 3.7 nebo novější.
  • K použití tohoto balíčku potřebujete předplatné Azure .
  • Existující instance Cognitive Services Health Insights

Instalace balíčku

pip install azure-healthinsights-clinicalmatching

Tato tabulka ukazuje vztah mezi verzemi sady SDK a podporovanými verzemi rozhraní API služby:

SDK version (Verze sady SDK) Podporovaná verze služby rozhraní API
1.0.0b1 2023-03-01-preview

Ověření klienta

Získání koncového bodu

Koncový bod pro prostředek služby Health Insights můžete najít pomocí webu Azure Portal nebo 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"

Získání klíče rozhraní API

Klíč rozhraní API můžete získat z prostředku služby Health Insights na webu Azure Portal. Případně můžete k získání klíče rozhraní API vašeho prostředku použít fragment kódu Azure CLI níže.

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

Vytvoření clinicalMatchingClient s přihlašovacími údaji klíče rozhraní API

Jakmile máte hodnotu pro klíč rozhraní API, můžete ji předat jako řetězec do instance AzureKeyCredential. K ověření klienta použijte klíč jako parametr přihlašovacích údajů:

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

operace Long-Running

Dlouhotrvající operace jsou operace, které se skládají z počátečního požadavku odeslaného službě na spuštění operace, po kterém následuje dotazování služby v intervalech, aby se zjistilo, jestli se operace dokončila nebo selhala, a jestli byla úspěšná, aby získala výsledek.

Metody, které podporují analýzu zdravotní péče, vlastní analýzu textu nebo více analýz, se modelují jako dlouhotrvající operace. Klient zveřejňuje metodu begin_<method-name> , která vrací poller objekt. Volající by měli počkat na dokončení operace voláním result() na poller objekt vrácený metodou begin_<method-name> . Ukázkové fragmenty kódu jsou k dispozici pro ilustraci použití dlouhotrvajících operací jsou uvedené níže.

Klíčové koncepty

Trial Matcher poskytuje uživatelům služeb dva hlavní operační režimy: zaměřené na pacienty a klinické hodnocení.

  • V režimu zaměřeném na pacienta model Trial Matcher zakládá shodu pacientů na klinickém stavu, umístění, prioritách, kritériích způsobilosti a dalších kritériích, pro která se pacient a/nebo uživatelé služeb mohou rozhodnout, že je upřednostní. Model pomáhá zúžit a určit prioritu sady relevantních klinických hodnocení na menší sadu studií, pro které se konkrétní pacient zdá být způsobilý.
  • V případě klinického hodnocení hledá zkušební matcher skupinu pacientů potenciálně způsobilých pro klinické hodnocení. Trial Matcher zužuje počet pacientů, nejprve vyfiltruje klinický stav a vybraná klinická pozorování a pak se zaměřuje na ty pacienty, kteří splnili základní kritéria, aby našel skupinu pacientů, kteří se jeví jako způsobilí pacienti pro hodnocení.

Příklady

Následující část obsahuje několik fragmentů kódu, které pokrývají některé z nejběžnějších úloh služby Health Insights – Clinical Matching, mezi které patří:

Zápasy – zkušební verze

Vyhledání potenciálních způsobilých studií pro pacienta.

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

Řešení potíží

Obecné

Klientská knihovna Health Insights Clinical Matching vyvolá výjimky definované v Azure Core.

protokolování

Tato knihovna používá k protokolování standardní knihovnu protokolování .

Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na INFO úrovni.

Podrobné DEBUG protokolování úrovně, včetně těl požadavků/odpovědí a nezopravovaných hlaviček, je možné povolit u klienta nebo pro každou operaci pomocí argumentu klíčového logging_enable slova.

Kompletní dokumentaci k protokolování sady SDK s příklady najdete tady.

Volitelná konfigurace

Volitelné argumenty klíčových slov lze předat na úrovni klienta a pro jednotlivé operace. Referenční dokumentace azure-core popisuje dostupné konfigurace pro opakování, protokolování, přenosové protokoly a další.

Další kroky

Další dokumentace

Podrobnější dokumentaci ke klinickému párování azure Health Insights najdete v dokumentaci ke klinickému porovnávání na docs.microsoft.com.

Přispívání

Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com

Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.

Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování. V případě jakýchkoli dotazů nebo připomínek kontaktujte opencode@microsoft.com.