Agentic Multidisciplinary Tumor Board (AMDT): The Neuro-Symbolic Tumor Board Orchestrator
What Inspired Me
In oncology, Time-to-Treatment Initiation (TTI) is a matter of life and death. Yet, at community cancer centers worldwide, patients wait weeks just for their cases to be reviewed at a Multidisciplinary Tumor Board (MDT). Why? Because a highly trained oncology fellow or nurse navigator must spend 45 to 90 minutes per patient digging through the EHR, manually synthesizing dense, unstructured pathology and radiology PDFs into a cohesive presentation. It is unbillable, soul-crushing data entry that artificially caps a hospital's throughput.
When observing the current landscape of Healthcare AI, I noticed a fatal flaw: developers are trying to use LLMs to diagnose and calculate medical staging. In oncology, guessing an AJCC Cancer Stage via probabilistic text generation is a catastrophic liability.
I was inspired to build AMDT to bridge this gap. I wanted to democratize precision medicine by creating a system that uses Generative AI purely as a high-speed reader, while delegating all medical calculations to strict, deterministic code—ultimately slashing MDT prep time from 90 minutes to 20 seconds.
How I Built It (The Architecture)
AMDT was built at the intersection of Prompt Opinion's A2A protocol, SHARP FHIR Context, and a custom Python FastMCP backend.
1. Multi-Agent Composability
Instead of a monolithic chatbot, I deployed a specialized team of agents:
- The Pathology Sub-Agent: Constrained via strict JSON Schema prompting to read Base64-encoded FHIR
DiagnosticReportsand extract histology and biomarkers (e.g., EGFR, PD-L1). - The Radiology Sub-Agent: Extracts primary tumor size ($T$), nodal involvement ($N$), and metastasis ($M$).
- The MDT Coordinator: The orchestrator that delegates tasks sequentially and synthesizes the final report.
2. Hybrid Neuro-Symbolic Logic (The AI Factor)
To ensure FDA CDS Exemption Compliance, the AI is explicitly forbidden from calculating the cancer stage. Instead, the Coordinator agent passes the extracted variables into a deterministic FastMCP Python tool: $$ \text{Clinical Stage} = f_{\text{AJCC}}(T, N, M) $$ By mapping continuous unstructured data to discrete logic gates, we eliminate hallucination risk. The system then queries a local Retrieval-Augmented Generation (RAG) engine containing NCI PDQ guidelines to retrieve the exact standard-of-care pathway.
3. Bidirectional Interoperability (Closing the Loop)
A read-only AI is just a toy. Once the Tumor Board Brief is generated, the Coordinator uses a specialized save_tumor_board_note MCP tool. It base64-encodes the Markdown and executes a POST request to the FHIR database, saving it as a DocumentReference with an explicit attestation block for human sign-off.
Challenges I Faced
1. The A2A Concurrency Choke Initially, I designed the Coordinator to query the Pathology and Radiology agents in parallel. However, simultaneous LLM handoffs triggered massive rate-limiting spikes (HTTP 429s). I had to meticulously engineer the Coordinator’s System Prompt to enforce strict, sequential A2A routing—forcing the orchestrator to await an explicit JSON payload from Agent $A$ before calling Agent $B$.
2. The Pydantic/Rust Serialization Wall
To achieve a Zero-Trust, Least-Privilege security model, the MCP server needed to dynamically inject Prompt Opinion's proprietary ai.promptopinion/fhir-context extensions during the initialization handshake to request specific SMART on FHIR scopes (e.g., Patient.rs, DocumentReference.write).
Because the modern MCP SDK uses Pydantic V2 (which serializes directly via a Rust core), standard Python monkey-patching failed. I had to build a custom ASGI Network Byte Interceptor in Starlette to intercept the raw outbound TCP stream, decode the JSON, inject the proprietary capabilities mid-flight, and pass the strict CSRF/Host validations to successfully establish the tunnel.
What I Learned
- Cryptographic Provenance is King: Doctors don't trust black boxes. I learned how to build strict traceability by forcing the LLM to embed the exact
source_report_id(the FHIR Document ID) inline for every clinical finding. - FHIR Transaction Rules: I gained a deep understanding of FHIR R4 Transaction Bundles, specifically how to use temporary
urn:uuid:schemas to linkPatient,Condition, andDiagnosticReportresources perfectly in a single POST payload.
What's Next for AMDT
The modular A2A architecture means this system has infinite composability. The immediate next step is ecosystem integration: updating the MDT Coordinator to automatically hand off the finalized cancer stage and biomarkers to 3rd-party registry agents on the Prompt Opinion Marketplace (such as clinical trial matchers) without rewriting the core engine.
By reclaiming $\approx 40$ hours of unbillable specialist time per week, AMDT doesn't just save hospital overhead—it fundamentally accelerates Time-to-Treatment Initiation, improving survival outcomes for patients worldwide.
Log in or sign up for Devpost to join the conversation.