Files
whatsapp/api/lab/get_direcciones_paciente.php
T
2026-04-08 09:47:47 -05:00

57 lines
1.6 KiB
PHP

<?php
/**
* GET /api/lab/get_direcciones_paciente.php?paciente_id=X
* Devuelve las direcciones únicas usadas en domicilios anteriores de un paciente.
* También incluye la dirección registrada en el perfil del paciente.
*/
require_once __DIR__ . '/_helpers.php';
requireMethod('GET');
$pacienteId = (int)($_GET['paciente_id'] ?? 0);
if (!$pacienteId) jsonError('paciente_id requerido');
try {
$db = Database::getInstance();
// Dirección del perfil del paciente
$pac = $db->fetch(
'SELECT direccion, barrio, ciudad FROM lab_pacientes WHERE id = ?',
[$pacienteId]
);
// Direcciones distintas de domicilios anteriores (máx 10 más recientes)
$previas = $db->fetchAll(
"SELECT DISTINCT direccion, barrio, ciudad
FROM lab_domicilios
WHERE paciente_id = ?
AND direccion IS NOT NULL AND direccion != ''
ORDER BY id DESC
LIMIT 10",
[$pacienteId]
);
// Combinar: perfil primero, luego domicilios previos deduplicando
$resultado = [];
$vistas = [];
$agregar = function(array $row) use (&$resultado, &$vistas) {
$dir = trim($row['direccion'] ?? '');
if (!$dir) return;
$key = strtolower($dir);
if (isset($vistas[$key])) return;
$vistas[$key] = true;
$resultado[] = [
'direccion' => $dir,
'barrio' => $row['barrio'] ?? '',
'ciudad' => $row['ciudad'] ?? '',
];
};
if ($pac) $agregar($pac);
foreach ($previas as $p) $agregar($p);
jsonOk(['data' => $resultado]);
} catch (Exception $e) {
jsonError($e->getMessage(), 500);
}