Built with IBM watsonx Orchestrate • Multi-Agent Workflows • Clinical Evidence (PubMed)
OncoFlow is a multi-agent orchestration system designed to solve one of healthcare’s most fragile operational challenges: oncology scheduling. Chemotherapy and radiation therapy require precise timing, but hospitals struggle with:
- Doctor-specific constraints
- Patient risk variability
- Last-minute disruptions
- Manual rescheduling workload
- Clinically unsafe delays
OncoFlow uses IBM watsonx Orchestrate to automate planning, rescheduling, risk assessment, and patient communication — while grounding decisions in PubMed clinical evidence.
The result:
70% reduction in coordinator workload,
safer scheduling decisions,
faster disruption recovery,
and evidence-justified patient care.
Oncology scheduling is uniquely difficult because:
- Delays worsen survival outcomes. Even a 48–72 hour delay in high-risk chemotherapy patients can be clinically unsafe.
- Doctors have strict constraints (no Fridays, no evenings, fixed infusion windows).
- Disruptions cascade — one sick doctor can impact 20+ patients.
- Rescheduling requires clinical reasoning, not simple calendar math.
- Nurses and coordinators are overwhelmed drafting messages and rebooking patients manually.
OncoFlow addresses all of these failure points using automation, multi-agent reasoning, and clinical grounding.
OncoFlow automates the end-to-end oncology scheduling lifecycle:
- Find safe appointment slots
- Respect doctor constraints
- Compute patient treatment risk
- Book optimized schedules
- Detect impacted patients
- Recompute risk for each case
- Suggest safe alternatives
- Draft and send messages
- Escalate complex cases
- PubMed integration validates whether treatment delays are unsafe
- Ensures every automated decision is explainable and clinically sound
- Orchestrator Agent
- Scheduler Agent
- Disruption Agent
- PubMed Evidence Tool
- Calendar Adapter
┌────────────────────────────┐
│ USER / STAFF │
│ Schedulers / Nurses │
└──────────────┬─────────────┘
│
▼
┌─────────────────────────────────┐
│ ORCHESTRATOR AGENT │
│ - Intent classification │
│ - Delegates to other agents │
│ - Handles PubMed queries │
└───────────┬───────────┬─────────┘
│ │
┌────────────▼───┐ ┌──▼─────────────────┐
│ Scheduler Agent │ │ Disruption Agent │
│ (Planning) │ │ (Reactive) │
└───────┬─────────┘ └──────────┬─────────┘
│ │
┌──────────────────┼───────────────────────┼───────────────────┐
│ │ │ │
┌───────▼────────┐ ┌──────▼──────────┐ ┌────────▼────────┐ ┌─────▼────────────┐
│ Constraint Tool │ │ Risk Scoring │ │ Message Builder │ │ PubMed Search │
│ Schedules/Rules │ │ Treatment Risk │ │ Patient Messages│ │ Evidence Tool │
└─────────────────┘ └─────────────────┘ └──────────────────┘ └───────────────────┘
┌─────────────────────────────┐
│ CALENDAR ADAPTER │
│ Blocks / updates slots │
└─────────────────────────────┘
Roles:
- Classifies user intent (schedule vs disruption vs evidence request)
- Routes tasks to Scheduler or Disruption Agent
- Calls
pubmed_searchfor clinical explanations - Aggregates results into a final response
Tools:
pubmed_search- Delegation to Scheduler Agent
- Delegation to Disruption Agent
Responsibilities:
- Load doctor constraints
- Retrieve patient history
- Compute treatment risk
- Find clinically safe appointment slots
- Propose optimized schedules
- Block slots on the calendar
Tools:
mock_dataget_doctor_scheduleget_doctor_constraintscompute_treatment_riskfind_available_slotspropose_schedule_changesapply_schedule_changesupdate_patient_preferencescalendar_block_slot
Responsibilities:
- Handle doctor absence, sick leave, room outages
- Identify all affected patients
- Recompute treatment risk
- Suggest safe alternative slots
- Draft empathetic patient messages
- Escalate complicated cases
Tools:
get_appointments_for_windowcompute_treatment_riskfind_available_slotspropose_schedule_changesgenerate_patient_messagesend_notificationupdate_patient_preferencesescalate_to_human_schedulercalendar_block_slot
Prompt:
“Find the earliest safe slot for patient P003 this week.”
Execution:
- Orchestrator → detects scheduling request
- Scheduler Agent loads doctor constraints
- Patient treatment cycle retrieved
- Risk computed: high / medium / low
- Toolchain executes:
- get_doctor_schedule
- compute_treatment_risk
- find_available_slots
- propose_schedule_changes
- Scheduler Agent returns Top 3 clinically safe slots
- Orchestrator formats final response
Prompt:
“Dr. Shah is sick today from 1–5 PM. Reschedule all affected patients.”
Execution:
- Orchestrator → classifies disruption
- Disruption Agent retrieves all impacted appointments
- For each patient:
- compute_treatment_risk
- find_available_slots
- propose_schedule_changes
- generate_patient_message
- If no safe slot → escalate
- Block slots
- Final report returned
Prompt:
“Explain why delaying chemotherapy for high-risk patients is unsafe.”
Execution:
- Orchestrator calls
pubmed_search - Retrieves articles
- Summarizes clinical reasoning
- Returns final explanation
- Blocks/updates time slots
- Prevents double-booking
- Maintains clinical integrity
- Uses OpenAPI YAML
- Provides evidence
- Converts papers → clinical reasoning
Prompt:
“Patient P003 is high risk. Show earliest safe slot between Nov 25–29.”
Output:
- 3 safe slots
- Risk explanation
- PubMed citation if needed
Prompt:
“Dr. Shah is sick today 1–5 PM. Reschedule all affected patients.”
Output:
- Impacted patients
- New schedule
- Risk scores
- Patient messages
Prompt:
“Use PubMed to justify why delaying chemotherapy is unsafe.”
- Real-time oncology scheduling
- Automated rescheduling
- Risk-aware slot decisions
- PubMed-grounded justification
- Multi-agent orchestration
- Calendar conflict prevention
- 70% reduction in manual work
- 90% faster disruption recovery
- 0 unsafe delays due to risk scoring
- 5–10 minutes saved per action
- Import agent JSONs
- Upload tools
- Attach PubMed OpenAPI
- Deploy agents
- Test with prompts
- EMR integration
- Multi-language messages
- SMS adapters
- Voice transcription
- Predictive load balancing
https://drive.google.com/drive/folders/1pRDlFKXvFPkdWDwaD2jiuxqfSswvnCp0?usp=sharing