7c04a64269bae65d26c9dc3e2256b6eeb3ded295
Arquitectura y Diseño de Sistema de Gestión Médica
Visión General de la Arquitectura (Alto Nivel)
- Frontend: ASP.NET Core MVC (Razor Views) con Bootstrap (o framework CSS equivalente) para la interfaz de usuario.
- Backend: ASP.NET Core 6+ con inyección de dependencias, Identity para autenticación y Entity Framework Core (con Pomelo MySQL) para acceso a datos.
- Base de Datos: MySQL.
- Servicios Externos:
- 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.
Módulos Funcionales
- Gestión de Usuarios y Roles: Administración del personal administrativo y médico.
- Gestión de Pacientes: Alta, baja, modificación e historial general.
- Gestión de Citas y Agenda: Sincronización e integración con Google Calendar.
- Historia Clínica: Registro de diagnósticos, tratamientos, evolución y recetas.
- Dashboard / Resumen: Vista ejecutiva rápida para secretarias y cuerpo médico.
- Integración con Chatwoot: Acceso directo a mensajería y contador de mensajes no leídos.
Diseño de Datos (Entidades Principales)
1. Usuario (ApplicationUser)
Representa al personal del sistema. Extiende de la entidad Identity básica.
NombreApellidoDocumentoDirecciónTeléfonoEmailRolPrincipal
Nota: El rol determina los permisos y accesos dentro del sistema.
2. Paciente
Representa a la persona que recibe atención médica.
Id(int o Guid)NombresApellidosFechaNacimientoGeneroDocumentoIdentidad(único)Direccion(opcional)TelefonoEmail(opcional)ObraSocial/PlanDeSalud(opcional)FechaRegistroUsuarioAltaId(relación conApplicationUser)
3. Médico
Perfil extendido para usuarios con rol médico. Se recomienda extender ApplicationUser o mantener una relación 1 a 1.
EspecialidadMatriculaProfesionalHorarioAtencion
4. Cita
Entidad de control para agendas y sincronización externa.
IdPacienteId(FK -> Paciente)MedicoId(FK -> ApplicationUser / Médico)FechaHoraInicioFechaHoraFin(o duración)Motivo(texto breve)Estado(Programada,Confirmada,Cancelada,Atendida)GoogleCalendarEventId(para sincronización bidireccional)FechaCreacionUsuarioCreacionId(FK -> ApplicationUser)
5. Historia Clínica
Registro médico agrupado por consulta realizada.
IdPacienteId(FK -> Paciente)MedicoId(FK -> ApplicationUser / Médico)FechaConsultaMotivoConsultaDiagnostico(texto o código CIE-10)TratamientoIndicadoObservaciones/NotasProximoControl(fecha sugerida)EstadoPaciente(Activo,En Tratamiento,Derivado, etc.)
Relaciones Principales
- Usuario -> Paciente:
1 : N(un usuario registra múltiples pacientes). - Médico -> Cita:
1 : N(un médico atiende múltiples citas). - Paciente -> Cita:
1 : N(un paciente puede tener múltiples citas). - Paciente -> HistoriaClinica:
1 : N(un paciente posee múltiples registros clínicos). - Médico -> HistoriaClinica:
1 : N(un médico registra múltiples historias clínicas).
Estructura del Proyecto
TuProyecto/
├── Controllers/
│ ├── AccountController.cs
│ ├── UsuariosController.cs
│ ├── PacientesController.cs
│ ├── CitasController.cs
│ ├── HistoriaClinicaController.cs
│ └── DashboardController.cs
├── Models/
│ ├── ApplicationUser.cs
│ ├── Paciente.cs
│ ├── Cita.cs
│ ├── HistoriaClinica.cs
│ └── ViewModels/
├── Data/
│ ├── ApplicationDbContext.cs
│ └── Seeders/
│ └── RoleSeeder.cs
├── Services/
│ ├── GoogleCalendarService.cs
│ ├── ChatwootService.cs
│ └── IUsuarioService.cs
├── Views/
│ ├── Usuarios/
│ ├── Pacientes/
│ ├── Citas/
│ ├── HistoriaClinica/
│ └── Shared/
├── Helpers/
└── Migrations/
Languages
HTML
50%
C#
46.7%
CSS
3.2%
JavaScript
0.1%