diff --git a/api/lab/get_examenes_rips.php b/api/lab/get_examenes_rips.php index 361ba3c..16e464a 100644 --- a/api/lab/get_examenes_rips.php +++ b/api/lab/get_examenes_rips.php @@ -71,14 +71,16 @@ $no_mapeados = []; if ($codigos) { $ph = implode(',', array_fill(0, count($codigos), '?')); $stmt = db()->prepare( - "SELECT id AS exam_tipo_id, codigo, nombre, codigo_legacy + "SELECT id AS exam_tipo_id, codigo, nombre, + COALESCE(codigo_legacy, codigo) AS match_key FROM exam_tipos - WHERE codigo_legacy IN ($ph) AND activo = 1" + WHERE (codigo_legacy IN ($ph) OR (codigo_legacy IS NULL AND codigo IN ($ph))) + AND activo = 1" ); - $stmt->execute($codigos); + $stmt->execute(array_merge($codigos, $codigos)); $mapa = []; foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { - $mapa[trim($r['codigo_legacy'])] = $r; + $mapa[trim($r['match_key'])] = $r; } foreach ($codigos as $cod) { if (isset($mapa[$cod])) { diff --git a/modules/turnero/api/create_solicitud.php b/modules/turnero/api/create_solicitud.php index a3530cc..5f96c6c 100644 --- a/modules/turnero/api/create_solicitud.php +++ b/modules/turnero/api/create_solicitud.php @@ -335,6 +335,48 @@ try { $stmt->execute([$solicitudId]); $solicitud = $stmt->fetch(PDO::FETCH_ASSOC); + // Bandeja WhatsApp — actualizar rips_examenes_pendientes (fuera de la transacción principal) + if ($recepcionId && !empty($examIds) && ($solicitud['paciente_documento'] ?? '')) { + try { + $numDoc = $solicitud['paciente_documento']; + $ph2 = implode(',', array_fill(0, count($examIds), '?')); + $stEx2 = $pdo->prepare( + "SELECT COALESCE(codigo_legacy, codigo) AS cod_rips FROM exam_tipos WHERE id IN ($ph2)" + ); + $stEx2->execute($examIds); + $codRips = array_column($stEx2->fetchAll(PDO::FETCH_ASSOC), 'cod_rips'); + + $docidmedico = ''; + if ($medicoId) { + $stM = $pdo->prepare("SELECT docidmedico FROM medicos WHERE id = ? LIMIT 1"); + $stM->execute([$medicoId]); + $docidmedico = (string)($stM->fetchColumn() ?: ''); + } + + $meta = [ + 'medico_docidmedico' => $docidmedico, + 'nit_empresa' => $nitEmpresa, + 'diagnostico_cod' => $diagPpal, + 'valor_total' => $valorTotal, + 'recepcion_id' => $recepcionId, + 'hora' => date('H:i'), + ]; + $datos = array_map(fn($cod) => ['cod_examen' => $cod] + $meta, $codRips); + + $pdo->prepare( + "DELETE FROM rips_examenes_pendientes WHERE numero_documento = ? AND DATE(created_at) = CURDATE()" + )->execute([$numDoc]); + + $pdo->prepare( + "INSERT INTO rips_examenes_pendientes (numero_documento, datos, recepcion_id, hora_recepcion) + VALUES (?, ?, ?, CURTIME())" + )->execute([$numDoc, json_encode($datos, JSON_UNESCAPED_UNICODE), $recepcionId]); + + } catch (\Throwable $eRips) { + error_log('[create_solicitud] rips_examenes_pendientes: ' . $eRips->getMessage()); + } + } + jsonOk([ 'solicitud' => $solicitud, 'recepcion_id' => $recepcionId,