FHIR-native agent that detects critical findings in radiology reports, dispatches ACR-compliant notifications, tracks acknowledgment, and escalates when providers don't respond.
Built for the Prompt Opinion "Agents Assemble" hackathon.
Communication failures for critical radiology findings are the 4th most common allegation in radiology malpractice claims, with settlements ranging from $1.75M to $120M. The Khosravi et al. 2026 roadmap for agentic AI in radiology explicitly identifies a "Communications Agent" as needed but unbuilt. CritCom closes that gap.
- Classifies radiology reports against ACR categories (Cat 1 immediate, Cat 2 urgent, Cat 3 routine, or None)
- Resolves the ordering provider via FHIR
ServiceRequest→Practitioner/PractitionerRole(respecting on-call) - Dispatches a FHIR
Communicationresource with the finding summary - Tracks acknowledgment via a linked
Taskresource - Escalates to a backup when the ack timeout lapses
- Exposes a queryable audit trail
A Google ADK agent (A2A protocol v1, compatible with the po-adk-python starter) backed by an MCP server exposing 6 tools over a local HAPI FHIR R4 server seeded with Synthea synthetic data. The LLM is Claude Sonnet 4.5 via LiteLLM.
See docs/DESIGN.md for the full architecture, state
machine, and tool contracts.
Full setup lives in docs/SETUP.md. For local development:
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # add your ANTHROPIC_API_KEY
docker compose up -d fhir # HAPI FHIR on :8080
pytest -m "not integration and not llm"Included: Reading a radiology report, deciding how urgent the finding is, finding the right doctor to notify, sending the notification through standard healthcare data formats (FHIR), waiting for them to confirm they got it, and escalating to a backup if they don't reply in time. Works against a local test server with fake patient data.
MIT. Synthetic data only — never real PHI.