diff --git a/Readme.md b/Readme.md
index 5f3a7b6..8cd6b30 100644
--- a/Readme.md
+++ b/Readme.md
@@ -9,6 +9,7 @@
* **Google Calendar API:** Gestión e integración de citas de la agenda médica.
* **Chatwoot:** Mensajería (redirección y notificaciones básicas).
* **Seguridad:** Autenticación por Identity con roles (`Administrador`, `Médico`, `Secretaria`, `Recepcionista`, etc.) y autorización mediante políticas personalizadas.
+* **Plan de desarrollo:** Consultar siempre las fases y tareas del archivo `plan_desarrollo_sistema_medico.md`.
---
@@ -147,3 +148,4 @@ TuProyecto/
│ └── Shared/
├── Helpers/
└── Migrations/
+```
diff --git a/obj/Debug/net8.0/vita-asistente.AssemblyInfo.cs b/obj/Debug/net8.0/vita-asistente.AssemblyInfo.cs
index c359389..19eb48f 100644
--- a/obj/Debug/net8.0/vita-asistente.AssemblyInfo.cs
+++ b/obj/Debug/net8.0/vita-asistente.AssemblyInfo.cs
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("vita-asistente")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3cfb4bb6f24411cd3e1e84555d8dcd442cc0b560")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3b7e629f7516b043e50080d4fda3dec4625b1db8")]
[assembly: System.Reflection.AssemblyProductAttribute("vita-asistente")]
[assembly: System.Reflection.AssemblyTitleAttribute("vita-asistente")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/obj/Debug/net8.0/vita-asistente.AssemblyInfoInputs.cache b/obj/Debug/net8.0/vita-asistente.AssemblyInfoInputs.cache
index 934179a..c577f76 100644
--- a/obj/Debug/net8.0/vita-asistente.AssemblyInfoInputs.cache
+++ b/obj/Debug/net8.0/vita-asistente.AssemblyInfoInputs.cache
@@ -1 +1 @@
-e8a48322cb1bbc106a04e3d14a80ea655d7523d601ce39e651b37642e6f08b88
+68ac8d6c1716eb6f2e80ee2727addb3d6bf2d33e35f9f985b924becf3c1df660
diff --git a/plan_desarrollo_medico.html b/plan_desarrollo_medico.html
deleted file mode 100644
index 7f03ced..0000000
--- a/plan_desarrollo_medico.html
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
Plan de desarrollo — Sistema médico
-
ASP.NET Core + MySQL + Google Calendar + Chatwoot · 6 fases
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
diff --git a/plan_desarrollo_sistema_medico.md b/plan_desarrollo_sistema_medico.md
new file mode 100644
index 0000000..54de884
--- /dev/null
+++ b/plan_desarrollo_sistema_medico.md
@@ -0,0 +1,194 @@
+# Plan de Desarrollo — Sistema de Gestión Médica
+
+> **Stack:** ASP.NET Core 6+ MVC · MySQL (Pomelo EF Core) · Google Calendar API · Chatwoot
+> **Duración estimada total:** 12–15 semanas
+
+---
+
+## Resumen de fases
+
+| Fase | Nombre | Duración estimada |
+|------|--------|-------------------|
+| 1 | Infraestructura base y autenticación | ≈ 2 semanas |
+| 2 | Gestión de usuarios y pacientes | ≈ 2–3 semanas |
+| 3 | Gestión de citas y Google Calendar | ≈ 3 semanas |
+| 4 | Historia clínica | ≈ 2–3 semanas |
+| 5 | Dashboard e integración Chatwoot | ≈ 1–2 semanas |
+| 6 | Calidad, seguridad y despliegue | ≈ 2 semanas |
+
+---
+
+## Fase 1 — Infraestructura base y autenticación
+
+**Objetivo:** Scaffolding del proyecto, modelos de datos, roles e Identity.
+
+- [ ] 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
+ - Roles: `Administrador`, `Médico`, `Secretaria`, `Recepcionista`
+ - Implementar `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
+
+**Objetivo:** CRUD completo de personal médico y pacientes.
+
+- [ ] Módulo de usuarios (`UsuariosController`)
+ - Listar, crear, editar, deshabilitar
+ - Asignación de roles
+ - Perfil de médico: `Especialidad`, `MatriculaProfesional`, `HorarioAtencion`
+
+- [ ] Modelo y migración de `Paciente`
+ - Campos: `Nombres`, `Apellidos`, `FechaNacimiento`, `Genero`, `DocumentoIdentidad` (único), `Direccion`, `Telefono`, `Email`, `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 del usuario
+
+> **Decisión pendiente:** Definir si `Médico` extiende `ApplicationUser` (relación 1:1) o es una entidad separada. Resolverlo antes de las migraciones de Fase 3, ya que afecta todas las FK de `Cita` e `HistoriaClinica`.
+
+---
+
+## Fase 3 — Gestión de citas y Google Calendar
+
+**Objetivo:** Agenda médica con sincronización bidireccional.
+
+> ⚠️ **Fase de mayor riesgo.** La integración OAuth2 y la sincronización bidireccional son los puntos más propensos a imprevistos. Reservar tiempo adicional.
+
+- [ ] Modelo y migración de `Cita`
+ - FK a `Paciente` y `Médico`
+ - Estados: `Programada`, `Confirmada`, `Cancelada`, `Atendida`
+ - Campo `GoogleCalendarEventId` para sincronización
+
+- [ ] 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 y almacenamiento seguro de tokens de refresco
+
+- [ ] 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
+
+**Objetivo:** Registro de consultas, diagnósticos, tratamientos y recetas.
+
+- [ ] Modelo y migración de `HistoriaClinica`
+ - FK a `Paciente` y `Médico`
+ - Campos: `MotivoConsulta`, `Diagnostico` (texto o código CIE-10), `TratamientoIndicado`, `Observaciones`, `ProximoControl`, `EstadoPaciente`
+
+- [ ] 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
+
+**Objetivo:** Vista ejecutiva por rol y mensajería embebida.
+
+- [ ] Dashboard por rol (`DashboardController`)
+ - **Médico:** citas del día, próximos controles
+ - **Secretaría:** agenda general, pacientes registrados hoy, citas pendientes de confirmación
+ - **Administrador:** métricas globales del sistema
+
+- [ ] Widgets del dashboard
+ - 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 y 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
+
+**Objetivo:** Testing, hardening y puesta en producción.
+
+- [ ] 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 crítica
+
+- [ ] Optimización de consultas EF Core
+ - Revisión de N+1 queries
+ - Índices en MySQL: `DocumentoIdentidad`, `MedicoId`, `FechaHoraInicio`
+
+- [ ] Configuración de entorno productivo
+ - `appsettings` por entorno (Development / Production)
+ - Cadena de conexión segura, secrets management
+ - Deploy en servidor Linux o Azure App Service
+
+- [ ] Documentación técnica y manual de usuario
+ - README actualizado con instrucciones de setup
+ - Guía de roles y permisos
+ - Manual de onboarding para el equipo médico y administrativo
+
+---
+
+## Dependencias entre fases
+
+```
+Fase 1 → Fase 2 → Fase 3 → Fase 4
+ ↘
+ Fase 5 (Dashboard consume datos de Fases 2–4)
+ ↘
+ Fase 6 (transversal a todo el proyecto)
+```
+
+> La **Fase 1** es prerequisito duro para todo lo demás.
+> La **Fase 6** puede iniciarse parcialmente en paralelo desde la Fase 3 en adelante (testing y logging).