Plan de desarrollo — Sistema médico
ASP.NET Core + MySQL + Google Calendar + Chatwoot · 6 fases
Fase 1
Infraestructura base y autenticación
Scaffolding del proyecto, modelos de datos, roles e Identity
≈ 2 semanas
Crear solución ASP.NET Core 6+ con MVC
Configurar Program.cs, inyección de dependencias, Pomelo MySQL y Migrations base
Implementar ApplicationUser con ASP.NET Identity
Campos: Nombre, Apellido, Documento, Dirección, Teléfono, RolPrincipal
Definir roles y políticas de autorización
Administrador, Médico, Secretaria, Recepcionista — RoleSeeder.cs
Construir AccountController (login / logout / registro)
Views con Bootstrap, validación del lado cliente y servidor
Layout compartido y navbar condicional por rol
_Layout.cshtml con menú adaptado según claims del usuario autenticado
Migraciones iniciales y seeder de roles
Verificar creación de tablas Identity en MySQL y usuario administrador inicial
Fase 2
Gestión de usuarios y pacientes
CRUD completo de personal médico y pacientes
≈ 2–3 semanas
Módulo de usuarios (UsuariosController)
Listar, crear, editar, deshabilitar. Asignación de roles. Perfil de médico (Especialidad, Matrícula, Horario)
Modelo y migración de Paciente
Todos los campos del diseño: DNI único, ObraSocial, FechaRegistro, FK a UsuarioAlta
CRUD de pacientes (PacientesController)
Alta, baja lógica, modificación, búsqueda por nombre / documento. ViewModels y validaciones
Vista de perfil de paciente
Resumen de datos, historial de citas y acceso rápido a historia clínica
Autorización por rol en vistas y acciones
[Authorize(Roles = "...")] en controladores; ocultar botones según claims
Fase 3
Gestión de citas y Google Calendar
Agenda médica con sincronización bidireccional
≈ 3 semanas
Modelo y migración de Cita
FK a Paciente y Médico, estados (Programada / Confirmada / Cancelada / Atendida), GoogleCalendarEventId
CRUD de citas (CitasController)
Crear, editar, cancelar. Vista de agenda diaria/semanal (FullCalendar.js o similar)
Configurar OAuth2 con Google
Credenciales en Google Cloud Console, flujo de autorización, almacenamiento de tokens
Implementar GoogleCalendarService
Crear, actualizar y eliminar eventos en Google Calendar. Mapeo de campos Cita ↔ CalendarEvent
Sincronización bidireccional
Webhook o polling para traer cambios externos. Reconciliación de estado por GoogleCalendarEventId
Notificaciones y recordatorios de cita
Envío de invitación por email al paciente al confirmar la cita
Fase 4
Historia clínica
Registro de consultas, diagnósticos, tratamientos y recetas
≈ 2–3 semanas
Modelo y migración de HistoriaClinica
FK a Paciente y Médico, Diagnóstico (texto o CIE-10), TratamientoIndicado, ProximoControl
CRUD de historia clínica (HistoriaClinicaController)
Crear registro por consulta, edición restringida al médico autor, vista timeline por paciente
Vista de historial completo del paciente
Timeline cronológico de consultas, diagnósticos y evolución. Filtros por fecha y médico
Gestión de estados de paciente
Activo / En tratamiento / Derivado — visible en perfil y dashboard
Exportación básica a PDF
Resumen de historia clínica imprimible para el paciente o para derivación
Fase 5
Dashboard e integración Chatwoot
Vista ejecutiva y mensajería embebida
≈ 1–2 semanas
Dashboard por rol (DashboardController)
Citas del día para médicos; resumen de pacientes y agenda para secretaría; métricas globales para admin
Widgets: próximas citas, pacientes registrados hoy, citas pendientes de confirmación
Implementar ChatwootService
Integración con API REST de Chatwoot: contador de mensajes no leídos, redirect a conversación
Ícono de mensajes en navbar con badge de no leídos
Polling periódico o SignalR para actualizar el contador sin recargar la página
Fase 6
Calidad, seguridad y despliegue
Testing, hardening y puesta en producción
≈ 2 semanas
Tests unitarios e integración
xUnit para servicios y controladores críticos (GoogleCalendarService, autenticación, citas)
Auditoría de seguridad
Validar anti-CSRF, XSS, inyección SQL, rate limiting en login, HTTPS forzado
Logging y manejo de errores
Serilog o NLog con niveles diferenciados; página de error amigable; alertas por excepción
Optimización de consultas EF Core
Revisión de N+1 queries, índices en MySQL (DocumentoIdentidad, MedicoId, FechaHoraInicio)
Configuración de entorno productivo
Secrets/appsettings por entorno, cadena de conexión segura, deploy en servidor Linux o Azure
Documentación técnica y manual de usuario
README actualizado, guía de roles y permisos, instrucciones de onboarding para el equipo médico