File "ReportesControllers.php"

Full Path: C:/wamp64/www/casos_medicos1/controller/ReportesControllers.php
File size: 5.08 KB
MIME-type: text/x-php
Charset: utf-8

<?php
require_once __DIR__ . '/../model/ReportesPdf.php';
require_once __DIR__ . '/../tcpdf_min/tcpdf.php';
class ReportesControllers
{

    public function exportar_pdf()
    {
        if (!isset($_SESSION['usuario'])) {
            header('Location: /login/index');
            exit;
        }

        $cedula = $_GET['cedula'] ?? '';
        if (!$cedula) die("No se indicó cédula");

        $modelo = new ReportesModel();
        $paciente = $modelo->obtenerHojaVida($cedula);
        $diagnosticos = $modelo->obtenerDiagnosticos($cedula);

        if (!$paciente) die("Paciente no encontrado");

        // Crear PDF
        $pdf = new TCPDF();
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('Avicampo');
        $pdf->SetTitle('Historia Clínica - ' . $paciente['nombre']);
        $pdf->SetMargins(15, 20, 15);
        $pdf->AddPage();

        // Logo
        $logo = $_SERVER['DOCUMENT_ROOT'] . '/casos_medicos1/public/assets/logo_avicampo.png';
        if (file_exists($logo)) $pdf->Image($logo, 15, 10, 40);

        // Foto paciente
        $foto = $_SERVER['DOCUMENT_ROOT'] . '/casos_medicos1/public/' . $paciente['foto'];
        if (!empty($paciente['foto']) && file_exists($foto)) $pdf->Image($foto, 150, 10, 40);

        $pdf->Ln(20);
        $pdf->SetFont('helvetica', 'B', 16);
        $pdf->Cell(0, 10, 'Historia Clínica - ' . $paciente['nombre'], 0, 1, 'C');

        // Datos Generales y Laborales
        $pdf->SetFont('helvetica', '', 10);
        $html = '<h4>Datos Generales</h4>
        <table cellpadding="4" border="1">
        <tr><td><b>Cédula:</b></td><td>' . $paciente['cedula'] . '</td></tr>
        <tr><td><b>Nombre:</b></td><td>' . $paciente['nombre'] . '</td></tr>
        <tr><td><b>Fecha Nacimiento:</b></td><td>' . $paciente['fecha_nacimiento'] . '</td></tr>
        <tr><td><b>Edad:</b></td><td>' . $paciente['edad'] . '</td></tr>
        <tr><td><b>Sexo:</b></td><td>' . $paciente['sexo'] . '</td></tr>
        <tr><td><b>Estado:</b></td><td>' . $paciente['estado'] . '</td></tr>
        </table>

        <h4>Datos Laborales</h4>
        <table cellpadding="4" border="1">
        <tr><td><b>AFP:</b></td><td>' . $paciente['afp'] . '</td></tr>
        <tr><td><b>EPS:</b></td><td>' . $paciente['eps'] . '</td></tr>
        <tr><td><b>ARL:</b></td><td>' . $paciente['arl'] . '</td></tr>
        <tr><td><b>Tipo Contrato:</b></td><td>' . $paciente['tipo_contrato'] . '</td></tr>
        <tr><td><b>Empresa:</b></td><td>' . $paciente['empresa'] . '</td></tr>
        <tr><td><b>Planta:</b></td><td>' . $paciente['planta'] . '</td></tr>
        <tr><td><b>Regional:</b></td><td>' . $paciente['regional'] . '</td></tr>
        <tr><td><b>Centro Trabajo:</b></td><td>' . $paciente['centro_trabajo'] . '</td></tr>
        <tr><td><b>Cargo Inicial:</b></td><td>' . $paciente['cargo_inicial'] . '</td></tr>
        <tr><td><b>Fecha Inicio:</b></td><td>' . $paciente['fecha_inicio'] . '</td></tr>
        <tr><td><b>Nuevo Cargo:</b></td><td>' . $paciente['cargo_reubicado'] . '</td></tr>
        <tr><td><b>Productividad:</b></td><td>' . $paciente['productividad'] . '</td></tr>
        <tr><td><b>Semanas Cotización:</b></td><td>' . $paciente['semanas_cotizacion'] . '</td></tr>
        <tr><td><b>Tipo Rehabilitación:</b></td><td>' . $paciente['tipo_rehabilitacion'] . '</td></tr>
        </table>';

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

        // Diagnósticos
        $pdf->Ln(5);
        $pdf->SetFont('helvetica', 'B', 12);
        $pdf->Cell(0, 6, 'Diagnósticos', 0, 1);
        $pdf->SetFont('helvetica', '', 10);

        if (!empty($diagnosticos)) {
            foreach ($diagnosticos as $d) {
                $pdf->MultiCell(
                    0,
                    5,
                    "Fecha: " . $d['fecha'] .
                        " | Estado: " . ($d['estado'] ?? '-') .
                        " | Diagnóstico: " . ($d['diagnostico_descripcion'] ?? '-') .
                        "\nPeso: " . ($d['peso'] ?? '-') .
                        " | Talla: " . ($d['talla'] ?? '-') .
                        " | IMC: " . ($d['imc'] ?? '-') .
                        "\nOrigen: " . ($d['origen'] ?? '-') .
                        " | Calificación: " . ($d['calificacion_origen'] ?? '-') .
                        "\nTipo Reintegro: " . ($d['tipo_reintegro'] ?? '-') .
                        " | Tiempo Recomendación: " . ($d['tiempo_recomendacion'] ?? '-') .
                        "\nFunciones Iniciales: " . ($d['funciones_iniciales'] ?? '-') .
                        "\nFunciones Actuales: " . ($d['funciones_actuales'] ?? '-') .
                        "\nRecomendaciones: " . ($d['recomendaciones'] ?? '-'),
                    0,
                    'J',
                    false,
                    1
                );
                $pdf->Ln(2);
            }
        } else {
            $pdf->Cell(0, 5, "No hay diagnósticos registrados", 0, 1);
        }

        // Generar PDF
        $pdf->Output('Historia_Clinica_' . $paciente['cedula'] . '.pdf', 'D');
    }
}