Share via


Azure Cognitive Services Health Insights- klientbibliotek för klinisk matchning för Python – version 1.0.0b1

Health Insights är en Azure Applied AI-tjänst som skapats med Azure Cognitive Services Framework och som utnyttjar flera Cognitive Services, Healthcare API-tjänster och andra Azure-resurser. Modellen för klinisk matchning tar emot patientdata och protokoll för kliniska prövningar och tillhandahåller relevanta kliniska prövningar baserat på berättigandekriterier.

| Källkod Paket (PyPI) | API-referensdokumentation | Produktdokumentation | Prover

Komma igång

Förutsättningar

  • Python 3.7 eller senare krävs för att använda det här paketet.
  • Du behöver en Azure-prenumeration för att använda det här paketet.
  • En befintlig Cognitive Services Health Insights-instans.

Installera paketet

pip install azure-healthinsights-clinicalmatching

Den här tabellen visar relationen mellan SDK-versioner och API-versioner som stöds av tjänsten:

SDK-version API-version av tjänsten som stöds
1.0.0b1 Förhandsversion av 2023-03-01

Autentisera klienten

Hämta slutpunkten

Du hittar slutpunkten för din Health Insights-tjänstresurs med hjälp av Azure-portalen eller 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"

Hämta API-nyckeln

Du kan hämta API-nyckeln från Health Insights-tjänstresursen i Azure-portalen. Du kan också använda Azure CLI-kodfragmentet nedan för att hämta API-nyckeln för din resurs.

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

Skapa en ClinicalMatchingClient med en API-nyckelautentiseringsuppgift

När du har värdet för API-nyckeln kan du skicka den som en sträng till en instans av AzureKeyCredential. Använd nyckeln som parameter för autentiseringsuppgifter för att autentisera klienten:

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

Long-Running åtgärder

Långvariga åtgärder är åtgärder som består av en första begäran som skickas till tjänsten för att starta en åtgärd, följt av avsökning av tjänsten med jämna mellanrum för att avgöra om åtgärden har slutförts eller misslyckats, och om den har lyckats för att få resultatet.

Metoder som stöder hälso- och sjukvårdsanalys, anpassad textanalys eller flera analyser modelleras som långvariga åtgärder. Klienten exponerar en begin_<method-name> metod som returnerar ett pollerobjekt. Anropare bör vänta tills åtgärden har slutförts genom att anropa result() det pollerobjekt som returneras från begin_<method-name> metoden . Exempelkodfragment tillhandahålls för att illustrera med hjälp av långvariga åtgärder nedan.

Viktiga begrepp

Trial Matcher ger användaren av tjänsterna två huvudsakliga driftslägen: patienter centrerad och klinisk prövning centrerad.

  • I centrerad patientläge baseras testmatchningsmodellen på patientens matchning på kliniskt tillstånd, plats, prioriteringar, berättigandekriterier och andra kriterier som patienten och/eller tjänstanvändare kan välja att prioritera. Modellen hjälper till att begränsa och prioritera uppsättningen relevanta kliniska prövningar till en mindre uppsättning prövningar till att börja med, som den specifika patienten verkar vara kvalificerad för.
  • På centrerad klinisk prövning finner Trial Matcher en grupp patienter som potentiellt är berättigade till en klinisk prövning. Studiematchare begränsar patienterna, filtrerar först på kliniskt tillstånd och utvalda kliniska observationer och fokuserar sedan på de patienter som uppfyllde baslinjekriterierna, för att hitta den grupp patienter som verkar vara berättigade patienter till en studie.

Exempel

Följande avsnitt innehåller flera kodfragment som täcker några av de vanligaste hälsoinsikterna – kliniska matchningstjänstuppgifter, inklusive:

Matcha utvärderingsversioner

Hitta potentiella berättigade försök för en 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}")

Felsökning

Allmänt

Health Insights-klientbiblioteket för klinisk matchning genererar undantag som definierats i Azure Core.

Loggning

Det här biblioteket använder standardloggningsbiblioteket för loggning.

Grundläggande information om HTTP-sessioner (URL:er, rubriker osv.) loggas på INFO nivå.

Detaljerad DEBUG nivåloggning, inklusive begärande-/svarskroppar och oredigerade rubriker, kan aktiveras på klienten eller per åtgärd med nyckelordsargumentet logging_enable .

Se fullständig SDK-loggningsdokumentation med exempel här.

Valfri konfiguration

Valfria nyckelordsargument kan skickas in på klient- och åtgärdsnivå. Referensdokumentationen för azure-core beskriver tillgängliga konfigurationer för återförsök, loggning, transportprotokoll med mera.

Nästa steg

Ytterligare dokumentation

Mer omfattande dokumentation om klinisk matchning i Azure Health Insights finns i dokumentationen om klinisk matchning på docs.microsoft.com.

Bidra

Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.

När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång för alla repor som använder vårt licensavtal för bidrag.

Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Du hittar mer information i Vanliga frågor om uppförandekod eller kontakta opencode@microsoft.com för ytterligare frågor eller kommentarer.