Commit Graph
49 Commits
Author SHA1 Message Date
Lizandro GuarnizoandClaude Sonnet 4.6 a39be5b31e Fix: quitar <?php duplicado dentro de bloque PHP (error de sintaxis)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-10 10:40:26 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 578873a10f Tomas prolongadas: panel configurable + link acceso directo
- Panel de protocolo ahora tiene botón "Usar todas" para cerrar sin configurar
- Si todos los grupos ya tienen una sola toma, se guarda config silenciosamente y se recarga sin mostrar panel
- Lógica de guardado extraída a _mpGuardarConfig() compartida entre ambos botones
- Botón de acceso a lab_tomas_config.php en tarjeta del formulario es_toma_progresiva

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-10 10:36:10 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 2eefe3f5c8 feat: ciclos configurables + gestión de exámenes en Tomas Prolongadas
Feature 1 — Ciclos configurables por paciente:
- ver_formulario_enviado.php: pantalla de configuración aparece la primera
  vez que el profesional abre el formulario (antes de firmar); permite
  seleccionar qué tomas realizar para cada protocolo. $_mpSkippedSepIds
  oculta las secciones no seleccionadas en render. $_mpMap se reconstruye
  desde los grupos filtrados para que next_firma_id salte tomas omitidas.
- configurar_tomas.php (nuevo): guarda _tomas_config en datos_respuestas
  del consentimiento; valida que cada grupo tenga al menos una toma.
- guardar_toma.php: aplica el filtro _tomas_config al array firmasCampos
  para que el conteo de tomas firmadas/pendientes sea correcto.

Feature 2 — Gestión de tipos de examen (admin):
- lab_tomas_config.php (nuevo): página admin que muestra los exámenes
  actuales con sus tomas y permite añadir nuevos tipos con su esquema
  completo (separador + hora + resultado + firma_profesional por toma).
- api/lab/save_tomas_config.php (nuevo): modifica el esquema JSON del
  formulario id=15; add_exam agrega opción al selector y los campos de
  cada toma; delete_exam elimina la opción y los separadores exclusivos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-10 10:19:11 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 3e110324a8 feat: auto-fill hora de toma con hora actual en F-LAB-28
Al activarse cada sección de toma (carga inicial, toma inmediata,
fin de countdown), se rellena automáticamente el campo hora con la
hora actual del dispositivo. Solo actúa si el campo está vacío, por
lo que no sobreescribe valores ya ingresados manualmente.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-10 09:44:11 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 fdc04d615c Mejoras F-LAB-28 tomas prolongadas: bugfixes + UX + datos
- guardar_toma.php: reconoce firma campo_id_svg (compat. registros históricos)
- get_consentimientos.php: mismo fix para conteo tomas_firmadas
- ver_formulario_enviado.php: $_mpMap incluye hora fija (Cortisol 3pm/4pm),
  agrupa por condición de separador para no mezclar Glicemia/Cortisol,
  muestra resumen de tomas al completar antes de cerrar el modal
- lugar.php: banner rojo + beep cuando el countdown de una toma llega a cero,
  resetea alerta al cerrar el modal; función _playBeepLugar() compartida

DB Form 15: +10 campos (firma_profesional Minuto 60 Glicemia + campo
Resultado numérico en cada toma Glicemia y Cortisol)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 20:26:12 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 848dd8e4d0 Toma progresiva: auto-scroll, cierre automático, countdown en cola y fix filtro por examen
- guardar_toma.php: filtrar firmas por condición del examen seleccionado; corrige
  countdown espurio y detección de 'completado' cuando hay múltiples tipos de examen.
  También descarta siguiente_toma_at si ya es pasado (minuto 0).
- ver_formulario_enviado.php: auto-scroll a primera firma pendiente al cargar el modal;
  si el examen se selecciona y la firma no está en DOM, guarda y recarga el iframe.
  Al completar tomas, cierra el modal directamente sin botón "Finalizar".
- get_cola.php: incluye siguiente_toma_at y en_toma_progresiva por turno desde
  turnero_consentimientos para mostrar cuenta regresiva en tarjetas.
- lugar.php: muestra chip de cuenta regresiva en tarjetas de cola para pacientes
  en toma progresiva; color cambia a warn (<2 min) y crit (¡Ahora!).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 20:05:56 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 c2605fb274 turnero: badge tomas por examen seleccionado + fix firma paciente
- get_consentimientos: tomas_total ahora filtra por examen elegido en
  datos_respuestas (no cuenta todos los 13 campos globales); badge
  se oculta (total=0) hasta que se seleccione un examen.
- ver_formulario_enviado: agrega f.es_toma_progresiva al SELECT y lo
  usa para forzar _soloFirmaPro=true, evitando que aparezca el canvas
  de firma del paciente cuando la DB indica toma progresiva.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 19:41:42 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 1296918c20 fix: tomas prolongadas — firma no guardaba y countdown no aparecía
ver_formulario_enviado.php:
- $_mpPrimeraPendiente, $_mpBloqueado y $fSvg buscaban la clave campoId_svg
  pero guardar_toma.php guarda con clave campoId (sin sufijo). Se añade
  fallback a ambas claves para compatibilidad hacia adelante y atrás.

lugar.php:
- new Date('2026-07-09 15:30:00') no parsea en Safari; se reemplaza el
  espacio por 'T' para formato ISO antes de construir el timestamp.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 16:12:10 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 590795c199 fix: permitir firma en consentimientos con firma paciente + profesional (H.pylori)
Formularios con ambos tipos de firma (paciente + profesional) en modo embebido
quedaban bloqueados porque $_mostrarCanvasPro exigía $_soloFirmaPro.

Flujo corregido:
- Canvas profesional ahora se muestra en cualquier form con firma_profesional
  cuando el operador está logueado en modo turnero embebido.
- El botón "Confirmar" del paciente detecta si hay canvas del profesional:
  si hay, guarda como borrador (sin marcar firmado) y hace scroll al canvas pro.
- El profesional firma último con solo_profesional=true, marcando firmado y
  cerrando el modal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 16:08:47 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 4135e74d84 fix: contador y countdown de tomas prolongadas en lugar.php
- _guardarFirmaMP ahora llama guardar_toma.php en vez del draft POST,
  guardando la firma con clave campoId (sin _svg) que es la que lee
  get_consentimientos para el contador X/13.
  guardar_toma.php también actualiza estado→en_progreso y siguiente_toma_at,
  lo que activa el countdown en lugar.php via polling SSE.
- Al completar la última toma envía postMessage turneroFirmado para cerrar
  el modal automáticamente.
- Botón cerrar del modal siempre habilitado (el operador puede cerrar
  en cualquier momento durante el proceso).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 15:58:57 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 ac492b4e2c fix: apply conditional field visibility in editable form (ver_formulario_enviado)
Add data-campo-id attributes to all editable field wrappers and separators,
then run iniciarCondiciones-equivalent JS on page load so conditional sections
(e.g. Tipo de dolor when Dolores is checked) appear/disappear without needing
to close and reopen the modal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 14:55:17 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 b29061c010 feat: auto-populate patient data in DATOS TOMA DE MUESTRAS form and add conditional dolor field
- Add fecha_nacimiento to __paciente in modoTurnero so linked fields render it
- Format fecha_nacimiento as dd/mm/YYYY in static completed view
- Evaluate separator conditions in static view to skip hidden sections
- DB: add linked fields (numero_documento, tipo_documento, fecha_nacimiento, eps, telefono) to form id=16
- DB: add conditional "Tipo de dolor" field that appears only when Dolores is checked

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 14:46:43 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 f4da864db7 feat(turnero): toma prolongada secuencial + bloqueo muestras/cierre
- ver_formulario_enviado: auto-fill médico (nombres/especialidad/código) en datos_prefilled desde solicitud
- ver_formulario_enviado: canvases de toma progresiva bloqueados secuencialmente — solo el turno activo es firmable, los siguientes aparecen al expirar el countdown
- ver_formulario_enviado: countdown prominente con reloj grande, color dinámico, sonido (Web Audio) y vibración al llegar la hora
- lugar: bloquear cierre del modal durante toma progresiva activa (botón X deshabilitado hasta mp_completar)
- lugar: bloquear Finalizar atención si hay muestras pendientes sin decisión (recibida/rechazada)
- lugar: _syncBtnFinalizar combina consentimientos + muestras para el aviso y estado del botón
- lugar: restricción de usuario a lugar específico via turnero_lugar_id (admin_users) + bloqueo JS en confirmarLugar()
- migrations: turnero_lugar_id en admin_users para restringir bacteriólogos por usuario

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 21:16:07 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 985bb7eace fix(formulario): checkboxes en fila horizontal con flex-wrap
Los checkboxes del campo tipo checkbox quedaban apilados verticalmente.
Se envuelven en d-flex flex-wrap gap-2 para quedar lado a lado.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 08:47:14 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 18d50a3a16 fix: evitar datos del paciente duplicados en formularios con campos linked
Cuando el esquema tiene campos tipo linked que ya muestran nombre, documento,
etc., el bloque top Datos del paciente queda oculto para no repetir la info.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 22:51:09 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 8760b685ad feat(turnero): dispositivos por IP, firmas, formularios y muestras prolongadas
- login.php: detectar dispositivo por IP al autenticar y redirigir al lugar asignado
- dashboard.php / lugar.php / recepcion.php: bloquear acceso por dispositivo (IP→lugar)
- lugar.php: modal firma profesional pre-guardada; compact 2-col en iframe; botón WA
  solo cuando el formulario requiere firma del paciente
- ver_formulario_enviado.php: modo compact tablet, auto-save borrador (merge), firma
  profesional en 1 clic, Muestras Prolongadas (countdown + Finalizar), auto_profesional
  pre-fill desde sesión, fecha→fecha_hoy en campos de toma/recepción
- get_consentimientos.php: añadir requiere_firma_paciente para controlar botón WA
- save_firma_profesional.php: API para guardar firma pre-configurada del profesional
- migrations: turnero_dispositivos, admin_users.firma_svg, clon VIH F-LAB-05 para turnero

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 21:58:52 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 27c1ac7c5d chore: quitar display_errors de depuración
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 09:02:18 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 30a146ad5c debug: habilitar display_errors temporalmente para diagnosticar 500
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 08:52:17 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 5fedd233f4 feat(lis): migración completa Firebird→MySQL + tracking de muestras en turnero
- Migraciones LIS 01-08: schema completo del nuevo LIS (secciones, protocolos,
  ítems de resultado, perfiles, tarifas, empresas, histórico transaccional)
- ETL Firebird→MySQL: script CLI con conversión WIN1252→UTF-8, batches de 500,
  resolución de FKs y deduplicación de pacientes
- turnero_muestras: tracking pendiente/recibida/rechazada por tipo de tubo
- lugar.php: widget de recepción de muestras (solo tipo=muestras)
- update_muestra_estado.php: API para marcar estado de muestra
- create_solicitud.php: auto-crea muestras al guardar solicitud
- get_consentimientos.php: incluye muestras[] en el response
- 6 vistas SQL: v_muestras_hoy, v_recepcion_completa, v_examen_precio, etc.
- numero_orden en encabezado del formulario firmado (D-/F- color diferenciado)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 21:44:22 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 794db4f0d5 fix: botones Descargar PDF y Cerrar tras firmar consentimiento
Después de firmar (y en carga cuando ya está firmado) no había ninguna
acción disponible — solo texto "Puede cerrar esta ventana" sin botón.

Ahora aparecen dos botones:
- Descargar PDF → window.print() (permite guardar como PDF)
- Cerrar → window.close() (solo cuando no está en iframe)

En modo embebido (iframe desde lugar.php) solo aparece Descargar PDF;
el cierre lo maneja el postMessage ya existente al padre.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 18:01:33 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 67efd470de feat(firma): integración Topaz SigWeb en ver_formulario_enviado.php
- CSS/HTML: mismo overlay #topaz-overlay con modal de estado
- JS: módulo topaz con target={canvas, onAccept} para canvas
  del profesional (.fpw-canvas) y del paciente turnero (.turnero-cv)
- Botón "Tableta" en canvas del paciente (.turnero-topaz) y del
  profesional (.fpw-topaz); el usuario sigue confirmando manualmente

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 17:11:29 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 3dbf40e4fa feat(formulario): firma profesional directa en modal embebido (formularios solo-pro)
- ver_formulario_enviado.php: pre-scan $_soloFirmaPro; muestra canvas pro cuando modoTurnero+embebido+sesión activa+sin firma paciente
- fpw-save JS: recopila campos del form y envía solo_profesional=true; al guardar muestra éxito y postMessage turneroFirmado
- firmar_profesional_consentimiento.php: si solo_profesional=true guarda datos_respuestas y marca estado=firmado

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 12:49:39 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 b399c3710e fix(formulario): no mostrar firma paciente si schema tiene firma_profesional
Usar _esquemaTieneFirmaAlguna (cualquier tipo firma) en lugar de
_esquemaTieneFirmaPaciente para suprimir el widget fallback.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 12:32:01 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 27135e4d2f fix(formulario): múltiples correcciones modo embebido/turnero
- ver_formulario_enviado.php: usar opciones??options??items como fallback de claves del schema
- ver_formulario_enviado.php: marcar _esquemaTieneFirmaPaciente en cualquier campo firma (no solo sin SVG), evita mostrar firma paciente cuando schema solo tiene firma_profesional
- ver_formulario_enviado.php: modo embebido (?embed=1) con layout compacto para iframe
- lugar.php: pasar &embed=1 al iframe src

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 12:15:34 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 05c7230eda fix(formularios): pre-fill fecha_hoy and edad in ver_formulario_enviado
- Modo editar: fecha_hoy → type=date prefilled with today; edad → type=number prefilled from paciente.fecha_nacimiento
- Modo vista: if no saved value, fecha_hoy shows today's date; edad calculates from DOB instead of skipping

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 11:47:33 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 0c68dff307 fix: mostrar canvas para todos los campos firma en modo turnero
Antes solo el primer campo (consentimiento) tenía canvas; el segundo
(desistimiento) se omitía. Ahora cada campo firma tiene su propio widget
usando clases CSS en vez de IDs hardcodeados.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 11:22:18 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 59addca960 fix: error de conexión falso al firmar consentimiento turnero
Al mover el canvas al esquema se eliminó la variable widget del JS,
pero el success handler seguía haciendo widget.outerHTML → ReferenceError
→ caía al catch y mostraba error de conexión aunque la firma se guardó.

Fix: envolver el canvas en div#turneroFirmaWidget y restaurar widget
en el JS para que el reemplazo al éxito funcione correctamente.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 01:32:12 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 9b4cdcc817 fix: firma del paciente aparecía duplicada en consentimiento y desistimiento
La firma global (firma_svg) se aplicaba a todos los campos tipo=firma.
Ahora la firma global solo se asigna al primer campo firma del esquema.
Los campos firma adicionales (ej. desistimiento) solo muestran su propia
firma por campo; si no tienen, se omiten sin mostrar el canvas extra.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 01:21:26 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 c91900ef14 fix: canvas de firma no respondía al mover el canvas al esquema
El JS buscaba #turneroFirmaWidget para arrancar; como ese div ya no
se renderiza cuando el esquema tiene campo firma propio, el script
salía sin enlazar eventos al canvas. Ahora busca el canvas directamente.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 01:18:38 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 aac468b056 fix: bloquear canvas firma profesional en vista turnero del paciente
La firma del profesional se maneja desde el modal de recepción.
El canvas no debe aparecer cuando el paciente abre el consentimiento.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 01:16:20 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 092dfd3074 fix: firma del paciente aparece en su posición del esquema en turnero
El campo tipo=firma se saltaba cuando no había firma existente, dejando
el canvas al fondo de la página fuera de lugar. Ahora en modoTurnero
pendiente el canvas aparece donde el esquema lo define. El widget del
fondo es solo fallback cuando el esquema no tiene campo firma propio.
Los campos siguen siendo editables como corresponde.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 01:14:23 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 75ead05b14 fix: formulario de consentimiento turnero mostraba campos editables
En modo turnero el documento debe ser de solo lectura; solo la firma
del paciente es interactiva. Los campos editables (inputs, selects,
checkboxes) solo aplican para envíos normales sin modo turnero.

También inicializa $_renderedFirmaPaciente que se usaba sin definir,
evitando que la firma aparezca duplicada al pie del documento.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 01:11:27 -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 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 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 3a604bdf1d Update ver_formulario_enviado.php 2026-06-18 12:12:20 -05:00
Lizandro Guarnizo a4a062095e up 2026-06-16 16:35:12 -05:00
Lizandro Guarnizo 5af94e50e5 up 2026-06-16 13:04:59 -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 Guarnizo 67d45b8910 up 2026-06-16 09:32:41 -05:00
Lizandro Guarnizo 318a1742cc up 2026-04-18 23:41:01 -05:00
Lizandro Guarnizo 8b72c3032e fix: canvas firma profesional solo visible con sesión activa (cliente público ve 'pendiente') 2026-03-25 16:36:02 -05:00
Lizandro Guarnizo 3b92f47b54 feat: enlaces de formulario sin vencimiento + PDF descargable sin sesión vía token público 2026-03-25 16:14:26 -05:00
Lizandro Guarnizo 8e62c29ca9 firma_profesional: canvas en ver_formulario_enviado + endpoint firmar_profesional 2026-03-17 15:55:56 -05:00
Lizandro Guarnizo c0ed80d7d1 ver_formulario: firmas inline en su posición original del esquema (no al final) 2026-03-17 15:35:26 -05:00
Lizandro Guarnizo 775c654790 cambios 2026-03-17 12:58:42 -05:00
Lizandro Guarnizo db469b2134 up 2026-03-10 18:42:51 -05:00