From d3826972adc38a3b34b0c5ad833ca834e7b57d05 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 3 Jul 2026 00:55:29 -0500 Subject: [PATCH] =?UTF-8?q?feat(turnero):=20selector=20de=20m=C3=A9dico=20?= =?UTF-8?q?tratante=20en=20recepci=C3=B3n,=20visible=20en=20toma=20de=20mu?= =?UTF-8?q?estras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- migrations/20260703_solicitud_medico.sql | 4 ++ migrations/run_pendientes.php | 1 + modules/turnero/api/create_solicitud.php | 7 ++- modules/turnero/api/get_consentimientos.php | 8 ++- modules/turnero/views/lugar.php | 16 +++++ modules/turnero/views/recepcion.php | 70 +++++++++++++++++++++ 6 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 migrations/20260703_solicitud_medico.sql diff --git a/migrations/20260703_solicitud_medico.sql b/migrations/20260703_solicitud_medico.sql new file mode 100644 index 0000000..fbd1e89 --- /dev/null +++ b/migrations/20260703_solicitud_medico.sql @@ -0,0 +1,4 @@ +ALTER TABLE turnero_solicitudes + ADD COLUMN medico_id INT UNSIGNED DEFAULT NULL + COMMENT 'FK medicos.id — médico tratante seleccionado en recepción' + AFTER solo_muestras; diff --git a/migrations/run_pendientes.php b/migrations/run_pendientes.php index 1af29c3..5531abb 100644 --- a/migrations/run_pendientes.php +++ b/migrations/run_pendientes.php @@ -11,6 +11,7 @@ $pendientes = [ '20260703_solo_muestras.sql', '20260703_medicos.sql', '20260703_medicos_seed.sql', + '20260703_solicitud_medico.sql', ]; $pdo = Database::getInstance()->getConnection(); diff --git a/modules/turnero/api/create_solicitud.php b/modules/turnero/api/create_solicitud.php index bf806e4..9cbba38 100644 --- a/modules/turnero/api/create_solicitud.php +++ b/modules/turnero/api/create_solicitud.php @@ -32,6 +32,7 @@ $obs = isset($datos['observaciones']) ? trim((string) $datos['observac $numOrden = isset($datos['numero_orden']) ? trim((string) $datos['numero_orden']) : null; $embarazada = !empty($datos['embarazada']) ? 1 : 0; $soloMuestras = !empty($datos['solo_muestras']) ? 1 : 0; +$medicoId = !empty($datos['medico_id']) ? (int)$datos['medico_id'] : null; $pagosDetalle = null; if ($metodoPago === 'combinado' && isset($datos['pagos_detalle']) && is_array($datos['pagos_detalle'])) { $pd = $datos['pagos_detalle']; @@ -114,12 +115,12 @@ try { $stmt = $pdo->prepare( "INSERT INTO turnero_solicitudes - (turno_id, paciente_id, lugar_id, numero_orden, total_cobrado, metodo_pago, pagos_detalle, observaciones, embarazada, solo_muestras, creado_por) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" + (turno_id, paciente_id, lugar_id, numero_orden, total_cobrado, metodo_pago, pagos_detalle, observaciones, embarazada, solo_muestras, medico_id, creado_por) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ); $stmt->execute([ $turnoId, $pacienteId, $lugarId, $numOrden, - $total, $metodoPago ?: null, $pagosDetalle, $obs ?: null, $embarazada, $soloMuestras, adminId(), + $total, $metodoPago ?: null, $pagosDetalle, $obs ?: null, $embarazada, $soloMuestras, $medicoId, adminId(), ]); $solicitudId = (int) $pdo->lastInsertId(); diff --git a/modules/turnero/api/get_consentimientos.php b/modules/turnero/api/get_consentimientos.php index 076e6ce..8cbc5a7 100644 --- a/modules/turnero/api/get_consentimientos.php +++ b/modules/turnero/api/get_consentimientos.php @@ -56,10 +56,14 @@ $respuesta = [ if ($incluirSolicitud) { $stmt = $pdo->prepare( "SELECT s.id, s.turno_id, s.paciente_id, s.lugar_id, - s.total_cobrado, s.metodo_pago, s.observaciones, s.embarazada, s.creado_at, - l.nombre AS lugar_nombre + s.total_cobrado, s.metodo_pago, s.observaciones, s.embarazada, s.solo_muestras, s.medico_id, s.creado_at, + l.nombre AS lugar_nombre, + CONCAT(m.nombres, ' ', m.apellidos) AS medico_nombre, + m.cod_especialidad AS medico_especialidad, + m.codigo AS medico_codigo FROM turnero_solicitudes s LEFT JOIN turnero_lugares l ON l.id = s.lugar_id + LEFT JOIN medicos m ON m.id = s.medico_id WHERE s.turno_id = ? LIMIT 1" ); diff --git a/modules/turnero/views/lugar.php b/modules/turnero/views/lugar.php index 7b0353b..83a1a16 100644 --- a/modules/turnero/views/lugar.php +++ b/modules/turnero/views/lugar.php @@ -299,6 +299,12 @@ require_once __DIR__ . '/../../../shared/components/sidebar.php'; Paciente embarazada +
+
+ Médico + +
+
Sin paciente vinculado @@ -610,6 +616,16 @@ async function cargarFichaSolicitud(turnoId) { const badgeEmb = document.getElementById('pac-embarazada'); if (badgeEmb) badgeEmb.classList.toggle('d-none', !(sol && sol.embarazada == 1)); + const medDiv = document.getElementById('pac-medico'); + if (medDiv) { + const tieneMedico = sol && sol.medico_nombre; + medDiv.classList.toggle('d-none', !tieneMedico); + if (tieneMedico) { + const esp = sol.medico_especialidad ? ' · ' + sol.medico_especialidad : ''; + document.getElementById('pac-medico-nombre').textContent = sol.medico_nombre + esp; + } + } + if (pac) { document.getElementById('bloque-pac-info').style.display = ''; document.getElementById('bloque-pac-sin').classList.add('d-none'); diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php index c36b2ec..461d6ee 100644 --- a/modules/turnero/views/recepcion.php +++ b/modules/turnero/views/recepcion.php @@ -448,6 +448,27 @@ document.addEventListener('DOMContentLoaded', function() {
+ +
+
+ Médico tratante (opcional) +
+
+ + +
+
+ +
+
    +
    +
    + +
    +