<?php
// Incluimos la conexión a la base de datos
require "../config/Conexion.php";

class LabRx
{
    public function __construct() {}

    // ─────────────────────────────────────────────
    // Enviar una orden al área (LABORATORIO o RX)
    // ─────────────────────────────────────────────
    public function enviarArea($idsolicitud, $area)
    {
        global $conexion;
        $idsolicitud = intval($idsolicitud);
        $area = mysqli_real_escape_string($conexion, $area);
        $sql = "UPDATE solicitud_examen 
                SET area_destino='$area', estado_area='PENDIENTE'
                WHERE idsolicitud='$idsolicitud'";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Listar solicitudes pendientes por área
    // ─────────────────────────────────────────────
    public function listarPendientesPorArea($area)
    {
        global $conexion;
        $area = mysqli_real_escape_string($conexion, $area);
        $sql = "SELECT 
                    s.idsolicitud,
                    s.tipo,
                    s.fecha_emision,
                    s.fecha_registro,
                    s.estado_area,
                    s.area_destino,
                    s.ruta_pdf_firmado,
                    CONCAT(p.apaterno, ' ', p.amaterno, ' ', p.nombre) AS paciente,
                    p.num_documento,
                    p.telefono,
                    pu.nombre AS medico_nombre,
                    pu.apaterno AS medico_apaterno,
                    pu.amaterno AS medico_amaterno
                FROM solicitud_examen s
                INNER JOIN persona p ON s.idpersona = p.idpersona
                LEFT JOIN persona pu ON s.idempleado = pu.idpersona
                WHERE s.area_destino = '$area'
                  AND s.estado_area IN ('PENDIENTE','EN_PROCESO')
                ORDER BY s.fecha_registro ASC";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Listar solicitudes completadas por área
    // ─────────────────────────────────────────────
    public function listarCompletadosPorArea($area)
    {
        global $conexion;
        $area = mysqli_real_escape_string($conexion, $area);
        $sql = "SELECT 
                    s.idsolicitud,
                    s.tipo,
                    s.fecha_emision,
                    s.fecha_registro,
                    s.estado_area,
                    s.ruta_resultado,
                    s.tipo_resultado,
                    s.observacion_lab,
                    s.fecha_resultado,
                    s.resultado_visto,
                    CONCAT(p.apaterno, ' ', p.amaterno, ' ', p.nombre) AS paciente,
                    p.num_documento,
                    pu.nombre AS medico_nombre,
                    pu.apaterno AS medico_apaterno
                FROM solicitud_examen s
                INNER JOIN persona p ON s.idpersona = p.idpersona
                LEFT JOIN persona pu ON s.idempleado = pu.idpersona
                WHERE s.area_destino = '$area'
                  AND s.estado_area = 'COMPLETADO'
                ORDER BY s.fecha_resultado DESC";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Marcar solicitud en proceso
    // ─────────────────────────────────────────────
    public function marcarEnProceso($idsolicitud, $idusuario)
    {
        global $conexion;
        $idsolicitud = intval($idsolicitud);
        $idusuario   = intval($idusuario);
        $sql = "UPDATE solicitud_examen 
                SET estado_area='EN_PROCESO', idusuario_area='$idusuario'
                WHERE idsolicitud='$idsolicitud'";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Subir resultado (ruta archivo + observación)
    // ─────────────────────────────────────────────
    public function subirResultado($idsolicitud, $ruta, $tipo, $observacion, $idusuario)
    {
        global $conexion;
        $idsolicitud = intval($idsolicitud);
        $idusuario   = intval($idusuario);
        $ruta        = mysqli_real_escape_string($conexion, $ruta);
        $tipo        = mysqli_real_escape_string($conexion, $tipo);
        $observacion = mysqli_real_escape_string($conexion, $observacion);
        $sql = "UPDATE solicitud_examen 
                SET estado_area    = 'COMPLETADO',
                    ruta_resultado = '$ruta',
                    tipo_resultado = '$tipo',
                    observacion_lab= '$observacion',
                    fecha_resultado= NOW(),
                    idusuario_area = '$idusuario',
                    resultado_visto= 0
                WHERE idsolicitud = '$idsolicitud'";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Marcar resultado como visto por el médico
    // ─────────────────────────────────────────────
    public function marcarVisto($idsolicitud)
    {
        $idsolicitud = intval($idsolicitud);
        $sql = "UPDATE solicitud_examen 
                SET resultado_visto=1 
                WHERE idsolicitud='$idsolicitud'";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Contar resultados nuevos (no vistos) para el médico
    // ─────────────────────────────────────────────
    public function contarNuevosResultados($idempleado)
    {
        $idempleado = intval($idempleado);
        $sql = "SELECT COUNT(*) as total 
                FROM solicitud_examen 
                WHERE idempleado='$idempleado'
                  AND estado_area='COMPLETADO'
                  AND resultado_visto=0";
        $row = ejecutarConsultaSimpleFila($sql);
        return $row ? intval($row['total']) : 0;
    }

    // ─────────────────────────────────────────────
    // Listar historial completo para el médico
    // (todas sus solicitudes con estado de resultado)
    // ─────────────────────────────────────────────
    public function listarHistorialMedico($idempleado)
    {
        $idempleado = intval($idempleado);
        $sql = "SELECT 
                    s.idsolicitud,
                    s.tipo,
                    s.fecha_emision,
                    s.fecha_registro,
                    s.firmado,
                    s.estado,
                    s.ruta_pdf_firmado,
                    s.area_destino,
                    s.estado_area,
                    s.ruta_resultado,
                    s.tipo_resultado,
                    s.observacion_lab,
                    s.fecha_resultado,
                    s.resultado_visto,
                    CONCAT(p.apaterno, ' ', p.amaterno, ' ', p.nombre) AS paciente,
                    p.num_documento
                FROM solicitud_examen s
                INNER JOIN persona p ON s.idpersona = p.idpersona
                WHERE s.idempleado = '$idempleado'
                ORDER BY s.fecha_registro DESC";
        return ejecutarConsulta($sql);
    }

    // ─────────────────────────────────────────────
    // Obtener detalle de una solicitud
    // ─────────────────────────────────────────────
    public function getDetalle($idsolicitud)
    {
        $idsolicitud = intval($idsolicitud);
        $sql = "SELECT * FROM solicitud_examen WHERE idsolicitud='$idsolicitud'";
        return ejecutarConsultaSimpleFila($sql);
    }
}
?>
