diff --git a/modules/turnero/api/get_consentimientos.php b/modules/turnero/api/get_consentimientos.php index 375b454..3639d6d 100644 --- a/modules/turnero/api/get_consentimientos.php +++ b/modules/turnero/api/get_consentimientos.php @@ -392,6 +392,7 @@ if ($incluirSolicitud) { "SELECT tm.id, tm.tipo_muestra, tm.estado, tm.motivo_rechazo, tm.recibida_at, COALESCE(lt.nombre, tm.tipo_muestra) AS label, 1 AS es_pendiente_anterior, + ts.id AS solicitud_id_anterior, ts.numero_orden AS solicitud_orden_anterior FROM turnero_muestras tm JOIN turnero_solicitudes ts ON ts.id = tm.solicitud_id @@ -425,6 +426,7 @@ if ($incluirSolicitud) { "SELECT tm.id, tm.tipo_muestra, tm.estado, tm.motivo_rechazo, tm.recibida_at, COALESCE(lt.nombre, tm.tipo_muestra) AS label, 1 AS es_pendiente_anterior, + ts.id AS solicitud_id_anterior, ts.numero_orden AS solicitud_orden_anterior FROM turnero_muestras tm JOIN turnero_solicitudes ts ON ts.id = tm.solicitud_id @@ -438,6 +440,33 @@ if ($incluirSolicitud) { } catch (\Throwable $_) {} } + // Cargar exámenes de la solicitud original para cada muestra pendiente de visita anterior, + // para que al recibirla se vea el contexto completo del servicio (no solo el tipo de muestra) + $solIdsAnteriores = array_values(array_unique(array_filter( + array_column($muestras, 'solicitud_id_anterior') + ))); + if ($solIdsAnteriores) { + $ph = implode(',', array_fill(0, count($solIdsAnteriores), '?')); + $stmtExAnt = $pdo->prepare( + "SELECT tei.solicitud_id, et.nombre, et.codigo + FROM turnero_examen_items tei + JOIN exam_tipos et ON et.id = tei.exam_tipo_id + WHERE tei.solicitud_id IN ($ph) + ORDER BY et.nombre ASC" + ); + $stmtExAnt->execute($solIdsAnteriores); + $examPorSolicitud = []; + foreach ($stmtExAnt->fetchAll(PDO::FETCH_ASSOC) as $row) { + $examPorSolicitud[(int)$row['solicitud_id']][] = ['nombre' => $row['nombre'], 'codigo' => $row['codigo']]; + } + foreach ($muestras as &$m) { + if (!empty($m['solicitud_id_anterior'])) { + $m['examenes_anteriores'] = $examPorSolicitud[(int)$m['solicitud_id_anterior']] ?? []; + } + } + unset($m); + } + $respuesta['solicitud'] = $solicitud; $respuesta['paciente'] = $paciente; $respuesta['examenes'] = $examenes; diff --git a/modules/turnero/views/lugar.php b/modules/turnero/views/lugar.php index fab9e9a..44c67ff 100644 --- a/modules/turnero/views/lugar.php +++ b/modules/turnero/views/lugar.php @@ -594,6 +594,7 @@ try { .muestra-info { flex: 1; min-width: 0; } .muestra-label { font-weight: 600; font-size: .82rem; font-family: monospace; } .muestra-motivo { font-size: .7rem; margin-top: 2px; opacity: .85; } + .muestra-examenes { font-size: .7rem; margin-top: 2px; opacity: .85; } .muestra-ts { font-size: .68rem; color: #94a3b8; flex-shrink: 0; } .btn-muestra-accion { border: none; border-radius: 8px; padding: 3px 11px; @@ -2500,6 +2501,9 @@ function renderMuestras(lista) { visita anterior${m.solicitud_orden_anterior ? ' · ' + escHtml(m.solicitud_orden_anterior) : ''} ` : ''; + const examAntHtml = (esPrevio && m.examenes_anteriores && m.examenes_anteriores.length) + ? `