Klientská knihovna azure Cognitive Services Health Insights pro profilaci rakoviny 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á několik služeb Cognitive Services, služeb rozhraní API pro zdravotnictví a dalších prostředků Azure.
Model profilace rakoviny přijímá klinické záznamy onkologických pacientů a výstupy onkologických stagingů, jako jsou kategorie klinické fáze TNM a kategorie TNM patologické fáze, jakož i místo nádoru, telemetrie.
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-cancerprofiling
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 pomocí fragmentu kódu Azure CLI níže získat klíč rozhraní API vašeho prostředku.
az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>
Vytvoření CancerProfilingClient s přihlašovacími údaji klíče rozhraní API
Jakmile budete mít hodnotu pro klíč rozhraní API, můžete ho 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.cancerprofiling.aio import CancerProfilingClient
KEY = os.environ["HEALTHINSIGHTS_KEY"]
ENDPOINT = os.environ["HEALTHINSIGHTS_ENDPOINT"]
cancer_profiling_client = CancerProfilingClient(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 a následného dotazování služby v intervalech, aby se zjistilo, jestli se operace dokončila nebo selhala, a pokud byla úspěšná, aby se získal 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í objekt poller. Volající by měli počkat na dokončení operace voláním result()
objektu poller vráceného begin_<method-name>
z metody.
Ukázkové fragmenty kódu jsou k dispozici pro ilustraci použití dlouhotrvajících operací níže.
Klíčové koncepty
Model profilace rakoviny umožňuje odvodit atributy rakoviny, jako je místo nádoru, telemetrie, kategorie TNM klinické fáze a kategorie TNM patologického stadia z nestrukturovaných klinických dokumentů.
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 – Profilace rakoviny, mezi které patří:
Profilace rakoviny
Z nestrukturovaných klinických dokumentů pacienta odvozujte klíčové atributy rakoviny, jako je místo nádoru, telemetrie, kategorie TNM klinických fází a kategorie TNM v patologických fázích.
import asyncio
import os
import datetime
from azure.core.credentials import AzureKeyCredential
from azure.healthinsights.cancerprofiling.aio import CancerProfilingClient
from azure.healthinsights.cancerprofiling import models
KEY = os.environ["HEALTHINSIGHTS_KEY"]
ENDPOINT = os.environ["HEALTHINSIGHTS_ENDPOINT"]
# Create an Onco Phenotype client
# <client>
cancer_profiling_client = CancerProfilingClient(endpoint=ENDPOINT,
credential=AzureKeyCredential(KEY))
# </client>
# Construct patient
# <PatientConstructor>
patient_info = models.PatientInfo(sex=models.PatientInfoSex.FEMALE, birth_date=datetime.date(1979, 10, 8))
patient1 = models.PatientRecord(id="patient_id", info=patient_info)
# </PatientConstructor>
# Add document list
# <DocumentList>
doc_content1 = """
15.8.2021
Jane Doe 091175-8967
42 year old female, married with 3 children, works as a nurse
Healthy, no medications taken on a regular basis.
PMHx is significant for migraines with aura, uses Mirena for contraception.
Smoking history of 10 pack years (has stopped and relapsed several times).
She is in c/o 2 weeks of productive cough and shortness of breath.
She has a fever of 37.8 and general weakness.
Denies night sweats and rash. She denies symptoms of rhinosinusitis, asthma, and heartburn.
On PE:
GENERAL: mild pallor, no cyanosis. Regular breathing rate.
LUNGS: decreased breath sounds on the base of the right lung. Vesicular breathing.
No crackles, rales, and wheezes. Resonant percussion.
PLAN:
Will be referred for a chest x-ray.
======================================
CXR showed mild nonspecific opacities in right lung base.
PLAN:
Findings are suggestive of a working diagnosis of pneumonia. The patient is referred to a
follow-up CXR in 2 weeks."""
patient_document1 = models.PatientDocument(type=models.DocumentType.NOTE,
id="doc1",
content=models.DocumentContent(
source_type=models.DocumentContentSourceType.INLINE,
value=doc_content1),
clinical_type=models.ClinicalDocumentType.IMAGING,
language="en",
created_date_time=datetime.datetime(2021, 8, 15))
doc_content2 = """
Oncology Clinic
20.10.2021
Jane Doe 091175-8967
42-year-old healthy female who works as a nurse in the ER of this hospital.
First menstruation at 11 years old. First delivery- 27 years old. She has 3 children.
Didn't breastfeed.
Contraception- Mirena.
Smoking- 10 pack years.
Mother- Belarusian. Father- Georgian.
About 3 months prior to admission, she stated she had SOB and was febrile.
She did a CXR as an outpatient which showed a finding in the base of the right lung-
possibly an infiltrate.
She was treated with antibiotics with partial response.
6 weeks later a repeat CXR was performed- a few solid dense findings in the right lung.
Therefore, she was referred for a PET-CT which demonstrated increased uptake in the right
breast, lymph nodes on the right a few areas in the lungs and liver.
On biopsy from the lesion in the right breast- triple negative adenocarcinoma. Genetic
testing has not been done thus far.
Genetic counseling- the patient denies a family history of breast, ovary, uterus,
and prostate cancer. Her mother has chronic lymphocytic leukemia (CLL).
She is planned to undergo genetic tests because the aggressive course of the disease,
and her young age.
Impression:
Stage 4 triple negative breast adenocarcinoma.
Could benefit from biological therapy.
Different treatment options were explained- the patient wants to get a second opinion."""
patient_document2 = models.PatientDocument(type=models.DocumentType.NOTE,
id="doc2",
content=models.DocumentContent(
source_type=models.DocumentContentSourceType.INLINE,
value=doc_content2),
clinical_type=models.ClinicalDocumentType.PATHOLOGY,
language="en",
created_date_time=datetime.datetime(2021, 10, 20))
doc_content3 = """
PATHOLOGY REPORT
Clinical Information
Ultrasound-guided biopsy; A. 18 mm mass; most likely diagnosis based on imaging: IDC
Diagnosis
A. BREAST, LEFT AT 2:00 4 CM FN; ULTRASOUND-GUIDED NEEDLE CORE BIOPSIES:
- Invasive carcinoma of no special type (invasive ductal carcinoma), grade 1
Nottingham histologic grade: 1/3 (tubules 2; nuclear grade 2; mitotic rate 1;
total score; 5/9)
Fragments involved by invasive carcinoma: 2
Largest measurement of invasive carcinoma on a single fragment: 7 mm
Ductal carcinoma in situ (DCIS): Present
Architectural pattern: Cribriform
Nuclear grade: 2-
-intermediate
Necrosis: Not identified
Fragments involved by DCIS: 1
Largest measurement of DCIS on a single fragment: Span 2 mm
Microcalcifications: Present in benign breast tissue and invasive carcinoma
Blocks with invasive carcinoma: A1
Special studies: Pending"""
patient_document3 = models.PatientDocument(type=models.DocumentType.NOTE,
id="doc3",
content=models.DocumentContent(
source_type=models.DocumentContentSourceType.INLINE,
value=doc_content3),
clinical_type=models.ClinicalDocumentType.PATHOLOGY,
language="en",
created_date_time=datetime.datetime(2022, 1, 1))
patient_doc_list = [patient_document1, patient_document2, patient_document3]
patient1.data = patient_doc_list
# <\DocumentList>
# Set configuration to include evidence for the cancer staging inferences
configuration = models.OncoPhenotypeModelConfiguration(include_evidence=True)
# Construct the request with the patient and configuration
cancer_profiling_data = models.OncoPhenotypeData(patients=[patient1], configuration=configuration)
poller = await cancer_profiling_client.begin_infer_cancer_profile(cancer_profiling_data)
cancer_profiling_result = await poller.result()
if cancer_profiling_result.status == models.JobStatus.SUCCEEDED:
results = cancer_profiling_result.results
for patient_result in results.patients:
print(f"\n==== Inferences of Patient {patient_result.id} ====")
for inference in patient_result.inferences:
print(
f"\n=== Clinical Type: {str(inference.type)} Value: {inference.value}\
ConfidenceScore: {inference.confidence_score} ===")
for evidence in inference.evidence:
data_evidence = evidence.patient_data_evidence
print(
f"Evidence {data_evidence.id} {data_evidence.offset} {data_evidence.length}\
{data_evidence.text}")
else:
errors = cancer_profiling_result.errors
if errors is not None:
for error in errors:
print(f"{error.code} : {error.message}")
Řešení potíží
Obecné
Klientská knihovna profilace rakoviny Health Insights vyvolá výjimky definované v Azure Core.
protokolování
Tato knihovna používá pro protokolování standardní knihovnu protokolování .
Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na INFO
úrovni.
Protokolování podrobných DEBUG
úrovní, včetně těl požadavků/odpovědí a nereagovaných hlaviček, je možné povolit u klienta nebo pro jednotlivé operace 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 je možné předat na úrovni klienta a na úrovni jednotlivých operací. Referenční dokumentace azure-core popisuje dostupné konfigurace pro opakování, protokolování, přenosové protokoly a další.
Další kroky
Další dokumentace
Rozsáhlejší dokumentaci k profilaci rakoviny ve službě Azure Health Insights najdete v dokumentaci k profilaci rakoviny 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.
Azure SDK for Python
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro