<?php
/**
 * Generador de PDF para Recetas Médicas V2.0
 * Captura receta.php tal como se ve en el navegador y la convierte a PDF
 */

require_once __DIR__ . "/../config/Conexion.php";

if (!class_exists('Persona')) {
    require_once __DIR__ . "/../modelos/Persona.php";
}

/**
 * Función para cargar TCPDF
 */
function cargarTCPDFReceta()
{
    if (class_exists('TCPDF')) {
        return true;
    }

    $baseDir = dirname(__DIR__);
    $docRoot = isset($_SERVER['DOCUMENT_ROOT']) && !empty($_SERVER['DOCUMENT_ROOT']) ? rtrim($_SERVER['DOCUMENT_ROOT'], '/') : $baseDir;
    $cpanelSharedPath = '/home/' . get_current_user() . '/public_html/tcpdf/tcpdf.php';

    $posibles_rutas = [
        $docRoot . '/tcpdf/tcpdf.php',
        $cpanelSharedPath,
        $baseDir . '/tcpdf/tcpdf.php',
        $baseDir . '/../tcpdf/tcpdf.php',
        $baseDir . '/public/tcpdf/tcpdf.php',
        $baseDir . '/../public/tcpdf/tcpdf.php',
        __DIR__ . '/../public/tcpdf/tcpdf.php'
    ];

    foreach ($posibles_rutas as $ruta) {
        if (file_exists($ruta)) {
            require_once($ruta);
            return true;
        }
    }

    $busqueda = glob($baseDir . '/public/*/tcpdf.php');
    if (!empty($busqueda)) {
        require_once($busqueda[0]);
        return true;
    }

    return false;
}

/**
 * Generar HTML de la receta usando el archivo receta.php
 */
function generarHTMLRecetaBonita($idatencion, $estaFirmado = false, $datosFirma = [])
{
    $persona = new Persona();

    // Cargar datos
    $rspta = $persona->imprimirHistoria($idatencion);
    $reg = $rspta->fetch_object();

    if (!$reg) {
        return '<html><body><h1>Error: No existen datos para esta atención.</h1></body></html>';
    }

    $rspta2 = $persona->imprimirReceta($idatencion);
    $rspta3 = $persona->imprimirDetalleHistoria($idatencion);

    // Recuperar diagnósticos
    $codigosCie = '';
    $enfermedades = '';
    if ($rspta3) {
        while ($diag = $rspta3->fetch_object()) {
            $codigosCie .= strtoupper($diag->codigo) . ' ';
            $enfermedades .= strtoupper($diag->enfermedad) . ' ';
        }
    }

    // Recuperar medicamentos
    $listaMedicamentos = [];
    if ($rspta2) {
        while ($r = $rspta2->fetch_object()) {
            $listaMedicamentos[] = $r;
        }
    }

    // Generar HTML de medicamentos
    $medicamentosHTML = '';
    foreach ($listaMedicamentos as $med) {
        $desc = strtoupper($med->medicamento);
        if ($med->concentracion)
            $desc .= ' ' . $med->concentracion;
        if ($med->presentacion)
            $desc .= ' (' . $med->presentacion . ')';

        $medicamentosHTML .= '
            <div style="margin-bottom: 3px; padding-bottom: 1px;">
                <b>• ' . $desc . '</b><br>
                &nbsp;&nbsp; <b>Cant:</b> ' . $med->cantidad . '
            </div>';
    }

    // Generar HTML de posología
    $posologiaHTML = '';
    foreach ($listaMedicamentos as $med) {
        $posologiaHTML .= '
            <div style="margin-bottom: 3px; padding-bottom: 1px;">
                <b>Vía:</b> ' . ($med->via_administracion ? $med->via_administracion : '-') . '<br>
                ' . ($med->posologia ? $med->posologia : '-') . '
            </div>';
    }

    // Generar firma si está firmada
    $firmaHTML = '';
    if ($estaFirmado && !empty($datosFirma)) {
        $qrContent = "FIRMADO POR: " . strtoupper($reg->especialista) . "\nFECHA: " . $datosFirma['fecha_firma'] . "\nVALIDAR: firmadigital.gob.ec";
        $qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=" . urlencode($qrContent);

        $firmaHTML = '
            <div class="campo-texto" style="top: 118mm; left: 142mm; width: 62mm; height: 20mm; display: flex; align-items: center; justify-content: center;">
                <img src="' . $qrUrl . '" style="width: 55px; height: 55px; margin-right: 6px; border: 1px solid #333;">
                <div style="font-size: 7px; line-height: 1.1;">
                    FIRMADO DIGITALMENTE<br>
                    <b>' . substr($reg->especialista, 0, 22) . '</b><br>
                    ' . $datosFirma['fecha_firma'] . '
                </div>
            </div>';
    }

    // Ruta absoluta de la imagen de fondo
    $baseDir = dirname(__DIR__);
    $fondoPath = $baseDir . '/public/img/fondo_receta.png';

    // HTML completo (copia exacta de receta.php pero optimizado para PDF)
    $html = '
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: Arial, sans-serif;
            font-size: 10px;
            background: white;
            margin: 0;
            padding: 0;
        }
        
        .page-a5 {
            position: relative;
            width: 210mm;
            height: 148mm;
            background: white;
            overflow: hidden;
            margin: 0;
        }
        
        #fondo-impresion {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1;
            object-fit: cover;
        }
        
        .datos-layer {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 50;
        }
        
        .campo-texto {
            position: absolute;
            font-size: 10px;
            color: #000;
            line-height: 1.2;
        }
    </style>
</head>
<body>
    <div class="page-a5">
        <img id="fondo-impresion" src="' . $fondoPath . '" alt="Fondo Receta">
        
        <div class="datos-layer" style="color: #000 !important;">
            <!-- NÚMERO DE RECETA -->
            <div class="campo-texto" style="top: 25mm; left: 12mm; width: 45mm; text-align: left; color: #000; font-size: 12px; text-shadow: 1px 1px 0 #fff;">
                <b>Receta#:</b> ' . $idatencion . '
            </div>
            
            <!-- DATOS DEL PACIENTE -->
            <div class="campo-texto" style="top: 15mm; left: 42mm; width: 160mm; align-items: center; display: flex;">
                <b>Paciente:</b>&nbsp;' . $reg->paciente . '
            </div>
            
            <div class="campo-texto" style="top: 21mm; left: 42mm; width: 38mm; align-items: center; display: flex;">
                <b>Edad:</b>&nbsp;' . $reg->edad . '
            </div>
            <div class="campo-texto" style="top: 21mm; left: 82mm; width: 38mm; align-items: center; display: flex;">
                <b>Peso:</b>&nbsp;' . $reg->peso . ' kg
            </div>
            <div class="campo-texto" style="top: 21mm; left: 122mm; width: 80mm; align-items: center; display: flex;">
                <b>Alergias:</b>&nbsp;' . ($reg->alergia ? $reg->alergia : 'Ninguna') . '
            </div>
            
            <div class="campo-texto" style="top: 26mm; left: 42mm; width: 78mm; align-items: center; display: flex;">
                <b>Ciudad:</b>&nbsp;' . ($reg->direccion ? $reg->direccion : 'Guayaquil') . '
            </div>
            <div class="campo-texto" style="top: 26mm; left: 122mm; width: 80mm; align-items: center; display: flex;">
                <b>Fecha:</b>&nbsp;' . $reg->fecha . '
            </div>
            
            <!-- MEDICO Y SENESCYT -->
            <div class="campo-texto" style="top: 42mm; left: 5mm; width: 140mm; font-size: 11px; display: flex; align-items: center;">
                <b>Medico Prescriptor:</b>&nbsp;' . $reg->especialista . ' &nbsp;&nbsp;
                <b>Senescyt:</b>&nbsp;' . $reg->registro_senescyt . '
            </div>
            
            <!-- VIGENCIA -->
            <div class="campo-texto" style="top: 42mm; left: 155mm; width: 50mm; text-align: center; font-size: 11px; display: flex; align-items: center; justify-content: center;">
                <b>Vigencia:</b>&nbsp;' . $reg->vigencia . '
            </div>
            
            <!-- MEDICAMENTOS -->
            <div class="campo-texto" style="top: 53mm; left: 5mm; width: 105mm; height: 58mm; overflow: hidden; font-size: 10px; line-height: 1.3;">
                ' . $medicamentosHTML . '
            </div>
            
            <!-- POSOLOGÍA -->
            <div class="campo-texto" style="top: 53mm; left: 112mm; width: 93mm; height: 58mm; overflow: hidden; font-size: 10px; line-height: 1.3;">
                ' . $posologiaHTML . '
            </div>
            
            <!-- INDICACIONES -->
            <div class="campo-texto" style="top: 113mm; left: 5mm; width: 200mm; height: 4mm; font-size: 9px; line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">
                <b>Indicaciones:</b> ' . str_replace("\n", " ", $reg->tratamiento) . '
            </div>
            
            <!-- INDICACIONES NO FARMACOLÓGICAS -->
            <div class="campo-texto" style="top: 118mm; left: 5mm; width: 200mm; height: 4mm; font-size: 9px; line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">
                <b>Indicaciones No Farmacologicas:</b> ' . str_replace("\n", " ", $reg->Indicaciones_no_farmacologicas) . '
            </div>
            
            <!-- SIGNOS DE ALARMA -->
            <div class="campo-texto" style="top: 123mm; left: 5mm; width: 200mm; height: 4mm; font-size: 9px; line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">
                <b>Signos de alarma:</b> ' . ($reg->signnose_de_alarma ? $reg->signnose_de_alarma : 'Ninguno') . '
            </div>
            
            <!-- DIAGNOSTICO -->
            <div class="campo-texto" style="top: 128mm; left: 5mm; width: 135mm; height: 4mm; font-size: 9px; line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">
                <b>Diagnostico:</b> ' . $enfermedades . '
            </div>
            
            <!-- CIE10 -->
            <div class="campo-texto" style="top: 133mm; left: 5mm; width: 135mm; height: 4mm; font-size: 9px; line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">
                <b>Cie10:</b> ' . $codigosCie . '
            </div>
            
            <!-- FIRMA -->
            ' . $firmaHTML . '
        </div>
    </div>
</body>
</html>';

    return $html;
}

/**
 * Generar PDF de la receta con diseño bonito
 */
function generarPDFReceta($idatencion, $datos_json = null, $paramsFirma = [])
{
    if (ob_get_length())
        ob_clean();

    $baseDir = dirname(__DIR__);

    // Verificar si está firmada
    $estaFirmado = false;
    $datosFirma = [];

    if (!empty($paramsFirma)) {
        $estaFirmado = true;
        $datosFirma = [
            'fecha_firma' => date('Y-m-d H:i:s')
        ];
    }

    $html = generarHTMLRecetaBonita($idatencion, $estaFirmado, $datosFirma);

    // Crear directorio temporal
    $dirTemp = $baseDir . '/files/recetas_temp/';
    if (!file_exists($dirTemp)) {
        mkdir($dirTemp, 0755, true);
    }

    $rutaPDF = $dirTemp . 'receta_' . $idatencion . '_' . time() . '.pdf';

    // Cargar TCPDF
    if (!cargarTCPDFReceta()) {
        error_log("Error: TCPDF no encontrado");
        return null;
    }

    try {
        // Configurar PDF A4 VERTICAL (para que la receta A5 horizontal quede en la mitad superior)
        $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
        $pdf->SetCreator('Sistema Médico');
        $pdf->SetAuthor('Sistema Médico');
        $pdf->SetTitle('Receta Médica #' . $idatencion);
        $pdf->setPrintHeader(false);
        $pdf->setPrintFooter(false);

        // Sin márgenes para control total
        $pdf->SetMargins(0, 0, 0);
        $pdf->SetAutoPageBreak(false);
        $pdf->AddPage();

        // Escribir HTML
        $pdf->writeHTML($html, true, false, true, false, '');

        // Guardar PDF
        $pdf->Output($rutaPDF, 'F');
        return $rutaPDF;

    } catch (Exception $e) {
        error_log("TCPDF Exception: " . $e->getMessage());
        return null;
    }
}
?>