Commit Graph
100 Commits
Author SHA1 Message Date
Lizandro GuarnizoandClaude Sonnet 4.6 f57fa39c33 fix: reemplazar verde WhatsApp por --brand en hover/focus/botones del ERP
- table-hover, form-control:focus, btn-primary, menu-item hover
- Usar var(--brand, fallback) para que funcione sin Layout.php
- Contextos chat/WhatsApp mantienen su verde propio

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 20:20:59 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 a5d42a54be fix: lab_pacientes.php — corregir comentarios Blade y mejorar diseño modal
- Eliminar comentarios {{-- --}} de Blade que se renderizaban como texto visible
- Inyectar --brand/--brand-dark desde doc_color de BD (igual que Layout.php)
- Modal header con gradiente brand igual que login/sidebar
- Secciones de formulario con separadores visuales (Datos, Contacto, Ubicación)
- Panel detalle con header brand en lugar de card-header blanco
- Actualizar version CSS a v=13

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 20:18:07 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 bec4629a3c feat: rediseño sidebar con paleta del login + responsive unificado
- Layout.php inyecta --brand y --brand-dark desde doc_color de BD
- Sidebar usa el mismo gradiente azul del login (brand-dark → brand)
- Círculos decorativos animados igual que el login
- Items activos: fondo blanco con texto brand (inverso al fondo)
- Hover: overlay blanco sutil + translateX(3px)
- Ancho unificado en --sidebar-width (270px)
- Breakpoint responsive consistente en 991.98px

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 20:15:54 -05:00
Lizandro Guarnizo 5f4cf63924 Revert "fix: revertir anunciarTurno al codigo exacto de jun9 que funcionaba"
This reverts commit 266cd8301b.
2026-06-23 19:58:33 -05:00
Lizandro Guarnizo 266cd8301b fix: revertir anunciarTurno al codigo exacto de jun9 que funcionaba 2026-06-23 19:57:49 -05:00
Lizandro Guarnizo ee50a47933 fix: seleccionar voz española explícita en TTS del display_global 2026-06-23 19:55:40 -05:00
Lizandro Guarnizo 56f30f1c6d fix: firma profesional guarda solo en el campo firmado, no en todos 2026-06-23 19:54:22 -05:00
Lizandro Guarnizo 3810c898fd fix: restaurar playBeep original en display_global (revertir playBell) 2026-06-23 19:50:30 -05:00
Lizandro Guarnizo e75ae6e3c5 fix: firma profesional solo aparece en el campo donde se firmo, no en todos 2026-06-23 19:49:57 -05:00
Lizandro Guarnizo 573b7e4a8f fix: sidebar marca activo solo el item actual, no todos los de erp.php 2026-06-23 19:45:24 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 1342d305ec fix: corregir migraciones fallidas, redis doble carga y cache de assets
- Eliminar .env del tracking de git (credenciales no deben ir en repo)
- Agregar .env y .env.* al .dockerignore (no hornear credenciales en imagen)
- Quitar extension=redis.so duplicada en php.ini
- Activar cache 7d para assets estáticos en nginx
- Corregir 5 migraciones: eliminar INSERT INTO migrations con columna incorrecta
  y remover semicolons en comentarios -- que partian el parser SQL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 19:24:41 -05:00
Lizandro GuarnizoandClaude Opus 4.8 a39e94c71b Docker: quitar servicio redis local (Redis es recurso externo de Coolify)
El servidor Redis vive fuera (recurso gestionado por Coolify); el app se
conecta vía REDIS_HOST. El servicio redis local era un contenedor muerto.
La extensión PHP phpredis se sigue compilando en la imagen (es el cliente).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:30:41 -05:00
Lizandro GuarnizoandClaude Opus 4.8 0a2c40c34e OPcache: revalidar timestamps cada 2s para que los deploys se reflejen
validate_timestamps=0 hacía que PHP-FPM sirviera código viejo para siempre;
el opcache_reset del entrypoint corre en CLI (OPcache separado) y no limpiaba
el de FPM. Ahora valida mtimes cada 2s — costo despreciable para un ERP.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:12:47 -05:00
Lizandro GuarnizoandClaude Opus 4.8 7af526e773 Redis: REDIS_DB configurable para aislar sesiones entre despliegues
Dos despliegues que comparten el mismo Redis pisaban las sesiones.
session.save_path ahora incluye &database=${REDIS_DB} (default 0).
Despliegue secundario usa REDIS_DB=1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 09:56:16 -05:00
Lizandro GuarnizoandClaude Opus 4.8 dfe3a01fee Recepción: vincular paciente atómicamente al crear token de firma
create_consent_token.php ahora acepta paciente_id y lo vincula al turno
si aún no lo tiene, eliminando la carrera con vincular_paciente.php
(fire-and-forget). Ya no hace falta refrescar para firmar el consentimiento.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 09:54:41 -05:00
Lizandro GuarnizoandClaude Opus 4.8 506f3469b4 Kiosko: auto-turno solo por escáner (ráfaga <35ms o Enter), nunca a mano
Escribir manualmente ya no dispara el turno: la persona oprime el botón.
El lector de cédula sí lo dispara porque mete los dígitos en ráfaga
(<35ms entre cada uno) o termina con Enter. Guard contra doble envío.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 09:51:58 -05:00
Lizandro GuarnizoandClaude Opus 4.8 71d29f35fa Debug temporal: inspeccionar firma guardada en datos_cliente
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 09:41:48 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 a908d623e1 Kiosko: fix listener acumulado, añadir reset por inactividad 90s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 09:01:06 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 da076f86eb Fix: firma profesional no se mostraba al recargar el formulario
La firma se guardaba en datos_cliente[campo_svg] pero el display
solo leía firma_profesional_svg (columna inexistente en lab_form_envios).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 08:44:44 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 3490bc1932 Docker: agregar servicio Redis para sesiones PHP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 08:12:40 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 1c75da1ccd Sidebar: resaltar ruta activa con color primario
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 23:02:35 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 6510054416 Historial: añadir notas/observaciones al detalle del registro
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:53:39 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 f363631b32 Turnero: mejoras UI, historial detallado, kiosko scanner, firma por turno
- Kiosko: detector scanner (gap < 80ms), iconos 90px, fa-person-pregnant, ticket Arial
- Recepción: vincular_paciente.php para persistir paciente_id antes de firmar consentimiento
- Historial y dashboard: recepción desk, empleado recepción/muestras, exámenes y comentarios
- display_global: turno más pequeño, lugar-nombre más grande
- lab_pacientes: modal compacta con form-sm
- Configuración: icono embarazada fa-person-pregnant en prioridades
- ver_formulario_enviado: firma por campo (fix doble firma)
- docker-compose.local.yml: override BD producción para dev local

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:07:09 -05:00
Lizandro Guarnizo ebbf4ac6cf Update Enfermera.php 2026-06-18 14:27:58 -05:00
Lizandro Guarnizo 3a604bdf1d Update ver_formulario_enviado.php 2026-06-18 12:12:20 -05:00
Lizandro Guarnizo 8d577947a6 up 2026-06-18 09:35:17 -05:00
Lizandro Guarnizo c58998599b up 2026-06-16 19:54:04 -05:00
Lizandro Guarnizo 8128616b63 up 2026-06-16 19:09:59 -05:00
Lizandro Guarnizo 7f2f998aa7 Update lugar.php 2026-06-16 17:58:05 -05:00
Lizandro Guarnizo 663884685d up 2026-06-16 17:52:27 -05:00
Lizandro Guarnizo 1c67dbdadc up 2026-06-16 17:41:27 -05:00
Lizandro Guarnizo f1673a2d39 Update lugar.php 2026-06-16 17:06:47 -05:00
Lizandro Guarnizo ff8454fa5a up 2026-06-16 16:55:22 -05:00
Lizandro Guarnizo a4a062095e up 2026-06-16 16:35:12 -05:00
Lizandro Guarnizo 62c4e7a18c up 2026-06-16 16:05:04 -05:00
Lizandro Guarnizo 9e79b8ff56 Update display_global.php 2026-06-16 15:59:38 -05:00
Lizandro Guarnizo f13a06b63a Update display_global.php 2026-06-16 15:53:49 -05:00
Lizandro Guarnizo acbc1d0714 up 2026-06-16 15:37:34 -05:00
Lizandro Guarnizo 7f84c7f3ae Update display_global.php 2026-06-16 15:16:23 -05:00
Lizandro Guarnizo 6be28ae5af up 2026-06-16 15:03:40 -05:00
Lizandro Guarnizo eaa8a23af6 UP 2026-06-16 14:51:46 -05:00
Lizandro Guarnizo 56489a1557 Update lugar.php 2026-06-16 14:12:22 -05:00
Lizandro Guarnizo f51cc2029c Update lugar.php 2026-06-16 14:03:47 -05:00
Lizandro Guarnizo 8b64b77c0e Update lugar.php 2026-06-16 13:55:20 -05:00
Lizandro Guarnizo fc14360e2e up 2026-06-16 13:35:03 -05:00
Lizandro Guarnizo 1b9c8efaad Update lugar.php 2026-06-16 13:28:14 -05:00
Lizandro Guarnizo b11a7f5f98 up 2026-06-16 13:20:13 -05:00
Lizandro Guarnizo 5af94e50e5 up 2026-06-16 13:04:59 -05:00
Lizandro Guarnizo e7a068243c up 2026-06-16 12:55:39 -05:00
Lizandro Guarnizo b66f52864d Update recepcion.php 2026-06-16 12:47:39 -05:00
Lizandro Guarnizo 047583604d Update recepcion.php 2026-06-16 12:14:26 -05:00
Lizandro Guarnizo 415ea3ef56 up 2026-06-16 12:06:26 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 275170f9d5 fix: show all signature fields in print, canvas only once
- All firma/firma_profesional positions render with shared signature image
- Canvas widget for nurse appears only once (no duplicate inputs)
- Signed image replicates to every position of the same type

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:44:02 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 d7b1aea5a4 fix: signature fields deduplicate and share across same-type fields
- PHP pre-computes one shared SVG per type (firma/firma_profesional)
- Schema loop skips duplicate firma fields of same type already rendered
- Patient signature from turnero widget propagates to all 'firma' schema fields
- firmar_profesional.php saves nurse signature to ALL firma_profesional fields

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:41:20 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 8a5b4eef1e fix: ensure turnoActivo.estado is en_recepcion after guardarSolicitud
Guarantees that the turno state is correct in memory before pasarALugar()
attempts the transition to en_espera_lugar, preventing 'espera' → 'en_espera_lugar'
errors.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:30:44 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 9872f50104 fix: onLugarChange no longer hides desk consents
The sel-lugar dropdown is only for selecting the patient's next destination.
Desk consents are loaded by cargarConsentimientosDesk() on turno open
and must not be affected by destination lugar changes.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:24:02 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 d8a6581fe5 fix: load desk consents automatically when a turno is opened
- cargarConsentimientosDesk() called from abrirFicha using DESK_ID
- First checks existing DB records (get_consentimientos), falls back to desk config
- abrirFormularioLugar shows proper errors if no patient or no turno
- Starts polling on open to detect patient signature in real time
- Fix creado_at column error in create_consent_token INSERT

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:20:22 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 5b02be6686 fix: correct API response path for lugar formularios in recepcion
- API returns json.formularios, not json.data.formularios
- Now consents will properly display when selecting a lugar
- Fixes issue where configured consents were not appearing in recepcion

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:15:15 -05:00
Lizandro GuarnizoandClaude Haiku 4.5 8a5e57cebe fix: retrieve full consent data with token from create_solicitud
- Include id, token, estado, and turno_id in consent response
- Allows renderConsentimientos to display all consent information correctly
- Ensures consents created for lugar are properly shown with all fields

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-16 11:11:22 -05:00
Lizandro Guarnizo ea40cf8dae up 2026-06-16 11:07:24 -05:00
Lizandro Guarnizo 6a8a8e0826 up 2026-06-16 11:00:15 -05:00
Lizandro Guarnizo 67d45b8910 up 2026-06-16 09:32:41 -05:00
Lizandro Guarnizo 7ce29f3f14 Update recepcion.php 2026-06-16 09:11:58 -05:00
Lizandro Guarnizo 632c98cae8 Update recepcion.php 2026-06-16 08:58:14 -05:00
Lizandro Guarnizo cef40a7a43 up 2026-06-16 08:53:28 -05:00
Lizandro Guarnizo 42ccb1d436 up 2026-06-16 08:02:30 -05:00
Lizandro Guarnizo 35b13468b6 up 2026-06-16 07:02:04 -05:00
Lizandro Guarnizo 64f21b083a up 2026-06-13 13:24:49 -05:00
Lizandro Guarnizo f34d19b3df up 2026-06-13 13:19:02 -05:00
Lizandro Guarnizo 0e51165108 Update create_turno.php 2026-06-13 13:11:42 -05:00
Lizandro Guarnizo 3b70cf2ae8 Update conversations.php 2026-06-13 08:22:25 -05:00
Lizandro Guarnizo 8df97829e2 Update display_global.php 2026-06-11 23:42:18 -05:00
Lizandro Guarnizo 7be3d1601b Update display_global.php 2026-06-11 23:39:17 -05:00
Lizandro Guarnizo 41b1078723 Update display_global.php 2026-06-11 23:35:17 -05:00
Lizandro Guarnizo 3cc0ce83c3 Update display_global.php 2026-06-11 23:29:58 -05:00
Lizandro Guarnizo d93cf0ab0d Update display_global.php 2026-06-11 23:25:59 -05:00
Lizandro Guarnizo 255944e677 Update display_global.php 2026-06-11 23:22:16 -05:00
Lizandro Guarnizo c286d7b374 Update display_global.php 2026-06-11 23:20:40 -05:00
Lizandro Guarnizo 8f16bdd1a8 Update display_global.php 2026-06-11 23:17:31 -05:00
Lizandro Guarnizo 98d81c3ebb Update display_global.php 2026-06-11 23:14:43 -05:00
Lizandro Guarnizo 375cba86eb up 2026-06-11 23:11:32 -05:00
Lizandro Guarnizo ca964c76a3 up 2026-06-11 22:52:45 -05:00
Lizandro Guarnizo 23a21d02fb Update display_global.php 2026-06-11 22:36:11 -05:00
Lizandro Guarnizo 06caa0270c Update display_global.php 2026-06-11 22:25:00 -05:00
Lizandro Guarnizo 438c313f86 Update display_global.php 2026-06-11 22:16:31 -05:00
Lizandro Guarnizo 77da735575 Update display_global.php 2026-06-11 22:12:35 -05:00
Lizandro Guarnizo b365dab16f Update display_global.php 2026-06-11 22:08:49 -05:00
Lizandro Guarnizo 358305a793 Update display_global.php 2026-06-11 21:57:30 -05:00
Lizandro Guarnizo dc2a7e16fb Update display_global.php 2026-06-11 21:53:46 -05:00
Lizandro Guarnizo 22b2c01af5 Update display_global.php 2026-06-11 21:49:26 -05:00
Lizandro Guarnizo e7820c7c2d Update 003_turnero.sql 2026-06-11 20:57:41 -05:00
Lizandro Guarnizo 7e75c1326a Update kiosko.php 2026-06-11 20:36:27 -05:00
Lizandro Guarnizo 34ab846acc Update kiosko.php 2026-06-11 20:32:56 -05:00
Lizandro Guarnizo 2149938178 Update kiosko.php 2026-06-11 20:28:40 -05:00
Lizandro Guarnizo 376a1a5ef3 Update get_display_global.php 2026-06-09 18:26:29 -05:00
Lizandro Guarnizo 53a49ef265 Update kiosko.php 2026-06-09 17:50:29 -05:00
Lizandro Guarnizo eff6b6745f Update kiosko.php 2026-06-09 17:41:54 -05:00
Lizandro Guarnizo ab8b5ae620 up 2026-06-09 16:44:39 -05:00
Lizandro Guarnizo 4e6913c41e up 2026-06-01 09:16:03 -05:00
Lizandro Guarnizo b317639258 up 2026-05-27 21:39:53 -05:00