Files
vita_asistente/Readme.md
T
2026-08-10 16:10:47 -03:00

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/
```