<?php
// GENERADOR DE REPORTE: PROTOCOLO QUIRÚRGICO

function generarPDFCirugia($idatencion, $json)
{
    // Carga segura de TCPDF
    if (function_exists('cargarTCPDF')) {
        if (!cargarTCPDF())
            die("Error al cargar TCPDF");
    } else {
        if (!class_exists('TCPDF')) {
            $cpanelSharedPath = '/home/' . get_current_user() . '/public_html/tcpdf/tcpdf.php';
            $rutas = ['../public/tcpdf/tcpdf.php', dirname(__DIR__) . '/public/tcpdf/tcpdf.php', $cpanelSharedPath];
            foreach ($rutas as $r)
                if (file_exists($r))
                    require_once($r);
        }
    }

    $p = obtenerDatosPaciente($idatencion);
    $d = json_decode($json, true) ?? [];

    // Normalización
    if (is_array($d) && isset($d[0]['name']) && (isset($d[0]['value']) || array_key_exists('value', $d[0]))) {
        $d_assoc = [];
        foreach ($d as $item) {
            if (isset($item['name'])) {
                $val = $item['value'];
                if (substr($item['name'], -2) === '[]') {
                    $key = substr($item['name'], 0, -2);
                    $d_assoc[$key][] = $val;
                } else {
                    $d_assoc[$item['name']] = $val;
                }
            }
        }
        $d = $d_assoc;
    }

    // Emisor dinámico (cero hardcodeo)
    $emisor = function_exists('_mspObtenerEmisor') ? _mspObtenerEmisor() : [
        'institucion'=>'', 'unidad'=>'', 'ruc'=>'', 'razon_social'=>'',
        'direccion'=>'', 'telefono'=>'', 'email'=>'',
        'profesional'=>'', 'especialidad'=>'', 'senescyt'=>'',
    ];

    $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
    $pdf->SetCreator('Sistema Médico HC');
    $pdf->SetAuthor($emisor['institucion'] ?: 'Profesional médico');
    $pdf->SetTitle('PROTOCOLO QUIRÚRGICO DE CIRUGÍA BUCAL');
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);
    $pdf->SetMargins(15, 12, 15);
    $pdf->SetAutoPageBreak(TRUE, 10);
    $pdf->SetFont('helvetica', '', 9);
    $pdf->AddPage();

    // HEADER (sin logo MSP, datos dinámicos del emisor)
    $pdf->SetFont('helvetica', 'B', 11);
    $pdf->SetXY(15, 12);
    $cabTit = trim($emisor['institucion'] ?: $emisor['razon_social']);
    $pdf->Cell(180, 5, strtoupper($cabTit) . ($emisor['ruc'] ? '   ·   RUC ' . $emisor['ruc'] : ''), 0, 1, 'L');
    $pdf->SetFont('helvetica', '', 7.5);
    $pdf->SetXY(15, 17);
    $pdf->Cell(180, 4,
        ($emisor['direccion'] ?: '')
        . ($emisor['telefono'] ? '  ·  Tel. ' . $emisor['telefono'] : '')
        . ($emisor['email'] ? '  ·  ' . $emisor['email'] : ''),
        0, 1, 'L');
    $pdf->SetFont('helvetica', 'B', 13);
    $pdf->SetXY(15, 24);
    $pdf->SetFillColor(204, 204, 255);
    $pdf->Cell(180, 8, 'PROTOCOLO QUIRÚRGICO DE CIRUGÍA BUCAL', 1, 1, 'C', 1);
    $pdf->Ln(4);

    // DATOS PACIENTE
    $pdf->SetFillColor(240, 240, 240);
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(30, 6, 'PACIENTE:', 1, 0, 'L', 1);
    $pdf->SetFont('helvetica', '', 9);
    $pdf->Cell(100, 6, strtoupper($p['apaterno'] . ' ' . $p['amaterno'] . ' ' . $p['nombre']), 1, 0, 'L');
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(25, 6, 'H.C:', 1, 0, 'L', 1);
    $pdf->SetFont('helvetica', '', 9);
    $pdf->Cell(25, 6, $p['num_documento'], 1, 1, 'L');
    $pdf->Ln(4);

    // SECCION 1: DIAGNOSTICO
    $pdf->SetFillColor(55, 71, 79); // Dark Slate Blue
    $pdf->SetTextColor(255, 255, 255);
    $pdf->SetFont('helvetica', 'B', 10);
    $pdf->Cell(0, 7, ' 1. DIAGNÓSTICO PRE-OPERATORIO', 1, 1, 'L', 1);
    $pdf->SetTextColor(0);
    $pdf->SetFont('helvetica', '', 9);
    $pdf->MultiCell(0, 10, $d['qx_diagnostico'] ?? '', 1, 'L');
    $pdf->Ln(4);

    // SECCION 2: LABORATORIO Y RIESGO
    $pdf->SetFillColor(55, 71, 79);
    $pdf->SetTextColor(255, 255, 255);
    $pdf->SetFont('helvetica', 'B', 10);
    $pdf->Cell(0, 7, ' 2. EVALUACIÓN Y RIESGO', 1, 1, 'L', 1);
    $pdf->SetTextColor(0);

    // Tabla Laboratorio
    $pdf->SetFillColor(230, 230, 230);
    $pdf->SetFont('helvetica', 'B', 8);
    $pdf->Cell(45, 6, 'T. COAGULACIÓN', 1, 0, 'C', 1);
    $pdf->Cell(45, 6, 'T. SANGRÍA', 1, 0, 'C', 1);
    $pdf->Cell(45, 6, 'INR / TP', 1, 0, 'C', 1);
    $pdf->Cell(45, 6, 'GLUCOSA', 1, 1, 'C', 1);

    $pdf->SetFont('helvetica', '', 9);
    $pdf->Cell(45, 6, ($d['qx_coagulacion'] ?? '-'), 1, 0, 'C');
    $pdf->Cell(45, 6, ($d['qx_sangria'] ?? '-'), 1, 0, 'C');
    $pdf->Cell(45, 6, ($d['qx_inr'] ?? '-'), 1, 0, 'C');
    $pdf->Cell(45, 6, ($d['qx_glucosa'] ?? '-'), 1, 1, 'C');

    // Riesgos
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->SetFillColor(255, 235, 238); // Red tint
    $pdf->Cell(40, 6, 'ALERGIAS/RIESGOS:', 1, 0, 'L', 1);
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->SetTextColor(200, 0, 0);
    $pdf->Cell(140, 6, ($d['qx_riesgos'] ?? 'NINGUNO'), 1, 1, 'L');
    $pdf->SetTextColor(0);
    $pdf->Ln(4);

    // SECCION 3: ACTO QUIRURGICO
    $pdf->SetFillColor(55, 71, 79);
    $pdf->SetTextColor(255, 255, 255);
    $pdf->SetFont('helvetica', 'B', 10);
    $pdf->Cell(0, 7, ' 3. DETALLES DEL PROCEDIMIENTO', 1, 1, 'L', 1);
    $pdf->SetTextColor(0);

    // Subheader Anestesia
    $pdf->SetFillColor(240, 240, 240);
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(0, 6, 'ANESTESIA', 1, 1, 'L', 1);

    $pdf->SetFont('helvetica', '', 9);
    $textAnes = "TIPO: " . ($d['qx_anestesia_tipo'] ?? '-') . " | TÉCNICA: " . ($d['qx_anestesia_tecnica'] ?? '-') . " | CANTIDAD: " . ($d['qx_anestesia_cantidad'] ?? '-') . " carpules";
    $pdf->Cell(0, 6, $textAnes, 1, 1, 'L');

    // Subheader Detalles Qx
    $pdf->SetFillColor(240, 240, 240);
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(0, 6, 'TÉCNICA QUIRÚRGICA', 1, 1, 'L', 1);

    $pdf->SetFont('helvetica', '', 8);
    // Tabla Detalles 
    $pdf->Cell(30, 6, 'INCISIÓN:', 1, 0, 'L');
    $pdf->Cell(60, 6, ($d['qx_incision'] ?? '-'), 1, 0, 'L');
    $pdf->Cell(30, 6, 'COLGAJO:', 1, 0, 'L');
    $pdf->Cell(60, 6, ($d['qx_colgajo'] ?? '-'), 1, 1, 'L');

    $pdf->Cell(30, 6, 'OSTEOTOMÍA:', 1, 0, 'L');
    $pdf->Cell(60, 6, ($d['qx_osteotomia'] ?? 'NO'), 1, 0, 'L');
    $pdf->Cell(30, 6, 'ODONTOSECCIÓN:', 1, 0, 'L');
    $pdf->Cell(60, 6, ($d['qx_odontoseccion'] ?? 'NO'), 1, 1, 'L');

    $pdf->Ln(2);
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(0, 6, 'DESCRIPCIÓN DEL PROCEDIMIENTO:', 0, 1, 'L');
    $pdf->SetFont('helvetica', '', 9);
    $pdf->MultiCell(0, 30, $d['qx_procedimiento'] ?? '', 1, 'L');
    $pdf->Ln(2);

    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(20, 6, 'SUTURA:', 1, 0, 'L');
    $pdf->SetFont('helvetica', '', 9);
    $pdf->Cell(60, 6, ($d['qx_sutura_tipo'] ?? '-'), 1, 0, 'L');
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(20, 6, 'PUNTOS:', 1, 0, 'L');
    $pdf->SetFont('helvetica', '', 9);
    $pdf->Cell(20, 6, ($d['qx_sutura_puntos'] ?? '0'), 1, 0, 'L');
    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(30, 6, 'COMPLICACIONES:', 1, 0, 'L');
    $pdf->SetFont('helvetica', '', 8);
    $pdf->Cell(30, 6, substr(($d['qx_complicaciones'] ?? 'Ninguna'), 0, 20), 1, 1, 'L');

    $pdf->Ln(4);

    // SECCION 4: POST-OPERATORIO
    $pdf->SetFillColor(55, 71, 79);
    $pdf->SetTextColor(255, 255, 255);
    $pdf->SetFont('helvetica', 'B', 10);
    $pdf->Cell(0, 7, ' 4. INDICACIONES POST-OPERATORIAS', 1, 1, 'L', 1);
    $pdf->SetTextColor(0);

    $pdf->SetFont('helvetica', 'B', 9);
    $pdf->Cell(90, 6, 'FARMACOTERAPIA (RECETA):', 0, 0, 'L');
    $pdf->Cell(90, 6, 'INDICACIONES AL PACIENTE:', 0, 1, 'L');

    $pdf->SetFont('helvetica', '', 8);
    $yBase = $pdf->GetY();
    $pdf->MultiCell(90, 30, $d['qx_receta'] ?? '', 1, 'L');
    $pdf->SetXY(105, $yBase);
    $pdf->MultiCell(90, 30, $d['qx_indicaciones'] ?? '', 1, 'L');

    $pdf->Ln(15);

    // FIRMAS
    // FIRMAS ELIMINADAS POR SOLICITUD
    /*
    $pdf->Cell(90, 0, '__________________________', 0, 0, 'C');
    $pdf->Cell(90, 0, '__________________________', 0, 1, 'C');
    $pdf->Cell(90, 5, 'CIRUJANO', 0, 0, 'C');
    $pdf->Cell(90, 5, 'PACIENTE', 0, 1, 'C');
    */

    // Output
    // Pie con QR de firma electrónica simulada (patrón maestro MSP)
    _pdfPieFirmaQRSimple($pdf, $emisor, $idatencion, 'CIRUGÍA BUCAL · Protocolo Quirúrgico');

    return salvarPDF($pdf, 'CIRUGIA', $idatencion);
}
?>