Campos vinculados: entregar la dirección del paciente y completar desde datos vivos

El consentimiento F-LAB-01 tiene un campo vinculado a `direccion`, pero esa
clave no estaba entre las que el sistema entrega, así que quedaba vacía. Como
en modo vista los campos vacíos no se imprimen, el campo desaparecía del
documento en vez de salir en blanco, y por eso pasó inadvertido.

Se agrega `direccion` a las tres consultas de paciente y a las claves
vinculables. La tiene cargada el 61% de los pacientes.

Además, en los envíos de formulario los campos vinculados leían solo de
datos_prefilled, que es una copia tomada al momento de enviar: una clave
agregada después nunca aparecía en documentos ya emitidos. Ahora se completa
con los datos vivos del paciente, sin pisar lo que la copia ya traía.

Aparte, al esquema del formulario 17 le faltaba el campo del número de
documento —solo pedía el tipo—, lo que se corrigió en la definición del
formulario. Los 706 consentimientos ya firmados no se modifican.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-11 08:07:42 -05:00
co-authored by Claude Opus 5
parent 5d4315fae7
commit fd46a86007
+17 -4
View File
@@ -37,7 +37,7 @@ if ($modoTurnero) {
p.id AS paciente_id,
p.nombre_completo AS paciente_nombre,
p.numero_documento, p.tipo_documento,
p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps,
p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps, p.direccion,
t.sesion_id,
ts.numero_orden,
med.nombres AS medico_nombres, med.apellidos AS medico_apellidos,
@@ -155,6 +155,7 @@ if ($modoTurnero) {
'fecha_nacimiento' => $tcRow['fecha_nacimiento'] ?? '',
'telefono' => $tcRow['paciente_telefono'] ?? '',
'eps' => $tcRow['eps'] ?? '',
'direccion' => $tcRow['direccion'] ?? '',
'medico_nombre' => trim(($tcRow['medico_nombres'] ?? '') . ' ' . ($tcRow['medico_apellidos'] ?? '')),
'medico_especialidad'=> $tcRow['medico_especialidad'] ?? '',
'medico_codigo' => $tcRow['medico_codigo'] ?? '',
@@ -177,7 +178,7 @@ if ($modoTurnero) {
f.esquema, f.permite_firma, f.requiere_firma,
f.doc_encabezado, f.doc_subtitulo, f.doc_logo_base64, f.doc_color, f.doc_pie_pagina,
p.nombre_completo AS paciente_nombre, p.numero_documento, p.tipo_documento,
p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps,
p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps, p.direccion,
u.full_name AS enviado_por_nombre, u.email AS enviado_por_email,
ld.numero_orden
FROM lab_form_envios e
@@ -201,7 +202,7 @@ if ($modoTurnero) {
f.esquema, f.permite_firma, f.requiere_firma,
f.doc_encabezado, f.doc_subtitulo, f.doc_logo_base64, f.doc_color, f.doc_pie_pagina,
p.nombre_completo AS paciente_nombre, p.numero_documento, p.tipo_documento,
p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps,
p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps, p.direccion,
u.full_name AS enviado_por_nombre, u.email AS enviado_por_email,
ld.numero_orden
FROM lab_form_envios e
@@ -997,7 +998,19 @@ function _addExamWizardHtml(string $cid): string {
<div id="cargarAnteriorMsg" class="small text-muted mb-2" style="display:none"></div>
<?php endif; ?>
<?php
$paciente = $datosPrefilled['__paciente'] ?? [];
// Los campos vinculados leen de aquí. En los envíos de formulario,
// datos_prefilled es una copia tomada al enviarlo, que puede no incluir
// claves agregadas después; se completa con los datos vivos del paciente
// para que un campo automático no quede vacío por eso.
$paciente = ($datosPrefilled['__paciente'] ?? []) + array_filter([
'nombre_completo' => $envio['paciente_nombre'] ?? null,
'numero_documento' => $envio['numero_documento'] ?? null,
'tipo_documento' => $envio['tipo_documento'] ?? null,
'fecha_nacimiento' => $envio['fecha_nacimiento'] ?? null,
'telefono' => $envio['paciente_telefono'] ?? null,
'eps' => $envio['eps'] ?? null,
'direccion' => $envio['direccion'] ?? null,
], fn($v) => $v !== null && $v !== '');
// Firma global del profesional (un solo valor para todos los campos firma_profesional)
$firmaSharedProfesional = $envio['firma_profesional_svg'] ?? null;