08 Módulo Pacientes Ver Ficha Paciente, Actualizar Datos y Eliminar Sis Odontológico Clinica Dental
Duración: 11 minDescripción
🎓 Lección 08: Ver Ficha del Paciente, Actualización de Datos y Eliminación
Objetivo General: Implementar las operaciones de consulta detallada (show), actualización (edit/update) y eliminación (destroy) dentro del módulo de pacientes en Laravel para la gestión integral de un Sistema Odontológico o Clínica Dental, asegurando la integridad referencial de datos entre usuarios, roles y pacientes.
🚀 Pasos Clave de la Lección
- 📢 ⏱️ 00:00 — Introducción y Contexto del Módulo: Repaso de la acción create finalizada en la lección anterior y planteamiento de las nuevas operaciones CRUD (show, edit, destroy).
- 👁️ ⏱/ 01:10 — Visualización de la Ficha Médica (show): Búsqueda del registro en el controlador con la relación del usuario asociado y rendereo de la interfaz HTML de la ficha médica (calculando edad de forma automática, datos de contacto, alergias, historial y antecedentes).
- 📝 ⏱️ 03:28 — Formulario de Edición y Carga de Datos (edit): Recuperación del objeto paciente por su ID y mapeo de sus propiedades existentes dentro del formulario de edición.
- 🔄 ⏱️ 04:39 — Procesamiento de Actualización y Sincronización (update): Validación de inputs, actualización del modelo Paciente y verificación con wasChanged() para re-encriptar la contraseña en la tabla User si el DNI/Documento sufrió modificaciones.
- 🧪 ⏱️ 05:50 — Prueba de Campo de Edición y Re-encriptación Hash: Verificación práctica en la base de datos de los cambios reflejados y de la generación del nuevo hash de contraseña tras cambiar el documento.
- 🗑️ ⏱️ 07:28 — Eliminación en Cascada Controlada (destroy): Lógica para la eliminación segura de registros asociados en las tablas users, model_has_roles y pacientes mediante un modal de confirmación.
- 🎉 ⏱️ 08:56 — Verificación de Limpieza de Tablas: Demostración en la base de datos de la eliminación del usuario, su rol de asignación y la ficha del paciente.
🛠️ Comandos y Rutas Principales
| Tipo / Acción | Ruta HTTP / Comando | Método / Propósito |
|---|---|---|
| HTTP Routing | /pacientes/{id} | GET — Invoca PacienteController@show para ver la ficha completa |
| HTTP Routing | /pacientes/{id}/edit | GET — Invoca PacienteController@edit para cargar el formulario |
| HTTP Routing | /pacientes/{id} | PUT / PATCH — Invoca PacienteController@update para procesar cambios |
| HTTP Routing | /pacientes/{id} | DELETE — Invoca PacienteController@destroy para eliminar el registro |
| Artisan Command | php artisan route:list --name=pacientes | Lista y verifica el mapeo correcto de las rutas de recurso del módulo |
🔒 Buenas Prácticas y Seguridad
- 🔐 Incrustación y Cifrado Seguro de Contraseñas: Si el DNI o número de documento actúa como clave inicial por defecto, detecte el cambio mediante $paciente->wasChanged('dni') o métodos equivalentes de Eloquent antes de aplicar la función Hash::make() para evitar encriptar cadenas vacías o sin modificar.
- 🛡️ Integridad Referencial y Transacciones DB: Al eliminar un registro interdependiente (Usuario $\rightarrow$ Asignación de Rol $\rightarrow$ Paciente), envuelva la lógica dentro de una transacción DB::transaction() para prevenir que queden datos huérfanos si ocurre un fallo intermedio.
- 🩺 Modularización de Componentes de Alto Impacto: Separe adecuadamente las vistas complejas (como el Odontograma) de la ficha del paciente base para no saturar las consultas Eloquent y mantener un rendimiento óptimo en la renderización de las vistas.