<?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);
}
