Udostępnij za pośrednictwem


Biblioteka klienta azure Cognitive Services Health Insights Clinical Matching dla języka Python — wersja 1.0.0b1

Health Insights to usługa Azure Applied AI Service utworzona za pomocą platformy Azure Cognitive Services Framework, która korzysta z wielu usług Cognitive Services, usług Interfejsu API opieki zdrowotnej i innych zasobów platformy Azure. Model dopasowania klinicznego otrzymuje dane pacjentów i protokoły badań klinicznych i zapewnia odpowiednie badania kliniczne na podstawie kryteriów kwalifikowalności.

Kod | źródłowy Pakiet (PyPI) | Dokumentacja referencyjna interfejsu | API Dokumentacja | produktu Próbki

Wprowadzenie

Wymagania wstępne

  • Do korzystania z tego pakietu wymagany jest język Python w wersji 3.7 lub nowszej.
  • Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure .
  • Istniejące wystąpienie usługi Cognitive Services Health Insights.

Instalowanie pakietu

pip install azure-healthinsights-clinicalmatching

W tej tabeli przedstawiono relację między wersjami zestawu SDK i obsługiwanymi wersjami interfejsu API usługi:

Wersja zestawu SDK Obsługiwana wersja usługi interfejsu API
1.0.0b1 2023-03-01-preview

Uwierzytelnianie klienta

Pobieranie punktu końcowego

Punkt końcowy zasobu usługi Health Insights można znaleźć za pomocą witryny Azure Portal lub interfejsu wiersza polecenia platformy 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"

Pobieranie klucza interfejsu API

Klucz interfejsu API można uzyskać z zasobu usługi Health Insights w witrynie Azure Portal. Alternatywnie możesz użyć poniższego fragmentu interfejsu wiersza polecenia platformy Azure , aby uzyskać klucz interfejsu API zasobu.

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

Tworzenie elementu ClinicalMatchingClient przy użyciu poświadczeń klucza interfejsu API

Po utworzeniu wartości klucza interfejsu API możesz przekazać go jako ciąg do wystąpienia obiektu AzureKeyCredential. Użyj klucza jako parametru poświadczeń, aby uwierzytelnić klienta:

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

operacje Long-Running

Długotrwałe operacje to operacje, które składają się z początkowego żądania wysłanego do usługi w celu uruchomienia operacji, a następnie sondowania usługi w odstępach czasu w celu ustalenia, czy operacja została ukończona, czy nie powiodła się, a jeśli zakończyła się pomyślnie, aby uzyskać wynik.

Metody, które obsługują analizę opieki zdrowotnej, niestandardową analizę tekstu lub wiele analiz, są modelowane jako długotrwałe operacje. Klient uwidacznia metodę zwracającą begin_<method-name> obiekt poller. Obiekt wywołujący powinien czekać na ukończenie operacji przez wywołanie result() obiektu poller zwróconego begin_<method-name> z metody . Przykładowe fragmenty kodu są udostępniane w celu zilustrowania użycia długotrwałych operacji poniżej.

Kluczowe pojęcia

Test Matcher zapewnia użytkownikowi usług dwa główne tryby działania: skoncentrowane na pacjentach i badania kliniczne.

  • W trybie skoncentrowanym na pacjenta model matcher próbny opiera się na dopasowaniu pacjenta w stanie klinicznym, lokalizacji, priorytetach, kryteriach uprawnień i innych kryteriach, które użytkownicy pacjentów i/lub usług mogą wybrać priorytety. Model pomaga zawęzić i określić priorytety zestawu odpowiednich badań klinicznych do mniejszego zestawu badań do rozpoczęcia, że konkretny pacjent wydaje się być zakwalifikowany.
  • W przypadku badania klinicznego, Test Matcher znajduje grupę pacjentów potencjalnie uprawnionych do badania klinicznego. Matcher badania zawęża pacjentów, najpierw filtrowany na stan kliniczny i wybrane obserwacje kliniczne, a następnie koncentruje się na tych pacjentów, którzy spełniają kryteria odniesienia, aby znaleźć grupę pacjentów, którzy wydają się kwalifikować pacjentów do badania.

Przykłady

W poniższej sekcji przedstawiono kilka fragmentów kodu obejmujących niektóre z najbardziej typowych zadań usługi Health Insights — Clinical Matching, w tym:

Dopasowywanie wersji próbnych

Znalezienie potencjalnych kwalifikujących się badań dla pacjenta.

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

Rozwiązywanie problemów

Ogólne

Biblioteka klienta health Insights Clinical Matching zgłasza wyjątki zdefiniowane w usłudze Azure Core.

Rejestrowanie

Ta biblioteka używa standardowej biblioteki rejestrowania do rejestrowania.

Podstawowe informacje o sesjach HTTP (adresach URL, nagłówkach itp.) są rejestrowane na INFO poziomie.

Szczegółowe DEBUG rejestrowanie na poziomie, w tym treści żądań/odpowiedzi i nieredagowanych nagłówków, można włączyć na kliencie lub na operację za pomocą argumentu słowa kluczowego logging_enable .

Zobacz pełną dokumentację rejestrowania zestawu SDK z przykładami tutaj.

Konfiguracja opcjonalna

Opcjonalne argumenty słów kluczowych można przekazać na poziomie klienta i na poziomie operacji. W dokumentacji referencyjnej platformy Azure opisano dostępne konfiguracje ponownych prób, rejestrowania, protokołów transportowych i nie tylko.

Następne kroki

Dodatkowa dokumentacja

Aby uzyskać bardziej obszerną dokumentację dotyczącą dopasowywania klinicznego usługi Azure Health Insights, zobacz dokumentację dotyczącą dopasowywania klinicznego w witrynie docs.microsoft.com.

Współtworzenie

W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę https://cla.microsoft.com.

Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Wystarczy zrobić to raz dla wszystkich repozytoriów, w przypadku których jest używana nasza umowa CLA.

W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz artykuł Code of Conduct FAQ (Często zadawane pytania dotyczące kodeksu postępowania). Jeśli będziesz mieć jeszcze jakieś pytania lub komentarze, wyślij wiadomość e-mail na adres opencode@microsoft.com.