def precision_oncology_workflow(tumor_type, mutations):
"""
精密腫瘍学ワークフロー。
変異プロファイルから actionable targets を同定し、
治療推奨を生成する。
"""
workflow = {
"step1": "変異リスト → OncoKB アノテーション",
"step2": "Actionable mutations の同定 (Level 1-4)",
"step3": "腫瘍タイプ特異的ガイドライン確認",
"step4": "承認薬・臨床試験のマッチング",
"step5": "治療推奨レポート生成",
}
actionability = {
"Level_1": "FDA-approved, same tumor type",
"Level_2": "Standard care, different tumor type",
"Level_3A": "Clinical evidence, same tumor",
"Level_3B": "Clinical evidence, different tumor",
"Level_4": "Preclinical evidence",
}
return workflow
CANCER_BIOMARKERS = {
"EGFR": {
"tumor_types": ["NSCLC"],
"mutations": ["L858R", "ex19del", "T790M", "C797S"],
"therapies": {
"L858R/ex19del": ["osimertinib", "erlotinib", "gefitinib"],
"T790M": ["osimertinib"],
}
},
"BRAF": {
"tumor_types": ["Melanoma", "NSCLC", "CRC", "Thyroid"],
"mutations": ["V600E", "V600K"],
"therapies": {
"V600E": ["vemurafenib + cobimetinib", "dabrafenib + trametinib",
"encorafenib + binimetinib"],
}
},
"ALK": {
"tumor_types": ["NSCLC"],
"mutations": ["Fusion"],
"therapies": {
"Fusion": ["alectinib", "lorlatinib", "crizotinib", "ceritinib"],
}
},
"MSI-H/dMMR": {
"tumor_types": ["Pan-cancer"],
"therapies": {
"MSI-H": ["pembrolizumab", "nivolumab"],
}
},
}
def match_clinical_trials(patient_profile):
"""
ClinicalTrials.gov API を用いた臨床試験マッチング。
"""
import requests
params = {
"query.cond": patient_profile.get("condition"),
"query.intr": patient_profile.get("biomarker", ""),
"filter.overallStatus": "RECRUITING",
"pageSize": 20,
}
response = requests.get(
"https://clinicaltrials.gov/api/v2/studies",
params=params
)
trials = []
if response.status_code == 200:
for study in response.json().get("studies", []):
protocol = study.get("protocolSection", {})
trials.append({
"nct_id": protocol.get("identificationModule", {}).get("nctId"),
"title": protocol.get("identificationModule", {}).get("briefTitle"),
"phase": protocol.get("designModule", {}).get("phases", []),
"status": protocol.get("statusModule", {}).get("overallStatus"),
"interventions": protocol.get("armsInterventionsModule", {}).get("interventions", []),
})
return trials