07 Módulo Pacientes Formulario de Creacion Asignación Rol Paciente Sis Odontológico Clinica Dental
Duración: 28 minDescripción
🎓 Lección 07: Módulo Pacientes — Formulario de Creación y Asignación de Rol
Objetivo: Diseñar la arquitectura de base de datos para la entidad de pacientes, implementar la relación con usuarios mediante llaves foráneas, y desarrollar el flujo completo de creación con asignación automática de rol en Laravel.
🚀 Pasos Clave con Timestamps
- ⏱️ 01:37 Diseño y Relación de Entidades: Análisis del diagrama DML para conectar la tabla pacientes con users mediante la llave foránea usuario_id con borrado en cascada.
- ⏱️ 04:30 Creación de Modelo y Migración: Ejecución del comando Artisan para generar el modelo Paciente, migración y controlador con recursos en una sola instrucción.
- ⏱️ 07:44 Configuración de Relaciones ORM: Definición del atributo $fillable y relaciones en Eloquent (belongsTo en Paciente y hasOne en User).
- ⏱️ 09:50 Rutas de Recurso y Vistas Blade: Configuración de rutas HTTP independientes (index, create, store, show, edit, update, destroy) y estructuración del directorio de vistas.
- ⏱️ 14:48 Vista de Listado General: Implementación de la vista principal con paginación, filtro de búsqueda y botones de acción.
- ⏱️ 19:48 Formulario Dinámico de Registro: Construcción del formulario de alta con campos médicos, hábitos y antecedentes en formato array.
- ⏱️ 21:11 Procesamiento de Transacción y Rol: Implementación del método store para registrar de forma atómica el usuario, asignar el rol de paciente y guardar la ficha médica.
🛠️ Comandos y Rutas Principales
| Tipo | Comando / Ruta HTTP | Función |
|---|---|---|
| 💻 Terminal | php artisan make:model Paciente -mcr | Crea Modelo, Migración y Controller con recursos |
| 💻 Terminal | php artisan migrate | Ejecuta las migraciones pendientes en la BD |
| 🌐 Ruta HTTP | GET /admin/pacientes | Método index() — Muestra el listado paginado |
| 🌐 Ruta HTTP | GET /admin/pacientes/create | Método create() — Despliega el formulario de alta |
| 🌐 Ruta HTTP | POST /admin/pacientes | Método store() — Procesa y guarda el nuevo registro |
| 🌐 Ruta HTTP | GET /admin/pacientes/{id} | Método show() — Visualización detallada de la ficha |
🔒 Buenas Prácticas y Seguridad
- 🔐 Transacciones en Base de Datos (DB::transaction): Como el alta involucra crear registros en tres tablas distintas (users, model_has_roles y pacientes), rodea la lógica del controlador en una transacción de BD para revertir cambios (rollback) si algún paso falla.
- 🛡️ Validación Estricta de Entradas: Exige la regla unique:pacientes,numero_documento y valida el formato de arreglos para los hábitos/antecedentes antes de persistir la información.
- 🔑 Credenciales Automáticas Seguras: Muestra advertencias claras de cambio de clave tras el primer ingreso si utilizas el número de documento como contraseña provisional.