Inspiration
Radiologists rarely work in one place. Images live in a PACS, viewing happens in a separate DICOM viewer, reports are written in yet another tool, and now AI models are being added on top as one more tab. Every switch costs time and focus, and that is when mistakes happen.
We asked a simple question: what if one workstation could follow a study all the way from the scanner to the signed report, with AI that helps the physician instead of replacing them? That became Kitten, a medical imaging AI workstation built around the radiologist's real workflow:
Imaging → PACS → Worklist → DICOM Viewer → AI-assisted draft → Physician approval
What it does
- PACS connection: studies arrive from a PACS that is configured once by an administrator (AE Title, IP/host, DICOM port, storage and query/retrieve).
- Worklist: studies appear in a Cases worklist with three tabs: Fresh from PACS, Pending Approval and Final Approved.
- DICOM viewer: slice scrolling, window/level, zoom, pan, measurements and study metadata.
- AI-assisted reporting: an integrated MedGemma model drafts structured findings (Overall Impression, Key Observations, Limitations) for the radiologist to review.
- Physician approval: the radiologist edits, approves and exports the final report as a PDF. The AI never signs anything.
How we built it
Frontend. [React + Vite] with Tailwind CSS and our own design system: League Spartan for display type, Plus Jakarta Sans for the UI, a burgundy palette, Lottie micro-animations and a WebGL dither shader on the landing and login pages.
Imaging. We used [DICOM library, e.g. Cornerstone.js / dcmjs] to parse and render studies. CT pixels are stored as raw values, so each one is first converted to Hounsfield units using the DICOM rescale tags:
$$ HU = \text{RescaleSlope} \cdot SV + \text{RescaleIntercept} $$
Window/level then maps the Hounsfield range onto the display range. With window center $W_c$ and width $W_w$:
$$ I_{\text{display}} = 255 \cdot \operatorname{clamp}!\left(\frac{HU - \left(W_c - \tfrac{W_w}{2}\right)}{W_w},\ 0,\ 1\right) $$
This one formula is why switching from a soft-tissue window ($W_c = 40,\ W_w = 350$) to a lung window ($W_c = -600,\ W_w = 1500$) shows completely different anatomy from the same slice.
Measurements must be in millimetres, not pixels, so we use the PixelSpacing tag $(s_x, s_y)$:
$$ d = \sqrt{(\Delta x \cdot s_x)^2 + (\Delta y \cdot s_y)^2} $$
PACS. For development we built a Mock PACS Node (AE Title KITTEN_AE, host 127.0.0.1, port 104). It lets us simulate a modality pushing studies with C-STORE and lets the worklist query them, without needing hospital infrastructure.
AI. MedGemma generates a structured draft from the study, and the report screen keeps it clearly labelled as a draft until a physician approves it. The architecture also lets users bring their own LLM for the copilot.
Backend. [Your backend stack and how studies and reports are stored.]
Challenges we ran into
- DICOM networking. AE Titles, ports and storage/query settings have to match exactly on both sides. We had to separate the one-time admin setup from the radiologist's daily workflow so physicians never have to touch it.
- Messy metadata. Real studies often have missing or empty tags, such as age or body part, so the UI had to handle
N/AandUnknowngracefully instead of breaking. - Keeping the AI honest. The model sometimes described a study as the wrong modality, for example calling a CT a chest X-ray. We added a consistency warning, "Report title and findings may not refer to the same study. Please verify," and a mandatory Limitations section.
- AI as assistance, not authority. Designing the approval flow (Fresh → Pending → Final Approved) so responsibility stays with the physician took as much thought as the model integration itself.
- Making it feel like real radiology software. Building a viewer that radiologists would actually trust took far more polish than a typical dashboard.
What we learned
- How DICOM is really structured, as a hierarchy of $\text{Study} \supset \text{Series} \supset \text{Images}$, and why the PACS sits at the center of every imaging department.
- That small formulas, such as rescaling, windowing and pixel spacing, decide whether an image is diagnostically useful or misleading.
- That clinical AI needs guardrails, transparency and human sign-off before anyone will trust it.
- That in healthcare tools, UX is a safety feature, not decoration.
What's next for Kitten Workstation
- Specialised vision models, such as knee osteoarthritis grading and fracture localisation, validated on de-identified datasets before any clinical claims.
- Integration with production PACS through DICOMweb and C-ECHO connection testing.
- Multi-series layouts, hanging protocols and 3D/MPR reconstruction.
- Audit trails, role-based access and formal evaluation with practising radiologists.
Built With
- dicom
- fastapi
- javascript
- json
- medgemma
- pubmed
- python
- rxnorm
- typescript

Log in or sign up for Devpost to join the conversation.