RADIA — Radiología + IA
Plataforma de imagen médica con asistencia de inteligencia artificial.
URL: radia.cadences.app
Qué es RADIA
RADIA es un visor DICOM completo con IA integrada que permite a profesionales médicos subir estudios de imagen, visualizarlos en 2D/3D/MPR, y obtener análisis automatizado con modelos de visión multimodal.
Capacidades principales
- Visor DICOM — Navegación por cortes, zoom, pan, window/level, anotaciones DICOM
- Reconstrucción 3D — Volume rendering WebGL2 con ray marching (CBCT dental, TAC)
- MPR — Vista multiplanar axial/coronal/sagital sincronizada
- Scan 360° — Análisis automatizado de todo el estudio por lotes
- Diálogo de Pre-análisis — Modos: complementar, revisar, borrar y re-analizar. Incluye toggle Asteroide y campo de razón.
- Modo Asteroide — Multi-modelo paralelo (Gemini + Groq Specialist) con consenso cruzado
- Deep Analysis — Profundización por hallazgo con ±10 cortes de contexto
- Deep Filter — Filtro rápido para mostrar solo hallazgos con deep analysis
- Point-Ask — Click en cualquier punto → análisis localizado
- Modo Navegar — Click en el visor navega al hallazgo más cercano por distancia euclídea
- Gestión de hallazgos — Eliminar hallazgos individuales o grupos, ocultar/mostrar del informe
- Hallazgos agrupados — Deduplicación automática de hallazgos en cortes adyacentes con misma categoría/ubicación
- Chat IA — Conversación multimodal en tiempo real sobre el estudio
- Colaboración — Compartir estudios con otros doctores vía enlaces seguros
- Informes PDF — Generación de reportes radiológicos con hallazgos y medidas
Modalidades soportadas
16 tipos de estudio en 6 sectores: Dental (CBCT, Panorámica, Periapical), Radiología (Rx Tórax, Rx Ósea, TAC, Mamografía), RM (Cerebral, MSK), Ecografía, Foto Clínica (Dermatología, Podología, Oftalmología, Heridas, General), Veterinaria.
Ver docs/modalities.md para detalle completo.
Stack técnico
| Capa | Tecnología |
|---|---|
| Frontend | Astro 4.16 + React 18 + TypeScript + Tailwind CSS 3.4 |
| Backend | Cloudflare Workers (Functions) |
| Base de datos | Cloudflare D1 (SQLite) |
| Almacenamiento | Cloudflare R2 (S3-compatible) |
| IA primaria | Google Gemini 2.5 Flash (visión multimodal) |
| IA segunda opinión | Groq Llama 4 Scout (rol especialista) |
| IA fallback | Groq Llama 4 Scout 17B |
| Auth | Google OAuth 2.0 + JWT HS256 |
| DICOM parsing | dicom-parser + OpenJPEG WASM (JPEG 2000) |
| Hosting | Cloudflare Pages |
Roadmap — MedGemma 4B-IT: Modelo médico especializado de Google pendiente de integración como tercer proveedor IA. Dos vías previstas: (1) Vertex AI con GPUs bajo suscripción (~$500/mes por L4), o (2) ML Trainer local (app Electron de Cadences) ejecutando el modelo en hardware propio del usuario. La infraestructura JWT/SA ya está preparada (
vertex-auth.jsarchivado). Ver docs/asteroid-mode.md.
Estructura del proyecto
storefronts/radia/
├── src/
│ ├── components/ # 7 componentes React
│ │ ├── StudyExplorer.tsx # Orquestador principal (visor + chat + IA)
│ │ ├── DicomViewer.tsx # Visor DICOM 2D (PACS-style)
│ │ ├── Volume3DViewer.tsx # Renderer 3D WebGL2
│ │ ├── MPRViewer.tsx # Vista multiplanar 2×2
│ │ ├── ChatPanel.tsx # Chat IA conversacional
│ │ ├── DicomUploader.tsx # Subida de archivos DICOM
│ │ └── SharedViewer.tsx # Visor público (solo lectura)
│ ├── services/ # Servicios cliente
│ │ ├── dicomParser.ts # Parsing DICOM + JPEG 2000
│ │ ├── sliceCache.ts # Cache API para thumbnails PNG
│ │ ├── volumeCache.ts # IndexedDB para volúmenes 3D
│ │ └── pdfReport.ts # Generación de informes PDF
│ ├── config/
│ │ └── storefront.config.ts
│ ├── types/
│ │ └── index.ts # Interfaces TypeScript
│ ├── pages/ # Rutas Astro
│ │ ├── index.astro # Landing page
│ │ ├── study.astro # Visor de estudio
│ │ ├── dashboard.astro # Mis estudios
│ │ ├── shared.astro # Visor compartido
│ │ ├── collab.astro # Visor colaborador
│ │ └── upgrade.astro # Planes y suscripción
│ └── layouts/
│ └── Layout.astro
├── functions/ # API Cloudflare Workers
│ ├── api/
│ │ ├── auth/google.js # OAuth2
│ │ ├── studies/ # CRUD estudios
│ │ ├── analysis/ # 5 endpoints IA
│ │ ├── chat.js # Chat multimodal
│ │ ├── share.js # Compartir estudios
│ │ ├── dicom/ # Proxy DICOM autenticado
│ │ ├── public/ # Acceso público (share token)
│ │ └── collab/ # Acceso colaborador
│ └── lib/ # Utilidades compartidas
│ ├── auth.js # requireAuth + nanoid
│ ├── jwt.js # JWT HS256
│ ├── response.js # Helpers HTTP
│ └── prompts.js # Prompts IA + STUDY_TYPES
├── migrations/
│ └── 001_radia_schema.sql # Schema D1
├── docs/ # Documentación
│ ├── modalities.md
│ ├── architecture.md
│ ├── api-reference.md
│ ├── asteroid-mode.md
│ └── deployment.md
├── astro.config.mjs
├── wrangler.toml
├── tailwind.config.mjs
├── tsconfig.json
└── package.json
Inicio rápido
# Instalar dependencias
npm install
# Desarrollo local
npm run dev
# Preview con Workers locales (requiere wrangler)
npm run preview
# Build + deploy
npm run deploy
Variables de entorno requeridas
Configurar en el dashboard de Cloudflare Pages:
| Variable | Descripción |
|---|---|
GEMINI_API_KEY |
API key de Google Gemini |
GOOGLE_CLIENT_ID |
Client ID de Google OAuth |
JWT_SECRET |
Secreto para firmar tokens JWT |
GROQ_API_KEY |
API key de Groq (fallback + Asteroid specialist) |
Los bindings DB (D1) y DICOM_STORAGE (R2) se configuran automáticamente vía wrangler.toml.
Documentación
- Arquitectura — Componentes, flujos de datos, decisiones técnicas
- Referencia API — Todos los endpoints con ejemplos
- Modo Asteroide — Multi-modelo paralelo con consenso
- Modalidades — 16 tipos de estudio soportados
- Despliegue — Build, deploy, configuración Cloudflare
Planes
| Plan | Estudios | Upload máx | Características |
|---|---|---|---|
| Free | 5 | 500 MB | Visor + Scan 360° + Chat |
| Pro | 50 | 2 GB | + Deep Analysis + Asteroide + Sugerencias |
| Clinic | Ilimitado | 10 GB | + Colaboración + Informes + API |
Licencia
Proyecto propietario — Cadences