direccion
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<?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);
|
||||
}
|
||||
Reference in New Issue
Block a user