ArtPruebaHTMK

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Registros de Pacientes</title>
    <!-- Incluye Bootstrap y DataTables con el tema de Bootstrap -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/dataTables.bootstrap4.min.css">
    <style>
        /* Estilo personalizado */
        body {
            padding: 0;
            margin: 0;
            background-color: #ffffff; /* Fondo blanco */
        }
        .container {
            max-width: 100%;
            padding: 20px;
        }
        .card {
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sombra para darle un efecto moderno */
        }
        .card-header {
            background-color: #0099FF; /* Color azul para el encabezado de la tarjeta */
            color: white;
            border-top-left-radius: 10px;
            border-top-right-radius: 10px;
        }
        .legend-container {
            display: flex;
            justify-content: flex-start;
            margin-bottom: 15px;
        }
        .legend-item {
            display: flex;
            align-items: center;
            margin-right: 20px;
        }
        .legend-color {
            width: 20px;
            height: 20px;
            border-radius: 3px;
            margin-right: 10px;
        }
        .red-color {
            background-color: #ff1c31;
        }
        .orange-color {
            background-color: #fff3cd;
        }
        /* Ajuste de ancho fijo para la columna "Usuario" */
        .usuario-columna {
            width: 300px; /* Ancho fijo para la columna usuario */
            white-space: nowrap; /* Evitar saltos de línea */
            overflow: hidden; /* Ocultar texto desbordado */
            text-overflow: ellipsis; /* Mostrar "..." si el texto es muy largo */
        }
        /* Ajuste de la columna "CausaExterna" si también lo deseas */
        .causaexterna-columna {
            width: 200px; /* Ancho fijo para la columna causa externa */
             white-space: nowrap; /* Evitar saltos de línea */
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .columna-pequena {
            width: 20px !important; /* Ancho reducido para las columnas pequeñas */
        }
        table {
            table-layout: auto; /* Ajuste automático de columnas */
            width: 100%;
        }
        /* Estilo para la fila en rojo */
        .highlight-red {
            background-color: #ff1c31 !important; /* Fondo rojo */
            color: white !important; /* Texto blanco */
        }
        /* Estilo para la fila en naranja */
        .highlight-orange {
            background-color: #fff3cd !important; /* Fondo naranja claro */
            color: #856404 !important; /* Texto naranja oscuro */
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/dataTables.bootstrap4.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script>
</head>
<body>
    <div class="container mt-5">
        <div class="card">
            <div class="card-header text-center">
                <h4 class="mb-0">Registros de Pacientes</h4>
            </div>
            <div class="card-body">
                
                <!-- Leyendas de Colores -->
                <div class="legend-container">
                    <div class="legend-item">
                        <div class="legend-color red-color"></div>
                        <span>Paciente sin Registro de Urgencia</span>
                    </div>
                    <div class="legend-item">
                        <div class="legend-color orange-color"></div>
                        <span>Paciente con más de 6 Horas</span>
                    </div>
                </div>

                <!-- Tabla de Registros -->
                <div class="table-responsive">
                    <table id="registrosTable" class="table table-striped table-bordered" style="width:100%">
                        <thead>
                            <tr id="headerRow">
                                <!-- El encabezado se generará dinámicamente -->
                            </tr>
                        </thead>
                        <tbody>
                            <?php
                            // Conexión a la base de datos y ejecución del SP
                            include 'conexion.php';

                            $sql = "EXEC MWCLV.RegistrosPacientes";
                            $stmt = sqlsrv_query($conn, $sql);

                            if ($stmt === false) {
                                die(print_r(sqlsrv_errors(), true));
                            }

                            // Obtener la primera fila para generar los encabezados de las columnas
                            $firstRow = true;
                            $columnIndex = 0;
                            while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
                                // Generar el encabezado dinámico si es la primera fila
                                if ($firstRow) {
                                    foreach ($row as $column => $value) {
                                        $class = $columnIndex == 1 ? 'usuario-columna' : ($columnIndex == 5 ? 'causaexterna-columna' : ($columnIndex >= 5 ? 'columna-pequena' : ''));
                                        $headerText = $columnIndex >= 5 ? substr(htmlspecialchars((string)$column), 0, 3) : htmlspecialchars((string)$column);
                                        $fullHeaderText = htmlspecialchars((string)$column); // El nombre completo para el tooltip
                                        echo '<script>$("#headerRow").append("<th class=\'' . $class . '\' title=\'' . $fullHeaderText . '\'>' . $headerText . '</th>");</script>';
                                        $columnIndex++;
                                    }
                                    $firstRow = false;
                                }

                                // Generar las filas de la tabla con los datos
                                echo "<tr>";
                                foreach ($row as $column => $value) {
                                    $class = $columnIndex == 1 ? 'usuario-columna' : ($columnIndex == 5 ? 'causaexterna-columna' : ($columnIndex >= 5 ? 'columna-pequena' : ''));
                                    if ($value instanceof DateTime) {
                                        $formattedValue = $value->format('Y-m-d H:i:s');
                                    } elseif (is_object($value)) {
                                        $formattedValue = serialize($value);
                                    } elseif (is_array($value)) {
                                        $formattedValue = json_encode($value);
                                    } else {
                                        $formattedValue = (string)$value;
                                    }
                                    echo "<td class='$class' data-value='$formattedValue'>" . htmlspecialchars($formattedValue) . "</td>";
                                }
                                echo "</tr>";
                            }

                            sqlsrv_free_stmt($stmt);
                            sqlsrv_close($conn);
                            ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>

    <!-- Inicializar DataTables con configuración personalizada y aplicar el resaltado condicional -->
    <script>
        $(document).ready(function() {
            $('#registrosTable').DataTable({
                "paging": true,
                "lengthChange": true,
                "searching": true,
                "ordering": true,
                "info": true,
                "autoWidth": false,
                "responsive": true,
                "pageLength": 30
            });

            // Aplicar el resaltado condicional
            $('#registrosTable tbody tr').each(function() {
                var row = $(this);
                var fechaHora = new Date(row.find('td:eq(3)').data('value')); // Obtener la fecha y hora (columna 4, índice 3)
                var registroClinico = parseInt(row.find('td:eq(7)').text()); // Obtener el valor de "Registro Clínico de Urgencias" (columna 6, índice 5)
                var estadoCaso = row.find('td:eq(5)').text(); // Obtener el valor de "Estado Caso" (columna 7, índice 6)

                // Verificar si la diferencia de tiempo es mayor a 15 minutos y el valor es cero
                var ahora = new Date();
                var diferenciaMinutos = (ahora - fechaHora) / (1000 * 60);
                var diferenciaHoras = diferenciaMinutos / 60; // Convertimos minutos a horas

                // Condición 1: Resaltar en rojo si la diferencia es mayor a 15 minutos y "Registro Clínico de Urgencias" es cero
                if (diferenciaMinutos > 15 && registroClinico === 0) {
                    row.addClass('highlight-red');
                }
                
                // Condición 2: Resaltar en naranja si la diferencia es mayor a 6 horas y "Estado Caso" es "Activo"
                if (diferenciaHoras > 6 && estadoCaso.trim().toLowerCase() === 'activo') {
                    row.addClass('highlight-orange');
                }
            });
        });
    </script>
</body>
</html>