Questa è una vecchia versione del documento!
<!DOCTYPE html> <html lang=“it”> <head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Control Chart - TIN ASST Lecco (Centro 297)</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); margin: 0; padding: 20px; min-height: 100vh; } .container { max-width: 1400px; margin: 0 auto; background: rgba(255, 255, 255, 0.95); border-radius: 20px; padding: 30px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); backdrop-filter: blur(10px); } .header { text-align: center; margin-bottom: 40px; color: #2c3e50; } .header h1 { font-size: 2.5em; margin: 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); background: linear-gradient(45deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .header p { font-size: 1.2em; margin: 10px 0 0 0; color: #7f8c8d; } .charts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(600px, 1fr)); gap: 30px; margin-top: 30px; } .chart-container { background: white; border-radius: 15px; padding: 25px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease, box-shadow 0.3s ease; border: 2px solid transparent; background-clip: padding-box; } .chart-container:hover { transform: translateY(-5px); box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15); border-color: #667eea; } .chart-title { font-size: 1.3em; font-weight: bold; text-align: center; margin-bottom: 20px; color: #2c3e50; padding-bottom: 10px; border-bottom: 3px solid #ecf0f1; } .current-value { text-align: center; font-size: 2em; font-weight: bold; margin-bottom: 15px; padding: 10px; border-radius: 10px; background: linear-gradient(45deg, #f8f9fa, #e9ecef); display: none; } .value-good { color: #27ae60; background: linear-gradient(45deg, #d4edda, #c3e6cb); } .value-warning { color: #f39c12; background: linear-gradient(45deg, #fff3cd, #ffeaa7); } .value-danger { color: #e74c3c; background: linear-gradient(45deg, #f8d7da, #f5c6cb); } .chart-canvas { height: 300px !important; } .legend { display: flex; justify-content: center; gap: 20px; margin-top: 15px; flex-wrap: wrap; } .legend-item { display: flex; align-items: center; gap: 8px; font-size: 0.9em; padding: 5px 10px; border-radius: 20px; background: #f8f9fa; } .legend-color { width: 16px; height: 16px; border-radius: 50%; } </style>
</head> <body>
<div class="container"> <div class="header"> <h1>Control Chart - KPI Clinici</h1> <p>TIN ASST Lecco (Centro 297) - Periodo 2018-2024</p> </div> <div class="charts-grid"> <div class="chart-container"> <div class="chart-title">Mortalità</div> <canvas id="mortalityChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #e74c3c;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Morte o Morbidità</div> <canvas id="deathOrMorbidityChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #8e44ad;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Infezioni Tardive</div> <canvas id="anyLateInfectionChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #3498db;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Enterocolite Necrotizzante</div> <canvas id="necrotizingEnterocolitis" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #e67e22;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Malattia Polmonare Cronica</div> <canvas id="chronicLungDiseaseChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #9b59b6;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Pneumotorace</div> <canvas id="pneumothoraxChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #1abc9c;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Emorragia Intraventricolare Grave</div> <canvas id="severeIVHChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #e74c3c;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Leucomalacia Periventricolare Cistica</div> <canvas id="cysticPVLChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #34495e;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Retinopatia del Prematuro Grave</div> <canvas id="severeROPChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #2ecc71;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div>
<div class="chart-container"> <div class="chart-title">Latte Materno</div> <canvas id="anyHumanMilkChart" class="chart-canvas"></canvas> <div class="legend"> <div class="legend-item"> <div class="legend-color" style="background-color: #f1c40f;"></div> <span>Valori</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #f39c12;"></div> <span>Limite Superiore (Q3)</span> </div> <div class="legend-item"> <div class="legend-color" style="background-color: #27ae60;"></div> <span>Limite Inferiore (Q1)</span> </div> </div> </div> </div> </div>
<script> // Dati per i grafici const data = { years: [2018, 2019, 2020, 2021, 2022, 2023, 2024], mortality: { values: [0.0, 3.8, 6.1, 0.0, 10.3, 6.9, 2.9], q1: 5.7, q3: 14.8 }, deathOrMorbidity: { values: [19.4, 26.9, 27.3, 30.8, 34.5, 41.4, 35.3], q1: 27.3, q3: 50.0 }, anyLateInfection: { values: [13.9, 15.4, 18.8, 15.4, 19.4, 11.1, 5.9], q1: 2.9, q3: 13.7 }, necrotizingEnterocolitis: { values: [5.6, 3.7, 0.0, 0.0, 15.6, 7.1, 14.7], q1: 0.0, q3: 6.7 }, chronicLungDisease: { values: [6.7, 15.8, 17.2, 19.0, 20.0, 27.3, 11.1], q1: 10.5, q3: 35.3 }, pneumothorax: { values: [0.0, 0.0, 0.0, 7.7, 0.0, 0.0, 11.8], q1: 0.0, q3: 5.6 }, severeIVH: { values: [2.9, 7.4, 3.1, 3.8, 3.3, 0.0, 5.9], q1: 0.0, q3: 10.0 }, cysticPVL: { values: [0.0, 3.7, 0.0, 0.0, 0.0, 7.7, 0.0], q1: 0.0, q3: 3.3 }, severeROP: { values: [2.8, 0.0, 3.7, 0.0, 0.0, 0.0, 0.0], q1: 0.0, q3: 7.1 }, anyHumanMilk: { values: [66.7, 77.3, 71.4, 61.5, 52.0, 52.0, 61.3], q1: 47.8, q3: 78.9 } };
// Script corretto senza riferimenti ai valori eliminati
// Funzione per creare i grafici function createChart(canvasId, chartData, color, title) { const ctx = document.getElementById(canvasId).getContext('2d'); const upperLimit = Array(data.years.length).fill(chartData.q3); const lowerLimit = Array(data.years.length).fill(chartData.q1); new Chart(ctx, { type: 'line', data: { labels: data.years, datasets: [ { label: title, data: chartData.values, borderColor: color, backgroundColor: color + '20', borderWidth: 3, pointBackgroundColor: color, pointBorderColor: '#fff', pointBorderWidth: 2, pointRadius: 6, pointHoverRadius: 8, fill: false, tension: 0.4 }, { label: 'Limite Superiore (Q3)', data: upperLimit, borderColor: '#f39c12', backgroundColor: 'transparent', borderWidth: 2, borderDash: [5, 5], pointRadius: 0, fill: false }, { label: 'Limite Inferiore (Q1)', data: lowerLimit, borderColor: '#27ae60', backgroundColor: 'transparent', borderWidth: 2, borderDash: [5, 5], pointRadius: 0, fill: false } ] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false }, tooltip: { backgroundColor: 'rgba(0, 0, 0, 0.8)', titleColor: 'white', bodyColor: 'white', borderColor: color, borderWidth: 1, cornerRadius: 8, callbacks: { label: function(context) { return context.dataset.label + ': ' + context.parsed.y.toFixed(1) + '%'; } } } }, scales: { x: { grid: { color: 'rgba(0, 0, 0, 0.1)', drawBorder: false }, ticks: { color: '#666', font: { size: 12, weight: 'bold' } } }, y: { beginAtZero: true, grid: { color: 'rgba(0, 0, 0, 0.1)', drawBorder: false }, ticks: { color: '#666', font: { size: 12 }, callback: function(value) { return value + '%'; } } } }, elements: { line: { tension: 0.4 } }, interaction: { intersect: false, mode: 'index' } } }); }
// Creazione di tutti i grafici createChart('mortalityChart', data.mortality, '#e74c3c', 'Mortalità'); createChart('deathOrMorbidityChart', data.deathOrMorbidity, '#8e44ad', 'Morte o Morbidità'); createChart('anyLateInfectionChart', data.anyLateInfection, '#3498db', 'Infezioni Tardive'); createChart('necrotizingEnterocolitis', data.necrotizingEnterocolitis, '#e67e22', 'Enterocolite Necrotizzante'); createChart('chronicLungDiseaseChart', data.chronicLungDisease, '#9b59b6', 'Malattia Polmonare Cronica'); createChart('pneumothoraxChart', data.pneumothorax, '#1abc9c', 'Pneumotorace'); createChart('severeIVHChart', data.severeIVH, '#e74c3c', 'Emorragia Intraventricolare Grave'); createChart('cysticPVLChart', data.cysticPVL, '#34495e', 'Leucomalacia Periventricolare Cistica'); createChart('severeROPChart', data.severeROP, '#2ecc71', 'Retinopatia del Prematuro Grave'); createChart('anyHumanMilkChart', data.anyHumanMilk, '#f1c40f', 'Latte Materno'); </script>
</body> </html>