57 lines
1.6 KiB
PHP
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);
|
|
}
|