diff --git a/api/lab/get_examenes_rips.php b/api/lab/get_examenes_rips.php new file mode 100644 index 0000000..f089086 --- /dev/null +++ b/api/lab/get_examenes_rips.php @@ -0,0 +1,81 @@ + [ + 'method' => 'GET', + 'header' => 'X-Lab-Key: ' . LAB_SYNC_KEY . "\r\n", + 'timeout' => 8, + 'ignore_errors' => true, + ], +]); + +$resp = @file_get_contents($url, false, $ctx); +if ($resp === false) jsonError('No se pudo conectar con RIPS Manager', 503); + +$data = json_decode($resp, true); +if (!($data['ok'] ?? false)) { + jsonError($data['error'] ?? 'Error en RIPS Manager', 502); +} + +$examenes = $data['examenes'] ?? []; +if (!$examenes) { + jsonOk(['encontrados' => [], 'no_mapeados' => [], 'total_rips' => 0]); +} + +// Mapear COD_EXAMEN → exam_tipos por codigo_legacy +$codigos = array_values(array_unique(array_filter( + array_map(fn($e) => trim($e['cod_examen'] ?? ''), $examenes) +))); + +$encontrados = []; +$no_mapeados = []; + +if ($codigos) { + $ph = implode(',', array_fill(0, count($codigos), '?')); + $stmt = db()->prepare( + "SELECT id AS exam_tipo_id, codigo, nombre, codigo_legacy + FROM exam_tipos + WHERE codigo_legacy IN ($ph) AND activo = 1" + ); + $stmt->execute($codigos); + $mapa = []; + foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { + $mapa[trim($r['codigo_legacy'])] = $r; + } + foreach ($codigos as $cod) { + if (isset($mapa[$cod])) { + $encontrados[] = [ + 'exam_tipo_id' => (int)$mapa[$cod]['exam_tipo_id'], + 'codigo' => $mapa[$cod]['codigo'], + 'nombre' => $mapa[$cod]['nombre'], + 'cod_rips' => $cod, + ]; + } else { + $no_mapeados[] = $cod; + } + } +} + +$meta = $examenes[0] ?? []; +jsonOk([ + 'encontrados' => $encontrados, + 'no_mapeados' => $no_mapeados, + 'total_rips' => count($examenes), + 'recepcion_id' => $meta['recepcion_id'] ?? null, + 'hora' => $meta['hora'] ?? null, +]); diff --git a/config/config.php b/config/config.php index ce1b00d..26d5c98 100644 --- a/config/config.php +++ b/config/config.php @@ -406,6 +406,10 @@ if (!defined('MIGRATION_TOKEN')) { if (!defined('LAB_SYNC_KEY')) { define('LAB_SYNC_KEY', getenv('LAB_SYNC_KEY') ?: 'rips-lab-sync-2026'); } +// URL base del RIPS Manager (para consultas server-to-server) +if (!defined('RIPS_MANAGER_URL')) { + define('RIPS_MANAGER_URL', getenv('RIPS_MANAGER_URL') ?: ''); +} define('TIMEZONE', 'America/Bogota'); // Información del desarrollador diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php index 5344749..1c06812 100644 --- a/modules/turnero/views/recepcion.php +++ b/modules/turnero/views/recepcion.php @@ -625,6 +625,24 @@ document.addEventListener('DOMContentLoaded', function() { + +
+