152 lines
4.4 KiB
Markdown
152 lines
4.4 KiB
Markdown
# 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
|
|
|
|
1. **Gestión de Usuarios y Roles:** Administración del personal administrativo y médico.
|
|
2. **Gestión de Pacientes:** Alta, baja, modificación e historial general.
|
|
3. **Gestión de Citas y Agenda:** Sincronización e integración con Google Calendar.
|
|
4. **Historia Clínica:** Registro de diagnósticos, tratamientos, evolución y recetas.
|
|
5. **Dashboard / Resumen:** Vista ejecutiva rápida para secretarias y cuerpo médico.
|
|
6. **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.
|
|
|
|
* `Nombre`
|
|
* `Apellido`
|
|
* `Documento`
|
|
* `Dirección`
|
|
* `Teléfono`
|
|
* `Email`
|
|
* `RolPrincipal`
|
|
|
|
> **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)
|
|
* `Nombres`
|
|
* `Apellidos`
|
|
* `FechaNacimiento`
|
|
* `Genero`
|
|
* `DocumentoIdentidad` (único)
|
|
* `Direccion` (opcional)
|
|
* `Telefono`
|
|
* `Email` (opcional)
|
|
* `ObraSocial` / `PlanDeSalud` (opcional)
|
|
* `FechaRegistro`
|
|
* `UsuarioAltaId` (relación con `ApplicationUser`)
|
|
|
|
---
|
|
|
|
### 3. Médico
|
|
|
|
Perfil extendido para usuarios con rol médico. Se recomienda extender `ApplicationUser` o mantener una relación 1 a 1.
|
|
|
|
* `Especialidad`
|
|
* `MatriculaProfesional`
|
|
* `HorarioAtencion`
|
|
|
|
---
|
|
|
|
### 4. Cita
|
|
|
|
Entidad de control para agendas y sincronización externa.
|
|
|
|
* `Id`
|
|
* `PacienteId` (FK -> Paciente)
|
|
* `MedicoId` (FK -> ApplicationUser / Médico)
|
|
* `FechaHoraInicio`
|
|
* `FechaHoraFin` (o duración)
|
|
* `Motivo` (texto breve)
|
|
* `Estado` (`Programada`, `Confirmada`, `Cancelada`, `Atendida`)
|
|
* `GoogleCalendarEventId` (para sincronización bidireccional)
|
|
* `FechaCreacion`
|
|
* `UsuarioCreacionId` (FK -> ApplicationUser)
|
|
|
|
---
|
|
|
|
### 5. Historia Clínica
|
|
|
|
Registro médico agrupado por consulta realizada.
|
|
|
|
* `Id`
|
|
* `PacienteId` (FK -> Paciente)
|
|
* `MedicoId` (FK -> ApplicationUser / Médico)
|
|
* `FechaConsulta`
|
|
* `MotivoConsulta`
|
|
* `Diagnostico` (texto o código CIE-10)
|
|
* `TratamientoIndicado`
|
|
* `Observaciones` / `Notas`
|
|
* `ProximoControl` (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
|
|
|
|
```text
|
|
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/
|
|
```
|