Bagikan melalui


Pustaka klien Pencocokan Klinis Azure Cognitive Services Health Insights untuk Python - versi 1.0.0b1

Wawasan Kesehatan adalah Layanan AI Terapan Azure yang dibangun dengan Azure Cognitive Services Framework, yang memanfaatkan beberapa Cognitive Services, layanan Healthcare API, dan sumber daya Azure lainnya. Model Clinical Matching menerima data pasien dan protokol uji klinis, dan menyediakan uji klinis yang relevan berdasarkan kriteria kelayakan.

Kode sumber | Paket (PyPI) | Dokumentasi | referensi API Dokumentasi | produk Sampel

Memulai

Prasyarat

  • Python 3.7 atau yang lebih baru diharuskan untuk menggunakan paket ini.
  • Anda memerlukan langganan Azure untuk menggunakan paket ini.
  • Instans Cognitive Services Health Insights yang ada.

Instal paketnya

pip install azure-healthinsights-clinicalmatching

Tabel ini menunjukkan hubungan antara versi SDK dan versi API layanan yang didukung:

Versi SDK Versi API layanan yang didukung
1.0.0b1 Pratinjau 01-03-2023

Mengautentikasi klien

Mendapatkan titik akhir

Anda dapat menemukan titik akhir untuk sumber daya layanan Wawasan Kesehatan Anda menggunakan Portal Azure atau 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"

Dapatkan Kunci API

Anda bisa mendapatkan Kunci API dari sumber daya layanan Wawasan Kesehatan di Portal Microsoft Azure. Atau, Anda dapat menggunakan cuplikan Azure CLI di bawah ini untuk mendapatkan kunci API sumber daya Anda.

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

Membuat ClinicalMatchingClient dengan Kredensial Kunci API

Setelah Anda memiliki nilai untuk kunci API, Anda dapat meneruskannya sebagai string ke dalam instans AzureKeyCredential. Gunakan kunci sebagai parameter kredensial untuk mengautentikasi klien:

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

Operasi Long-Running

Operasi jangka panjang adalah operasi yang terdiri dari permintaan awal yang dikirim ke layanan untuk memulai operasi, diikuti dengan polling layanan pada interval untuk menentukan apakah operasi telah selesai atau gagal, dan jika telah berhasil, untuk mendapatkan hasilnya.

Metode yang mendukung analisis layanan kesehatan, analisis teks kustom, atau beberapa analisis dimodelkan sebagai operasi yang berjalan lama. Klien mengekspos begin_<method-name> metode yang mengembalikan objek poller. Penelepon harus menunggu operasi selesai dengan memanggil result() objek poller yang dikembalikan dari begin_<method-name> metode . Cuplikan kode sampel disediakan untuk mengilustrasikan menggunakan Contoh operasi yang berjalan lama di bawah ini.

Konsep utama

Trial Matcher menyediakan pengguna layanan dua mode operasi utama: pasien sentris dan uji klinis sentris.

  • Pada mode sentris pasien, model Pencocokan Uji Coba mendasarkan pencocokan pasien pada kondisi klinis, lokasi, prioritas, kriteria kelayakan, dan kriteria lain yang dapat dipilih pasien dan/atau pengguna layanan untuk diprioritaskan. Model ini membantu mempersempit dan memprioritaskan serangkaian uji klinis yang relevan ke serangkaian uji coba yang lebih kecil untuk memulai, yang tampaknya memenuhi syarat untuk pasien tertentu.
  • Pada uji klinis yang sentris, Trial Matcher menemukan sekelompok pasien yang berpotensi memenuhi syarat untuk uji klinis. Trial Matcher mempersempit pasien, pertama kali difilter pada kondisi klinis dan pengamatan klinis yang dipilih, dan kemudian berfokus pada pasien yang memenuhi kriteria dasar, untuk menemukan kelompok pasien yang tampaknya memenuhi syarat pasien untuk uji coba.

Contoh

Bagian berikut ini menyediakan beberapa cuplikan kode yang mencakup beberapa tugas layanan Health Insights - Clinical Matching yang paling umum, termasuk:

Cocokkan uji coba

Menemukan potensi uji coba yang memenuhi syarat untuk pasien.

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

Pemecahan Masalah

Umum

Pustaka klien Pencocokan Klinis Health Insights akan memunculkan pengecualian yang ditentukan dalam Azure Core.

Pembuatan Log

Pustaka ini menggunakan pustaka pengelogan standar untuk pengelogan.

Informasi dasar tentang sesi HTTP (URL, header, dll.) dicatat pada INFO tingkat.

Pengelogan tingkat terperinci, termasuk isi DEBUG permintaan/respons dan header yang tidak diredaksikan , dapat diaktifkan pada klien atau per operasi dengan logging_enable argumen kata kunci.

Lihat dokumentasi pengelogan SDK lengkap dengan contoh di sini.

Konfigurasi Opsional

Argumen kata kunci opsional dapat diteruskan di tingkat klien dan per operasi. Dokumentasi referensi azure-core menjelaskan konfigurasi yang tersedia untuk percobaan ulang, pengelogan, protokol transportasi, dan banyak lagi.

Langkah berikutnya

Dokumentasi tambahan

Untuk dokumentasi yang lebih luas tentang Pencocokan Klinis Azure Health Insights, lihat dokumentasi Pencocokan Klinis tentang docs.microsoft.com.

Berkontribusi

Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.

Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Kode Etik atau kontak dengan pertanyaan atau komentar opencode@microsoft.com tambahan.