erp-clinicas/docs/08-epicas/EPIC-CL-010-telemedicina.md

279 lines
10 KiB
Markdown

# EPICA: EPIC-CL-010 - Telemedicina
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-010 |
| **Nombre** | Telemedicina |
| **Modulo** | telemedicina |
| **Fase** | Fase 2 - Extensión |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 11-14 |
---
## Descripcion
Módulo 100% nuevo para consultas médicas remotas. Videoconsultas con WebRTC, sala de espera virtual, compartir pantalla para resultados, prescripción electrónica a distancia y grabación de consultas con consentimiento.
---
## Objetivo de Negocio
- Ampliar alcance geográfico
- Atención sin desplazamiento
- Seguimiento de crónicos remoto
- Nuevas fuentes de ingreso
- Adaptación post-pandemia
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL010-001 | Como paciente, quiero agendar teleconsulta desde el portal | P0 | 5 | Backlog |
| US-CL010-002 | Como paciente, quiero entrar a sala de espera virtual antes de la consulta | P0 | 5 | Backlog |
| US-CL010-003 | Como médico, quiero iniciar videollamada cuando el paciente esté listo | P0 | 8 | Backlog |
| US-CL010-004 | Como médico, quiero compartir pantalla para mostrar resultados al paciente | P0 | 5 | Backlog |
| US-CL010-005 | Como médico, quiero documentar nota clínica durante la videoconsulta | P0 | 3 | Backlog |
| US-CL010-006 | Como médico, quiero generar receta electrónica al finalizar | P0 | 3 | Backlog |
| US-CL010-007 | Como paciente, quiero recibir recordatorio 10 min antes de la consulta | P0 | 3 | Backlog |
| US-CL010-008 | Como paciente, quiero grabar la consulta con consentimiento del médico | P2 | 8 | Backlog |
| US-CL010-009 | Como paciente, quiero enviar fotos de síntomas antes de la consulta | P1 | 5 | Backlog |
| US-CL010-010 | Como médico, quiero terminar la videollamada y cerrar consulta | P0 | 2 | Backlog |
| US-CL010-011 | Como admin, quiero ver reportes de teleconsultas realizadas | P1 | 3 | Backlog |
| US-CL010-012 | Como paciente, quiero evaluar la calidad de la teleconsulta | P2 | 5 | Backlog |
**Total Story Points:** 55 SP
---
## Flujo de Teleconsulta
```
┌─────────────┐
│ AGENDAR │ ← Paciente selecciona teleconsulta
└──────┬──────┘
▼ (-10 min)
┌─────────────┐
│ RECORDATORIO│ ← Email/WhatsApp con link
└──────┬──────┘
┌─────────────┐
│SALA_ESPERA │ ← Paciente espera en sala virtual
└──────┬──────┘
▼ (Médico inicia)
┌─────────────┐
│ VIDEOLLAMADA│ ← WebRTC activo
└──────┬──────┘
├── Chat de texto
├── Compartir pantalla
├── Enviar archivos
┌─────────────┐
│ CERRAR │ ← Médico termina llamada
└──────┬──────┘
┌─────────────┐
│ RECETA │ ← Envío electrónico
│ + NOTA │ ← Documentación
└──────┬──────┘
┌─────────────┐
│ ENCUESTA │ ← Satisfacción del paciente
└─────────────┘
```
---
## Arquitectura WebRTC
```
┌─────────────────────────────────────────────────────────┐
│ ARQUITECTURA TELEMEDICINA │
├─────────────────────────────────────────────────────────┤
│ │
│ PACIENTE MÉDICO │
│ ┌──────────┐ ┌──────────┐ │
│ │ Browser │ │ Browser │ │
│ │ (WebRTC) │ │ (WebRTC) │ │
│ └────┬─────┘ └────┬─────┘ │
│ │ │ │
│ │ ┌──────────────────┐ │ │
│ └────┤ TURN/STUN ├──────┘ │
│ │ Server │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────┴─────────┐ │
│ │ Signaling │ │
│ │ Server │ │
│ │ (WebSockets) │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────┴─────────┐ │
│ │ Backend API │ │
│ │ (Express) │ │
│ └──────────────────┘ │
│ │
│ CARACTERÍSTICAS: │
│ ├── Video HD (720p/1080p) │
│ ├── Audio bidireccional │
│ ├── Compartir pantalla │
│ ├── Chat de texto │
│ ├── Transferencia de archivos │
│ └── Grabación (opcional) │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Agendar teleconsulta
- [ ] Sala de espera virtual
- [ ] Videollamada WebRTC
- [ ] Compartir pantalla
- [ ] Chat durante consulta
- [ ] Enviar archivos
- [ ] Documentación de consulta
- [ ] Prescripción electrónica
- [ ] Grabación con consentimiento
- [ ] Encuesta de satisfacción
**No Funcionales:**
- [ ] Latencia < 200ms
- [ ] Video HD estable
- [ ] Funciona en móvil y desktop
- [ ] Conexión cifrada (SRTP)
**Tecnicos:**
- [ ] WebRTC con TURN/STUN
- [ ] WebSockets para signaling
- [ ] Integración con consultas
- [ ] Almacenamiento de grabaciones
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-003 Citas | Backlog | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
| EPIC-CL-005 Recetas | Backlog | Si |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `telemedicine`
- [ ] Tablas: 6 (teleconsultations, waiting_rooms, recordings, chat_messages, file_shares, satisfaction_surveys)
- [ ] Funciones: 2 (generate_room_token, log_session)
- [ ] Indices: Por médico, paciente, fecha, estado
**Backend:**
- [ ] Modulo: `telemedicine`
- [ ] Entities: 5 (Teleconsultation, WaitingRoom, Recording, ChatMessage, Survey)
- [ ] WebSocket Server para signaling
- [ ] Endpoints: 15
- [ ] Tests: 25
**Frontend:**
- [ ] Paginas: 4 (WaitingRoom, VideoCall, PreCallCheck, PostCallSurvey)
- [ ] Componentes: 15 (VideoPlayer, ScreenShare, ChatBox, FileShare, Controls, etc.)
- [ ] WebRTC implementation
- [ ] Stores: 1 (telemedicineStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/telemedicine/sessions | Crear sesión |
| GET | /api/telemedicine/sessions/:id | Estado de sesión |
| POST | /api/telemedicine/sessions/:id/join | Unirse a sala |
| POST | /api/telemedicine/sessions/:id/signal | Señalización WebRTC |
| POST | /api/telemedicine/sessions/:id/end | Terminar llamada |
| POST | /api/telemedicine/sessions/:id/chat | Enviar mensaje |
| POST | /api/telemedicine/sessions/:id/files | Subir archivo |
| POST | /api/telemedicine/sessions/:id/record | Iniciar grabación |
| POST | /api/telemedicine/sessions/:id/survey | Enviar encuesta |
---
## Integraciones Externas
| Servicio | Propósito | Alternativas |
|----------|-----------|--------------|
| Twilio | TURN/STUN + Video | Daily.co, Vonage |
| AWS S3 | Almacenamiento de grabaciones | GCP, Azure |
| WebRTC nativo | Comunicación P2P | - |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Conexión inestable | Media | Alto | Reconexión automática |
| Problemas de audio/video | Media | Alto | Pre-call check |
| Privacidad de grabaciones | Baja | Alto | Encriptación + RBAC |
---
## Nota Técnica
Este módulo es **100% nuevo** y no tiene equivalente en el ERP-Core. Requiere infraestructura especializada para streaming de video y cumplimiento de regulaciones de datos médicos.
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Proveedor de video seleccionado
- [ ] Infraestructura TURN/STUN lista
## Definition of Done (DoD)
- [ ] Videollamada funcionando
- [ ] Sala de espera operativa
- [ ] Integración con consultas
- [ ] Grabación opcional
- [ ] Tests E2E pasando
- [ ] Documentación de API
---
## Historial
| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |
---
**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08