9.7 KiB
9.7 KiB
title, task, lineage_type, upstream_source, upstream_sha, imported_at, prompt_class, upstream_changes, author, validated
| title | task | lineage_type | upstream_source | upstream_sha | imported_at | prompt_class | upstream_changes | author | validated |
|---|---|---|---|---|---|---|---|---|---|
| Complete Example Workflow | import | https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-clinical-trial-design/WORKFLOW_DETAILS.md | e2520a96 | 2026-06-26 | prompt | accepted | upstream | false |
Complete Example Workflow
EGFR L858R+ NSCLC Phase 1/2 Trial
Full Python example using ToolUniverse to assess trial feasibility across all 6 research paths.
from tooluniverse import ToolUniverse
tu = ToolUniverse(use_cache=True)
tu.load_tools()
# ============================================================================
# PATH 1: PATIENT POPULATION SIZING
# ============================================================================
# Step 1.1: Get disease prevalence
disease_info = tu.tools.OpenTargets_get_disease_id_description_by_name(
diseaseName="non-small cell lung cancer"
)
efo_id = disease_info['data']['id']
# Get phenotype data (includes prevalence if available)
phenotypes = tu.tools.OpenTargets_get_diseases_phenotypes(
efoId=efo_id
)
# Note: May need to supplement with literature (PubMed) for specific prevalence
# Step 1.2: Estimate EGFR mutation prevalence
egfr_variants = tu.tools.ClinVar_search_variants(
gene="EGFR",
significance="pathogenic,likely_pathogenic"
)
# Filter to L858R specifically
l858r_variants = [v for v in egfr_variants['data']
if 'L858R' in v.get('name', '')]
# Also check population databases for allele frequency
gnomad_egfr = tu.tools.gnomad_search_variants(
gene="EGFR"
)
# Filter to L858R and sum allele frequencies
# Step 1.3: Search literature for epidemiology
epi_papers = tu.tools.PubMed_search_articles(
query="EGFR L858R prevalence non-small cell lung cancer epidemiology",
max_results=20
)
# Extract prevalence estimates from recent papers
# ============================================================================
# PATH 2: BIOMARKER PREVALENCE & TESTING
# ============================================================================
# Step 2.1: Find FDA-approved CDx tests
cdx_search = tu.tools.PubMed_search_articles(
query="FDA approved companion diagnostic EGFR L858R",
max_results=10
)
# Step 2.2: Literature on EGFR testing in clinical practice
testing_papers = tu.tools.PubMed_search_articles(
query="EGFR mutation testing guidelines NCCN turnaround time",
max_results=15
)
# ============================================================================
# PATH 3: COMPARATOR SELECTION
# ============================================================================
# Step 3.1: Find current standard of care (osimertinib)
soc_drug = "osimertinib"
soc_info = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(
drug_name_or_drugbank_id=soc_drug
)
soc_indications = tu.tools.drugbank_get_indications_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id=soc_drug
)
soc_pharmacology = tu.tools.drugbank_get_pharmacology_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id=soc_drug
)
# Step 3.2: Check FDA Orange Book for approved generics
orange_book = tu.tools.FDA_OrangeBook_search_drug(
ingredient=soc_drug
)
# Step 3.3: Find FDA approval details
fda_approval = tu.tools.OpenFDA_get_approval_history(
drug_name=soc_drug
)
# ============================================================================
# PATH 4: ENDPOINT SELECTION
# ============================================================================
# Step 4.1: Search for precedent Phase 2 trials in EGFR+ NSCLC
precedent_trials = tu.tools.search_clinical_trials(
condition="EGFR positive non-small cell lung cancer",
phase="2",
status="completed"
)
# Analyze which primary endpoints were used (ORR, PFS, etc.)
orr_trials = [t for t in precedent_trials['data']
if 'response rate' in t.get('primary_outcome', '').lower()]
# Step 4.2: Find FDA approvals using ORR as primary endpoint
orr_approvals = tu.tools.PubMed_search_articles(
query="FDA approval objective response rate NSCLC accelerated approval",
max_results=30
)
# Step 4.3: Get detailed trial results for sample size justification
for trial in precedent_trials['data'][:5]:
nct_id = trial.get('nct_number')
trial_details = tu.tools.search_clinical_trials(
nct_id=nct_id
)
# Extract: ORR, n, confidence intervals
# ============================================================================
# PATH 5: SAFETY ENDPOINTS & MONITORING
# ============================================================================
# Step 5.1: Get mechanism-based toxicity from drug class
class_drug = "erlotinib" # Example EGFR TKI for class effect reference
class_safety = tu.tools.drugbank_get_pharmacology_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id=class_drug
)
class_warnings = tu.tools.FDA_get_warnings_and_cautions_by_drug_name(
drug_name=class_drug
)
# Step 5.2: FAERS data for real-world adverse events
faers_egfr_tki = tu.tools.FAERS_search_reports_by_drug_and_reaction(
drug_name="erlotinib",
limit=500
)
# Summarize top adverse events
ae_summary = tu.tools.FAERS_count_reactions_by_drug_event(
medicinalproduct="ERLOTINIB"
)
# Step 5.3: Search for DLT definitions in similar trials
dlt_papers = tu.tools.PubMed_search_articles(
query="dose limiting toxicity Phase 1 EGFR inhibitor definition",
max_results=20
)
# ============================================================================
# PATH 6: REGULATORY PATHWAY
# ============================================================================
# Step 6.1: Search for breakthrough therapy designations in NSCLC
breakthrough_search = tu.tools.PubMed_search_articles(
query="FDA breakthrough therapy designation NSCLC EGFR mutation",
max_results=20
)
# Step 6.2: Check if indication qualifies for orphan drug status
us_nsclc_annual = 200000 # From epidemiology data
l858r_prevalence = 0.45 * 0.15 # 45% of EGFR+ (15% of NSCLC)
l858r_annual_us = us_nsclc_annual * l858r_prevalence # ~13,500/year
# Note: Orphan requires <200,000 total prevalence; may not qualify if prevalent
# Step 6.3: Find relevant FDA guidance documents
fda_guidance_search = tu.tools.PubMed_search_articles(
query="FDA guidance clinical trial endpoints oncology non-small cell lung cancer",
max_results=15
)
# ============================================================================
# COMPILE FEASIBILITY REPORT
# ============================================================================
feasibility_scores = {
'patient_availability': 8, # 8/10 based on 13,500 patients/year, good access
'endpoint_precedent': 9, # 9/10 ORR widely accepted
'regulatory_clarity': 7, # 7/10 breakthrough possible, single-arm needs FDA input
'comparator_feasibility': 9, # 9/10 osimertinib available, efficacy data clear
'safety_monitoring': 8 # 8/10 EGFR TKI class effects well-characterized
}
weights = {
'patient_availability': 0.30,
'endpoint_precedent': 0.25,
'regulatory_clarity': 0.20,
'comparator_feasibility': 0.15,
'safety_monitoring': 0.10
}
overall_score = sum(feasibility_scores[k] * weights[k] * 10 for k in weights.keys())
# overall_score = 81/100 -> HIGH feasibility
print(f"Feasibility Score: {overall_score}/100 - HIGH")
print("Recommendation: RECOMMEND PROCEED to protocol development")
Example Use Cases
Use Case 1: Biomarker-Selected Oncology Trial
Query: "Assess feasibility of Phase 2 trial for EGFR L858R+ NSCLC, ORR primary endpoint"
Workflow:
- Disease prevalence: 200K NSCLC/year x 15% EGFR+ = 30K
- Biomarker: L858R is 45% of EGFR+ -> 13.5K/year
- Eligible: 60% -> 8K/year
- Endpoint: ORR accepted (osimertinib precedent)
- Comparator: Osimertinib (ORR 57%, generic available)
- Feasibility: HIGH (82/100) -> RECOMMEND PROCEED
Use Case 2: Rare Disease Trial
Query: "Feasibility of trial in Niemann-Pick Type C (prevalence 1:120,000)"
Workflow:
- US prevalence: ~2,750 patients total, ~25 new cases/year
- Endpoint challenge: No validated clinical outcome
- Orphan drug: QUALIFIED (7-year exclusivity)
- Comparator: No approved drugs -> single-arm feasible
- Enrollment: Multi-year, need ALL US centers
- Feasibility: MODERATE (58/100) -> CONDITIONAL GO (requires patient registry partnership)
Use Case 3: Superiority Trial vs. Standard of Care
Query: "Phase 2b design for new checkpoint inhibitor vs. pembrolizumab in PD-L1 high NSCLC"
Workflow:
- Patient availability: 40K PD-L1 high NSCLC/year (HIGH)
- Endpoint: ORR for Phase 2b, plan OS for Phase 3
- Comparator: Pembrolizumab (ORR 45%, PFS 10mo) - readily available
- Design: Randomized 1:1, N=120 (60/arm) for 20% ORR improvement
- Feasibility: HIGH (78/100) -> RECOMMEND PROCEED
Use Case 4: Non-Inferiority Trial
Query: "Non-inferiority trial for oral anticoagulant vs. warfarin"
Workflow:
- Patient availability: 2M AFib patients, 600K on warfarin (HIGH)
- Endpoint: Stroke/SE (FDA-accepted, but requires large N)
- Non-inferiority margin: HR <1.5 (FDA guidance)
- Sample size: N=5,000+ for 90% power -> LARGE trial
- Comparator: Warfarin generic, INR monitoring standard
- Feasibility: MODERATE (65/100) - large N drives cost and timeline
Use Case 5: Basket Trial (Multiple Cancers, One Biomarker)
Query: "Basket trial for NTRK fusion+ solid tumors (15 histologies)"
Workflow:
- Patient availability: NTRK fusions rare (<1% across cancers) -> Broad screening
- Biomarker testing: NGS required (FDA-approved FoundationOne CDx)
- Endpoint: ORR (precedent: larotrectinib approval, ORR 75%, n=55)
- Design: Single-arm, N=15-20 per histology x 5-10 histologies
- Regulatory: Tissue-agnostic approval precedent (pembrolizumab MSI-H)
- Feasibility: MODERATE (62/100) - enrollment slow but feasible with broad screening