HH/kpi's_references/KPI7_Unactivated.html
2026-02-22 08:35:53 +03:00

290 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PX360 · KPI-7 UnActivated Filled Complaints Rate</title>
<!-- Tailwind + lucide + apexcharts + html2pdf (consistent theme) -->
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/lucide@latest"></script>
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
<script>
tailwind.config = {
theme: { extend: { colors: { navy: '#005696', blue: '#007bbd', light: '#f8fafc', slate: '#64748b' } } }
}
</script>
<style>
body { font-family: 'Segoe UI', Tahoma, sans-serif; background-color: #f1f5f9; }
.excel-border { border: 1px solid #cbd5e1; }
.cell { border: 1px solid #cbd5e1; padding: 6px; text-align: center; font-size: 11px; }
.table-header { background-color: #eef6fb; font-weight: bold; color: #005696; }
@media print { .no-print { display: none !important; } }
</style>
</head>
<body class="p-4 md:p-8">
<div id="report" class="max-w-6xl mx-auto bg-white p-10 shadow-2xl border excel-border">
<!-- ===== HEADER navy/blue (PX360 identity) ===== -->
<div class="flex items-center justify-between border-b-4 border-navy pb-6 mb-8">
<div class="flex items-center gap-4">
<div class="bg-navy p-3 rounded-2xl shadow-lg">
<i data-lucide="alert-octagon" class="text-white w-10 h-10"></i>
</div>
<div>
<h1 class="text-3xl font-black text-navy tracking-tighter uppercase">PX360</h1>
<p class="text-[10px] font-bold text-blue tracking-[0.2em] uppercase">UnActivated Filled Complaints</p>
</div>
</div>
<div class="text-right">
<p class="text-navy font-black text-sm uppercase">KPI - 7</p>
<p class="text-slate text-xs italic">Target 0% · Threshold 5%</p>
</div>
</div>
<div class="text-center mb-8">
<h2 class="text-lg font-black text-navy uppercase underline underline-offset-4">UnActivated Filled Complaints Rate 2025</h2>
</div>
<!-- ===== MAIN TABLE exact figures from KPI-7 PDF ===== -->
<table class="w-full border-collapse mb-8">
<tr class="table-header cell">
<td class="cell">No.</td>
<td class="cell">Perf. Indicator ID</td>
<td class="cell w-64">Indicator Title</td>
<td class="cell">Target</td>
<td class="cell">Threshold</td>
<td class="cell">Numerator / Denominator</td>
<td class="cell">Jan</td><td class="cell">Feb</td><td class="cell">Mar</td><td class="cell">Apr</td>
<td class="cell">May</td><td class="cell">Jun</td><td class="cell">Jul</td><td class="cell">Aug</td>
<td class="cell">Sep</td><td class="cell">Oct</td><td class="cell">Nov</td><td class="cell bg-navy text-white">TOTAL</td>
</tr>
<!-- row 1: unactivated filled complaints (numerator) -->
<tr>
<td rowspan="3" class="cell font-bold text-blue">7</td>
<td rowspan="3" class="cell font-bold text-navy"></td>
<td rowspan="3" class="cell text-left font-bold text-navy px-2 uppercase">UnActivated Filled Complaints Rate</td>
<td rowspan="3" class="cell">0%</td>
<td rowspan="3" class="cell">5%</td>
<td class="cell text-left bg-slate-50">Unactivated filled requests</td>
<td class="cell">10</td><td class="cell">20</td><td class="cell">16</td><td class="cell">15</td><td class="cell">4</td><td class="cell">15</td>
<td class="cell">21</td><td class="cell">29</td><td class="cell">14</td><td class="cell">20</td><td class="cell">19</td><td class="cell font-bold">183</td>
</tr>
<!-- row 2: total complaints request received -->
<tr>
<td class="cell text-left bg-slate-50">Total complaints received</td>
<td class="cell">56</td><td class="cell">76</td><td class="cell">49</td><td class="cell">47</td><td class="cell">37</td><td class="cell">70</td>
<td class="cell">60</td><td class="cell">58</td><td class="cell">79</td><td class="cell">76</td><td class="cell">70</td><td class="cell font-bold">678</td>
</tr>
<!-- row 3: result % (exact values from PDF) -->
<tr class="font-bold">
<td class="cell text-left text-navy">Result (%)</td>
<td class="cell">17.9%</td><td class="cell">26.3%</td><td class="cell">32.7%</td><td class="cell">31.9%</td><td class="cell">10.8%</td><td class="cell">21.4%</td>
<td class="cell">35.0%</td><td class="cell">50.0%</td><td class="cell">17.7%</td><td class="cell">26.3%</td><td class="cell">27.1%</td><td class="cell bg-navy text-white">27.0%</td>
</tr>
</table>
<!-- ===== Definition & metadata (inferred) ===== -->
<div class="text-xs text-slate bg-slate-50 p-3 rounded-lg border excel-border mb-6 italic">
<span class="font-bold text-navy">Definition:</span> Percentage of filled complaint requests that remain unactivated. Target 0% (ideal), Threshold 5% maximum acceptable.
</div>
<div class="grid grid-cols-2 md:grid-cols-5 gap-2 text-[10px] bg-slate-50 p-3 rounded-lg border excel-border mb-8">
<div><span class="font-bold text-navy">Category:</span> Organizational</div>
<div><span class="font-bold text-navy">Type:</span> Process</div>
<div><span class="font-bold text-navy">Risk:</span> <span class="bg-red-200 px-1.5 py-0.5 rounded-full text-red-800">High</span></div>
<div><span class="font-bold text-navy">Data coll.:</span> Retrospective</div>
<div><span class="font-bold text-navy">Method:</span> Others</div>
<div><span class="font-bold text-navy">Dimension:</span> Efficiency</div>
<div><span class="font-bold text-navy">Gather freq.:</span> Monthly</div>
<div><span class="font-bold text-navy">Reporting:</span> Monthly</div>
<div><span class="font-bold text-navy">Collector:</span></div>
<div><span class="font-bold text-navy">Analyzer:</span></div>
</div>
<!-- ===== two charts: trend + overall unactivated proportion ===== -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8 no-break">
<div class="md:col-span-2 border excel-border p-4 rounded-xl bg-slate-50/50">
<p class="text-[10px] font-bold text-navy uppercase mb-4 flex items-center gap-2">
<i data-lucide="trending-down" class="w-3 h-3 text-red-500"></i> Monthly Unactivated Rate Target 0% (Threshold 5%)
</p>
<div id="trendChart"></div>
</div>
<div class="border excel-border p-4 rounded-xl bg-slate-50/50">
<p class="text-[10px] font-bold text-navy uppercase mb-4 flex items-center gap-2">
<i data-lucide="pie-chart" class="w-3 h-3"></i> Unactivated vs Activated
</p>
<div id="sourceChart"></div>
</div>
</div>
<!-- ===== ANALYSIS block with insights based on data ===== -->
<div class="mb-8 p-5 bg-blue/5 border-l-4 border-navy rounded-xl">
<h3 class="text-navy font-bold text-sm uppercase flex items-center gap-2 mb-3"><i data-lucide="bar-chart-3" class="w-4 h-4"></i>Analysis</h3>
<div class="grid md:grid-cols-2 gap-6 text-xs">
<div>
<p class="font-semibold text-navy">📊 Monthly highlights:</p>
<ul class="list-disc list-inside text-slate mt-1">
<li>Highest unactivated rate: <span class="font-bold text-red-600">August 50.0%</span> (alarming)</li>
<li>Also high: July 35.0%, March 32.7%, April 31.9%</li>
<li>Lowest: May 10.8% (still above threshold 5%)</li>
<li>Annual average: <span class="font-bold">27.0%</span> far above threshold</li>
</ul>
</div>
<div>
<p class="font-semibold text-navy">⚠️ Observations:</p>
<ul class="list-disc list-inside text-slate mt-1">
<li>Total unactivated: 183 out of 678 complaints (27%).</li>
<li>Every month exceeds 5% threshold critical issue.</li>
<li>Likely causes: staffing, unclear processes, lack of automated reminders.</li>
</ul>
</div>
</div>
<p class="text-xs text-slate mt-3 italic border-t pt-2">Urgent action required to reduce unactivated complaints target is 0%.</p>
</div>
<!-- ===== Recommendations (inferred from data and typical interventions) ===== -->
<div class="mb-8 p-4 bg-amber-50/70 border-l-4 border-amber-600 rounded-xl">
<h3 class="text-navy font-bold text-sm uppercase flex items-center gap-2 mb-2"><i data-lucide="message-square" class="w-4 h-4"></i>Recommendations</h3>
<ul class="text-xs text-slate list-disc list-inside">
<li>Implement automated alerts for unactivated complaints within 2 hours of filing.</li>
<li>Assign responsibility to specific staff to monitor unactivated queue daily.</li>
<li>Conduct root cause analysis for months with >30% unactivated (Mar, Apr, Jul, Aug).</li>
<li>Reinforce training on complaint activation protocols.</li>
</ul>
</div>
<!-- ===== department style quick stats ===== -->
<div class="grid grid-cols-2 border-t border-l excel-border mb-8">
<div class="p-4 border-r border-b excel-border">
<h3 class="bg-navy text-white text-[10px] font-bold px-2 py-1 mb-2 inline-block">HIGHEST MONTHS</h3>
<div id="viewMed" class="text-[11px] text-slate whitespace-pre-line leading-relaxed italic">Aug 50.0% · Jul 35.0% · Mar 32.7% · Apr 31.9%</div>
</div>
<div class="p-4 border-r border-b excel-border">
<h3 class="bg-blue text-white text-[10px] font-bold px-2 py-1 mb-2 inline-block">LOWEST MONTHS</h3>
<div id="viewAdmin" class="text-[11px] text-slate whitespace-pre-line leading-relaxed italic">May 10.8% · Sep 17.7% · Jan 17.9%</div>
</div>
<div class="p-4 border-r border-b excel-border">
<h3 class="bg-slate text-white text-[10px] font-bold px-2 py-1 mb-2 inline-block">ANNUAL AVERAGE</h3>
<div id="viewNur" class="text-[11px] text-slate whitespace-pre-line leading-relaxed italic">27.0% (well above 5% threshold)</div>
</div>
<div class="p-4 border-r border-b excel-border bg-slate-50">
<h3 class="bg-slate-400 text-white text-[10px] font-bold px-2 py-1 mb-2 inline-block">TOTAL UNACTIVATED</h3>
<div class="text-[11px] text-slate italic">183 complaints (of 678) never activated</div>
</div>
</div>
<!-- ===== editable insights panel (like template) with preset data ===== -->
<div class="no-print bg-slate-100 p-6 rounded-xl border-2 border-dashed border-navy/20 mb-8">
<div class="flex justify-between items-center mb-4">
<h4 class="font-bold text-navy text-sm uppercase flex items-center gap-2">
<i data-lucide="edit-3" class="w-4 h-4"></i> Data Insights Editor (KPI-7)
</h4>
<div class="flex gap-2">
<select id="monthSelect" onchange="loadMonth()" class="text-xs border p-1 rounded font-bold text-navy outline-none">
<option value="focus">August (peak) / May (lowest)</option>
<option value="overview">Annual summary</option>
</select>
<button onclick="exportPDF()" class="bg-navy text-white px-4 py-1 rounded text-xs font-bold hover:bg-blue">Download PDF</button>
</div>
</div>
<div class="grid grid-cols-4 gap-4">
<textarea id="editMed" oninput="sync()" placeholder="Highest months …" class="border p-2 text-[10px] h-20 rounded w-full"></textarea>
<textarea id="editAdmin" oninput="sync()" placeholder="Lowest months …" class="border p-2 text-[10px] h-20 rounded w-full"></textarea>
<textarea id="editNur" oninput="sync()" placeholder="Avg / totals …" class="border p-2 text-[10px] h-20 rounded w-full"></textarea>
<textarea id="editRec" oninput="sync()" placeholder="Recommendations …" class="border p-2 text-[10px] h-20 rounded w-full"></textarea>
</div>
</div>
<!-- ===== recommendations block (view) ===== -->
<div class="mb-12">
<h3 class="text-navy font-bold text-xs uppercase border-b-2 border-navy mb-2">Ongoing recommendations (from editor):</h3>
<div id="viewRec" class="text-xs text-slate bg-blue/5 p-4 rounded-lg border-l-4 border-navy whitespace-pre-line italic"></div>
</div>
<!-- ===== signatures (adapted from previous reports) ===== -->
<div class="grid grid-cols-3 gap-12 text-[10px] font-bold text-navy mt-20 text-center">
<div><p class="mb-12 uppercase opacity-50">Prepared by</p><div class="border-t border-slate pt-2"></div></div>
<div><p class="mb-12 uppercase opacity-50">Reviewed by</p><div class="border-t border-slate pt-2"></div></div>
<div><p class="mb-12 uppercase opacity-50">Approved by</p><div class="border-t border-slate pt-2"></div></div>
</div>
<!-- placeholder for additional approvers -->
<div class="flex justify-center gap-8 text-[9px] text-slate mt-3">
<span>Patient Relations Dept</span>
</div>
</div>
<script>
lucide.createIcons();
// contextual data for the editable panels
const data = {
focus: {
med: "Peak unactivated: Aug 50.0%, Jul 35.0%, Mar 32.7%, Apr 31.9%",
admin: "Lowest rates: May 10.8%, Sep 17.7%, Jan 17.9%",
nur: "Annual avg 27.0% · 183 unactivated out of 678 total",
rec: "• Automated alerts for unactivated.\n• Assign monitor for queue.\n• RCA for >30% months."
},
overview: {
med: "Worst months: Aug (50%), Jul (35%), Mar (32.7%), Apr (31.9%)",
admin: "Best (still bad): May (10.8%), Sep (17.7%), Jan (17.9%)",
nur: "Total unactivated 183/678 = 27.0% far above 5% threshold.",
rec: "Implement alerts, assign responsibility, train staff, investigate root causes."
}
};
function loadMonth() {
const m = document.getElementById('monthSelect').value; // 'focus' or 'overview'
document.getElementById('editMed').value = data[m].med;
document.getElementById('editAdmin').value = data[m].admin;
document.getElementById('editNur').value = data[m].nur;
document.getElementById('editRec').value = data[m].rec;
sync();
}
function sync() {
document.getElementById('viewMed').innerText = document.getElementById('editMed').value;
document.getElementById('viewAdmin').innerText = document.getElementById('editAdmin').value;
document.getElementById('viewNur').innerText = document.getElementById('editNur').value;
document.getElementById('viewRec').innerText = document.getElementById('editRec').value;
}
// trend chart (12 months data from PDF)
new ApexCharts(document.querySelector("#trendChart"), {
series: [{ name: 'Unactivated %', data: [17.9, 26.3, 32.7, 31.9, 10.8, 21.4, 35.0, 50.0, 17.7, 26.3, 27.1, 27.0] }],
chart: { height: 180, type: 'line', toolbar: { show: false }, dropShadow: { enabled: true, top: 2, left: 2, blur: 2, opacity: 0.2 } },
colors: ['#b91c1c'], // red to highlight negative indicator
stroke: { width: 3, curve: 'smooth' },
markers: { size: 4, colors: ['#007bbd'], strokeColors: '#fff' },
xaxis: { categories: ['J','F','M','A','M','J','J','A','S','O','N','D'] },
yaxis: { min: 0, max: 55, labels: { formatter: v => v + '%' } },
annotations: { yaxis: [{ y: 5, borderColor: '#16a34a', label: { text: 'Threshold 5%', style: { color: '#fff', background: '#16a34a' } } }] }
}).render();
// small donut: unactivated (183) vs activated (678-183=495)
new ApexCharts(document.querySelector("#sourceChart"), {
series: [183, 495],
chart: { type: 'donut', height: 160 },
labels: ['Unactivated', 'Activated'],
colors: ['#b91c1c', '#005696'],
legend: { position: 'bottom', fontSize: '9px' }
}).render();
function exportPDF() {
const element = document.getElementById('report');
html2pdf().from(element).set({
margin: 0.3,
filename: 'KPI7_Unactivated_2025.pdf',
html2canvas: { scale: 2 },
jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }
}).save();
}
// initial load (focus on aug/may)
loadMonth();
</script>
<p class="text-[9px] text-gray-300 text-center max-w-6xl mx-auto mt-2">KPI-7 UnActivated Filled Complaints Rate recreated from PDF. All monthly figures, target 0% / threshold 5%, and PX360 theme.</p>
</body>
</html>