actualizar($id, $datos, $admin); jsonOk(['id' => $id], 'Paciente actualizado correctamente'); } else { // Creación — nombre obligatorio if (empty($datos['nombre_completo'])) { jsonError('El campo nombre_completo es obligatorio'); } $id = $pac->crear($datos, $admin); jsonOk(['id' => $id], 'Paciente creado correctamente'); } } catch (Exception $e) { $msg = $e->getMessage(); // Traducir errores de clave duplicada que hayan escapado la validación previa if (stripos($msg, 'Duplicate entry') !== false || stripos($msg, '1062') !== false) { if (stripos($msg, 'numero_documento') !== false || stripos($msg, 'documento') !== false) { jsonError('Ya existe un paciente con ese número de documento'); } if (stripos($msg, 'email') !== false) { jsonError('Ya existe un paciente con ese correo electrónico'); } jsonError('Ya existe un registro con esos datos (valor duplicado)'); } jsonError($msg, 400); }