<?php
require_once "conexion.php";


class ModeloReportes {

       /*=============================================
    DETALLE PARA TABLA Y EXCEL (RF15)
    =============================================*/
        static public function mdlMostrarDetalleCompleto($fechaInicial, $fechaFinal) {
            // Usamos GROUP_CONCAT para unir los diagnósticos en un solo string
            $sql = "SELECT 
                        i.id_ingreso, 
                        i.fecha_ingreso, 
                        p.nombres AS paciente, 
                        p.apellidos AS apellido, 
                        p.dni, 
                        p.id_paciente, 
                        p.codigo_hc, 
                        GROUP_CONCAT(DISTINCT d.codigo_cie10 SEPARATOR ', ') AS lista_diagnosticos, 
                        t.medicamentos, 
                        i.destino_final 
                    FROM ingresoemergencia i 
                    INNER JOIN paciente p ON i.id_paciente = p.id_paciente
                    LEFT JOIN consultamedica c ON i.id_ingreso = c.id_ingreso
                    LEFT JOIN diagnostico d ON c.id_consulta = d.id_consulta
                    LEFT JOIN tratamiento t ON d.id_diagnostico = t.id_diagnostico";

            if($fechaInicial != null){
                $sql .= " WHERE DATE(i.fecha_ingreso) BETWEEN :f1 AND :f2";
            }

            // AGRUPAMOS por el ID de ingreso para eliminar la duplicidad
            $sql .= " GROUP BY i.id_ingreso";
            $sql .= " ORDER BY i.fecha_ingreso DESC";

            $stmt = Conexion::conectar()->prepare($sql);
            if($fechaInicial != null){
                $stmt->bindParam(":f1", $fechaInicial, PDO::PARAM_STR);
                $stmt->bindParam(":f2", $fechaFinal, PDO::PARAM_STR);
            }
            $stmt->execute();
            return $stmt->fetchAll();
        }

    /*=============================================
    DATOS PARA GRÁFICO DE BARRAS (RF14)
    =============================================*/
    static public function mdlSumaTotalAtenciones($fechaInicial, $fechaFinal) {
        $sql = "SELECT DATE(fecha_ingreso) as fecha, COUNT(*) as total FROM ingresoemergencia";
        
        if($fechaInicial != null){
            $sql .= " WHERE DATE(fecha_ingreso) BETWEEN :f1 AND :f2";
        }
        $sql .= " GROUP BY DATE(fecha_ingreso) ORDER BY fecha ASC";

        $stmt = Conexion::conectar()->prepare($sql);
        if($fechaInicial != null){
            $stmt->bindParam(":f1", $fechaInicial, PDO::PARAM_STR);
            $stmt->bindParam(":f2", $fechaFinal, PDO::PARAM_STR);
        }
        $stmt->execute();
        return $stmt->fetchAll();
    }

    /*=============================================
    DATOS PARA GRÁFICO DE DONA (RF14)
    =============================================*/
    static public function mdlTopDiagnosticos($fechaInicial, $fechaFinal) {
        $sql = "SELECT d.codigo_cie10, COUNT(d.codigo_cie10) as total 
                FROM diagnostico d
                INNER JOIN consultamedica c ON d.id_consulta = c.id_consulta
                INNER JOIN ingresoemergencia i ON c.id_ingreso = i.id_ingreso";

        if($fechaInicial != null){
            $sql .= " WHERE DATE(i.fecha_ingreso) BETWEEN :f1 AND :f2";
        }
        $sql .= " GROUP BY d.codigo_cie10 ORDER BY total DESC LIMIT 5";

        $stmt = Conexion::conectar()->prepare($sql);
        if($fechaInicial != null){
            $stmt->bindParam(":f1", $fechaInicial, PDO::PARAM_STR);
            $stmt->bindParam(":f2", $fechaFinal, PDO::PARAM_STR);
        }
        $stmt->execute();
        return $stmt->fetchAll();
    }


}