Cleaning Management KPIs & Reporting
KPI Summary
| KPI ID | KPI Name | Formula (Conceptual) | Target | Data Source | Frequency |
|---|---|---|---|---|---|
| KPI-CLEANING-001 | Bed Turnaround Time | AVG(completed_datetime − task_created_datetime) for discharge/transfer cleaning tasks |
≤ 45 min (standard), ≤ 90 min (terminal) | cleaning_tasks |
Hourly / Daily |
| KPI-CLEANING-002 | OR Turnover Time | AVG(completed_datetime − or_case_end_time) for OR turnover tasks |
≤ 30 min | cleaning_tasks, or_cases* |
Per case / Daily |
| KPI-CLEANING-003 | Task Completion Rate | COUNT(completed tasks) / COUNT(all tasks) × 100 | ≥ 98% | cleaning_tasks |
Daily |
| KPI-CLEANING-004 | Cleaning Response Time | AVG(started_datetime − assigned_datetime) by task type |
≤ 15 min (discharge), ≤ 10 min (OR), ≤ 30 min (routine) | cleaning_tasks |
Hourly / Daily |
| KPI-CLEANING-005 | Quality Inspection Pass Rate | COUNT(inspections with pass_fail = 'pass') / COUNT(all inspections) × 100 |
≥ 90% | cleaning_inspections |
Weekly / Monthly |
| KPI-CLEANING-006 | Terminal Cleaning Compliance | COUNT(infection rooms where terminal protocol used) / COUNT(total infection-room discharges) × 100 | 100% | cleaning_tasks, encounters |
Daily / Monthly |
| KPI-CLEANING-007 | Scheduled Cleaning Completion | COUNT(scheduled tasks completed on time) / COUNT(all scheduled tasks) × 100 | ≥ 95% | cleaning_tasks, cleaning_schedules |
Daily / Monthly |
| KPI-CLEANING-008 | Staff Utilization Rate | SUM(task active time) / SUM(shift time) per staff × 100 | 70–85% | cleaning_tasks, cleaning_staff, staff_shifts* |
Daily / Monthly |
*Tables marked with * (e.g., or_cases, staff_shifts) are assumed from other modules (OR Management / HR) and must be integrated but are not owned by the Cleaning module.
KPI Definitions
KPI-CLEANING-001: Bed Turnaround Time
Definition
Measures the average time from creation of a discharge/transfer-related cleaning task until its completion. This reflects how quickly beds become available for new admissions, directly impacting ED boarding, elective admissions, and overall patient flow. It supports DOH/DHA operational efficiency and infection-prevention expectations.
Calculation Formula
-- Overall bed turnaround time for discharge/transfer tasks
SELECT
AVG(EXTRACT(EPOCH FROM (ct.completed_datetime - ct.task_created_datetime)) / 60.0)
AS bed_turnaround_minutes
FROM cleaning_tasks ct
JOIN locations l ON l.location_id = ct.location_id
JOIN facilities f ON f.facility_id = l.facility_id
WHERE ct.task_type IN ('discharge_cleaning', 'transfer_cleaning')
AND ct.status = 'completed'
AND ct.task_created_datetime >= :start_datetime
AND ct.task_created_datetime < :end_datetime;
Standard vs terminal:
-- Standard vs terminal cleaning turnaround
SELECT
CASE
WHEN cp.protocol_type = 'terminal' THEN 'terminal'
ELSE 'standard'
END AS cleaning_category,
AVG(EXTRACT(EPOCH FROM (ct.completed_datetime - ct.task_created_datetime)) / 60.0)
AS avg_turnaround_minutes
FROM cleaning_tasks ct
LEFT JOIN cleaning_protocols cp ON cp.protocol_id = ct.protocol_id
WHERE ct.task_type IN ('discharge_cleaning', 'transfer_cleaning')
AND ct.status = 'completed'
AND ct.task_created_datetime >= :start_datetime
AND ct.task_created_datetime < :end_datetime
GROUP BY cleaning_category;
Target / Benchmark
| Category | Target | Source / Rationale |
|---|---|---|
| Standard discharge | ≤ 45 minutes | Internal operational target aligned with UAE tertiary hospital benchmarks |
| Terminal cleaning | ≤ 90 minutes | Allows extended protocol while maintaining bed flow; aligned with infection control best practice |
Data Source
cleaning_taskstask_idtask_type(discharge_cleaning,transfer_cleaning, etc.)task_created_datetimecompleted_datetimestatusprotocol_idlocation_idcleaning_protocols.protocol_typelocations.location_id,locations.facility_idfacilities.facility_id,facilities.facility_name
Dimensions / Filters
- Time: day, week, month, quarter, custom date range
- Facility (e.g., Sheikh Khalifa Medical City, Dubai Hospital)
- Department / ward
- Zone (
cleaning_zones.zone_id) - Cleaning category (standard vs terminal)
- Day of week, shift (morning/evening/night)
Visualization
- Line chart: average turnaround time per day with target lines (45 / 90 minutes).
- Bar chart: average turnaround by ward/zone.
- Gauge: current-day average vs target.
Alert Thresholds
- Warning:
- Standard: > 45 min and ≤ 60 min
- Terminal: > 90 min and ≤ 110 min
- Critical:
- Standard: > 60 min
- Terminal: > 110 min
Notification recipients
- Warning: Cleaning Supervisor / Dispatcher, Bed Management Coordinator.
- Critical: Facilities Manager, Nursing Administration, Bed Management Coordinator (SMS/email).
KPI-CLEANING-002: OR Turnover Time
Definition
Measures the average time from surgical case end to completion of OR cleaning, indicating how efficiently ORs are prepared for the next case. This supports DOH/DHA theatre utilization and on-time surgery start KPIs.
Calculation Formula
Assuming OR case data in or_cases (owned by OR Management):
SELECT
AVG(EXTRACT(EPOCH FROM (ct.completed_datetime - oc.case_end_time)) / 60.0)
AS or_turnover_minutes
FROM cleaning_tasks ct
JOIN or_cases oc ON oc.or_case_id = ct.or_case_id
JOIN locations l ON l.location_id = ct.location_id
JOIN facilities f ON f.facility_id = l.facility_id
WHERE ct.task_type = 'or_turnover'
AND ct.status = 'completed'
AND oc.case_end_time >= :start_datetime
AND oc.case_end_time < :end_datetime;
Optional: contaminated vs clean cases:
SELECT
CASE WHEN oc.contamination_level IN ('contaminated','dirty','infected')
THEN 'contaminated'
ELSE 'clean'
END AS case_category,
AVG(EXTRACT(EPOCH FROM (ct.completed_datetime - oc.case_end_time)) / 60.0)
AS avg_turnover_minutes
FROM cleaning_tasks ct
JOIN or_cases oc ON oc.or_case_id = ct.or_case_id
WHERE ct.task_type = 'or_turnover'
AND ct.status = 'completed'
AND oc.case_end_time BETWEEN :start_datetime AND :end_datetime
GROUP BY case_category;
Target / Benchmark
| Metric | Target | Source / Rationale |
|---|---|---|
| OR turnover time | ≤ 30 min | Common benchmark in high-volume ORs in UAE/GCC region |
Data Source
cleaning_taskstask_type = 'or_turnover'or_case_idcompleted_datetimestatuslocation_idor_casesor_case_idor_room_idcase_end_timecontamination_level(if available)locations,facilities
Dimensions / Filters
- Time: day, week, month
- Facility
- OR room
- Surgical specialty
- Case contamination level (clean vs contaminated)
- Shift / time of day
Visualization
- Line chart: daily average OR turnover time.
- Bar chart: average by OR room.
- Box plot: distribution by surgical specialty.
Alert Thresholds
- Warning: average turnover > 30 min and ≤ 40 min for the day.
- Critical: average turnover > 40 min OR any single case > 60 min.
Notification recipients
- Warning: OR Charge Nurse, OR Cleaning Supervisor.
- Critical: OR Director, Facilities Manager, Surgical Services Manager.
KPI-CLEANING-003: Task Completion Rate
Definition
Percentage of cleaning tasks that are completed (vs cancelled, expired, or still open) within the reporting period. Indicates reliability of the cleaning service and adherence to schedules and requests.
Calculation Formula
SELECT
(COUNT(CASE WHEN ct.status = 'completed' THEN 1 END) * 100.0
/ NULLIF(COUNT(*), 0)) AS task_completion_rate_pct
FROM cleaning_tasks ct
WHERE ct.task_created_datetime >= :start_datetime
AND ct.task_created_datetime < :end_datetime;
By task type:
SELECT
ct.task_type,
COUNT(*) AS total_tasks,
COUNT(CASE WHEN ct.status = 'completed' THEN 1 END) AS completed_tasks,
(COUNT(CASE WHEN ct.status = 'completed' THEN 1 END) * 100.0
/ NULLIF(COUNT(*), 0)) AS completion_rate_pct
FROM cleaning_tasks ct
WHERE ct.task_created_datetime BETWEEN :start_datetime AND :end_datetime
GROUP BY ct.task_type;
Target / Benchmark
- Target: ≥ 98% completion rate across all task types.
- Rationale: High completion is required to maintain infection prevention standards and operational readiness.
Data Source
cleaning_taskstask_idtask_typestatus(pending,assigned,in_progress,completed,cancelled,expired)task_created_datetimelocation_id,zone_idassigned_to
Dimensions / Filters
- Time period
- Facility, department/ward, zone
- Task type (discharge, OR turnover, routine, ad-hoc, terminal)
- Priority
- Assigned staff member
Visualization
- Gauge: overall completion rate vs 98% target.
- Stacked bar: completed vs not completed by task type or zone.
- Trend line: daily completion rate.
Alert Thresholds
- Warning: overall completion rate < 98% and ≥ 95% for the period.
- Critical: < 95% OR any high-priority task type < 98%.
Notification recipients
- Warning: Cleaning Supervisor / Dispatcher.
- Critical: Facilities Manager, Infection Control Officer (for terminal tasks).
KPI-CLEANING-004: Cleaning Response Time
Definition
Average time from task assignment to cleaning start. Measures responsiveness of cleaning staff to new tasks, especially critical for discharge and OR turnover.
Calculation Formula
Overall:
SELECT
AVG(EXTRACT(EPOCH FROM (ct.started_datetime - ct.assigned_datetime)) / 60.0)
AS avg_response_minutes
FROM cleaning_tasks ct
WHERE ct.assigned_datetime IS NOT NULL
AND ct.started_datetime IS NOT NULL
AND ct.assigned_datetime BETWEEN :start_datetime AND :end_datetime;
By task type:
SELECT
ct.task_type,
AVG(EXTRACT(EPOCH FROM (ct.started_datetime - ct.assigned_datetime)) / 60.0)
AS avg_response_minutes
FROM cleaning_tasks ct
WHERE ct.assigned_datetime IS NOT NULL
AND ct.started_datetime IS NOT NULL
AND ct.assigned_datetime BETWEEN :start_datetime AND :end_datetime
GROUP BY ct.task_type;
Target / Benchmark
| Task Type | Target Response Time |
|---|---|
| Discharge / transfer | ≤ 15 minutes |
| OR turnover | ≤ 10 minutes |
| Routine scheduled | ≤ 30 minutes (from scheduled start) |
| Ad-hoc / emergency | ≤ 10 minutes (recommended) |
Data Source
cleaning_taskstask_typeassigned_datetimestarted_datetimepriorityzone_id,location_idassigned_to
Dimensions / Filters
- Time period
- Facility, ward, zone
- Task type
- Priority
- Shift
- Staff member
Visualization
- Line chart: average response time by day.
- Bar chart: response time by task type.
- Heatmap: response time by hour of day vs day of week.
Alert Thresholds
- Warning:
- Discharge: > 15 and ≤ 25 min
- OR: > 10 and ≤ 15 min
- Routine: > 30 and ≤ 45 min
- Critical:
- Discharge: > 25 min
- OR: > 15 min
- Routine: > 45 min
Notification recipients
- Warning: Cleaning Supervisor / Dispatcher.
- Critical: Facilities Manager, Bed Management Coordinator (for discharge), OR Charge Nurse (for OR).
KPI-CLEANING-005: Quality Inspection Pass Rate
Definition
Percentage of cleaning inspections that pass the defined quality criteria. Reflects adherence to infection control standards and internal cleaning protocols.
Calculation Formula
SELECT
(COUNT(CASE WHEN ci.pass_fail = 'pass' THEN 1 END) * 100.0
/ NULLIF(COUNT(*), 0)) AS inspection_pass_rate_pct
FROM cleaning_inspections ci
WHERE ci.inspection_datetime >= :start_datetime
AND ci.inspection_datetime < :end_datetime;
By zone or protocol:
SELECT
cz.zone_name,
(COUNT(CASE WHEN ci.pass_fail = 'pass' THEN 1 END) * 100.0
/ NULLIF(COUNT(*), 0)) AS pass_rate_pct
FROM cleaning_inspections ci
JOIN cleaning_tasks ct ON ct.task_id = ci.task_id
JOIN cleaning_zones cz ON cz.zone_id = ct.zone_id
WHERE ci.inspection_datetime BETWEEN :start_datetime AND :end_datetime
GROUP BY cz.zone_name;
Target / Benchmark
- Target: ≥ 90% pass rate.
- Rationale: Internal quality standard aligned with infection control committee policy.
Data Source
cleaning_inspectionsinspection_idtask_idinspection_datetimescorepass_fail(pass,fail)deficienciesre_clean_requiredcleaning_tasks.zone_idcleaning_zones.zone_namecleaning_protocols.protocol_type
Dimensions / Filters
- Time period
- Facility, zone, ward
- Inspector
- Protocol type (standard, enhanced, terminal, OR)
- Task type
Visualization
- Gauge: overall pass rate vs 90% target.
- Bar chart: pass rate by zone or ward.
- Table: failed inspections with deficiencies and photos.
Alert Thresholds
- Warning: pass rate < 90% and ≥ 85% overall or in any high-risk zone (ICU, OR).
- Critical: pass rate < 85% overall or < 80% in high-risk zones.
Notification recipients
- Warning: Cleaning Supervisor, Facilities Manager.
- Critical: Facilities Manager, Infection Control Officer, Quality & Patient Safety.
KPI-CLEANING-006: Terminal Cleaning Compliance
Definition
Percentage of infection-flagged rooms that receive the appropriate terminal cleaning protocol after discharge/transfer. This is a key infection-prevention compliance metric and may be reviewed by DOH/DHA and MOH auditors.
Calculation Formula
Assuming encounters has an infection/isolation flag and discharge datetime:
-- Identify infection-room discharges
WITH infection_discharges AS (
SELECT
e.encounter_id,
e.discharge_datetime,
e.location_id
FROM encounters e
WHERE e.is_infection_flag = TRUE
AND e.discharge_datetime BETWEEN :start_datetime AND :end_datetime
)
SELECT
(COUNT(CASE
WHEN ct.task_id IS NOT NULL
AND cp.protocol_type = 'terminal'
AND ct.completed_datetime IS NOT NULL
THEN 1 END) * 100.0
/ NULLIF(COUNT(*), 0)) AS terminal_cleaning_compliance_pct
FROM infection_discharges id
LEFT JOIN cleaning_tasks ct
ON ct.encounter_id = id.encounter_id
AND ct.task_type IN ('discharge_cleaning','transfer_cleaning')
LEFT JOIN cleaning_protocols cp
ON cp.protocol_id = ct.protocol_id;
Target / Benchmark
- Target: 100% terminal cleaning compliance.
- Rationale: Infection control requirement; non-compliance may breach DOH/DHA infection prevention standards and internal policies.
Data Source
encountersencounter_idis_infection_flag(orisolation_flag)discharge_datetimelocation_idcleaning_tasksencounter_idtask_typeprotocol_idcompleted_datetimecleaning_protocols.protocol_type
Dimensions / Filters
- Time period
- Facility
- Ward (ICU, isolation units)
- Pathogen type (if available from EHR infection control)
- Shift
Visualization
- Gauge: overall compliance (target 100%).
- Bar chart: compliance by ward.
- Line chart: monthly compliance trend.
Alert Thresholds
- Warning: compliance < 100% and ≥ 98%.
- Critical: compliance < 98% OR any single missed terminal cleaning in ICU/OR/isolation.
Notification recipients
- Warning: Infection Control Nurse, Cleaning Supervisor.
- Critical: Infection Control Officer, Facilities Manager, Chief Medical Officer / Quality.
KPI-CLEANING-007: Scheduled Cleaning Completion
Definition
Percentage of scheduled (time-based) cleaning tasks completed on time relative to their planned schedule. Ensures corridors, public areas, clinics, and offices are cleaned according to facility policy and DOH/DHA expectations for environmental hygiene.
Calculation Formula
Assuming cleaning_tasks has trigger_source and due_datetime (derived from cleaning_schedules):
SELECT
(COUNT(CASE
WHEN ct.status = 'completed'
AND ct.completed_datetime <= ct.due_datetime
THEN 1 END) * 100.0
/ NULLIF(COUNT(*), 0)) AS scheduled_completion_on_time_pct
FROM cleaning_tasks ct
WHERE ct.trigger_source = 'schedule'
AND ct.task_created_datetime BETWEEN :start_datetime AND :end_datetime;
If due_datetime is not stored, it should be computed at task generation from cleaning_schedules.
Target / Benchmark
- Target: ≥ 95% of scheduled tasks completed on time.
- Rationale: Internal facilities standard; supports accreditation and infection control audits.
Data Source
cleaning_taskstask_idtrigger_source(schedule,adt,manual, etc.)statustask_created_datetimecompleted_datetimedue_datetimeschedule_idzone_idcleaning_schedulesschedule_idzone_idfrequencyday_of_weektime_slotis_active
Dimensions / Filters
- Time period
- Facility
- Zone
- Frequency (daily, weekly, monthly)
- Shift
Visualization
- Gauge: on-time completion rate vs 95% target.
- Bar chart: on-time completion by zone.
- Calendar heatmap: completion by day/time.
Alert Thresholds
- Warning: on-time completion < 95% and ≥ 90% overall or in any critical zone (ED, ICU corridors).
- Critical: < 90% overall or < 85% in critical zones.
Notification recipients
- Warning: Facilities Supervisor, Cleaning Supervisor.
- Critical: Facilities Manager, Quality Department.
KPI-CLEANING-008: Staff Utilization Rate
Definition
Percentage of staff shift time spent actively working on cleaning tasks (from task start to completion). Helps balance workload, avoid burnout, and optimize staffing levels.
Calculation Formula
Assuming a staff_shifts table (HR/rostering system) with actual shift durations:
-- Task active time per staff
WITH task_time AS (
SELECT
ct.assigned_to AS staff_id,
SUM(EXTRACT(EPOCH FROM (ct.completed_datetime - ct.started_datetime)) / 3600.0)
AS task_hours
FROM cleaning_tasks ct
WHERE ct.started_datetime IS NOT NULL
AND ct.completed_datetime IS NOT NULL
AND ct.started_datetime BETWEEN :start_datetime AND :end_datetime
GROUP BY ct.assigned_to
),
shift_time AS (
SELECT
ss.staff_id,
SUM(EXTRACT(EPOCH FROM (ss.shift_end_datetime - ss.shift_start_datetime)) / 3600.0)
AS shift_hours
FROM staff_shifts ss
WHERE ss.shift_start_datetime BETWEEN :start_datetime AND :end_datetime
GROUP BY ss.staff_id
)
SELECT
cs.staff_id,
cs.full_name,
tt.task_hours,
st.shift_hours,
(tt.task_hours * 100.0 / NULLIF(st.shift_hours, 0)) AS utilization_pct
FROM cleaning_staff cs
LEFT JOIN task_time tt ON tt.staff_id = cs.staff_id
LEFT JOIN shift_time st ON st.staff_id = cs.staff_id;
Target / Benchmark
- Target utilization: 70–85% per staff member.
- Rationale: Below 70% suggests underutilization; above 85% may indicate overload and risk to quality/safety.
Data Source
cleaning_tasksassigned_tostarted_datetimecompleted_datetimecleaning_staffstaff_idfull_namezone_idshiftstaff_shifts(external)staff_idshift_start_datetimeshift_end_datetime
Dimensions / Filters
- Time period
- Facility, zone
- Staff member
- Shift
- Task type (optional breakdown)
Visualization
- Bar chart: utilization by staff member.
- Box plot: distribution of utilization across staff.
- Trend line: average utilization over time.
Alert Thresholds
- Warning:
- Staff utilization < 60% or > 90% for 3 consecutive days.
- Critical:
- Staff utilization < 50% or > 95% on any day OR average > 90% over a month.
Notification recipients
- Warning: Cleaning Supervisor, Facilities Manager.
- Critical: Facilities Manager, HR / Workforce Planning.
Standard Reports
| Report ID | Report Name | Purpose | Audience | Frequency | Format |
|---|---|---|---|---|---|
| RPT-CLN-001 | Bed Turnaround Performance Report | Monitor bed cleaning turnaround times by ward/zone vs targets | Bed Management, Nursing Admin, Facilities | Daily / Weekly | Interactive dashboard + Excel export |
| RPT-CLN-002 | OR Turnover Cleaning Efficiency | Track OR cleaning times and delays impacting surgical schedule | OR Director, OR Charge Nurse, Facilities | Daily / Weekly | Dashboard + PDF |
| RPT-CLN-003 | Cleaning Task Productivity & Completion | Overview of task volumes, completion rates, and response times by zone and staff | Cleaning Supervisor, Facilities Manager | Daily / Monthly | Dashboard + CSV |
| RPT-CLN-004 | Scheduled Cleaning Compliance | Verify adherence to routine cleaning schedules across all zones | Facilities Manager, Quality, Infection Control | Weekly / Monthly | PDF + Excel |
| RPT-CLN-005 | Terminal Cleaning & Infection Control Compliance | Demonstrate terminal cleaning compliance for infection-flagged rooms | Infection Control Officer, Quality, DOH/DHA auditors | Monthly / Quarterly | PDF (signed) + Excel |
| RPT-CLN-006 | Quality Inspection Outcomes | Summarize inspection pass rates, deficiencies, and re-cleaning tasks | Infection Control, Facilities, Quality | Monthly | Dashboard + PDF |
| RPT-CLN-007 | Staff Utilization & Workload Analysis | Analyze staff utilization, workload distribution, and overtime risk | Facilities Manager, HR | Monthly / Quarterly | Excel + Dashboard |
| RPT-CLN-008 | Cleaning Supplies Usage by Task & Zone | Track consumption of cleaning agents and supplies for budgeting and infection control | Facilities Manager, Procurement, Infection Control | Monthly | Excel + PDF |
| RPT-CLN-009 | Incident & Biohazard Cleaning Log | Document ad-hoc/emergency and biohazard cleaning events for safety and regulatory review | Infection Control, Safety Officer | Monthly / On-demand | PDF + CSV |
Dashboard Wireframe
The Cleaning Analytics Dashboard (corresponding to SCR-CLN-007) should present high-level KPIs with drill-downs and filters.
Show HTML code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Cleaning Analytics Dashboard</title>
</head>
<body style="font-family: Arial, sans-serif; margin: 0; padding: 0; background:#f5f5f5;">
<!-- Header & Filters -->
<header style="background:#004c97; color:#fff; padding:12px 20px;">
<div style="display:flex; justify-content:space-between; align-items:center;">
<div>
<h1 style="margin:0; font-size:20px;">Cleaning Analytics Dashboard</h1>
<p style="margin:2px 0 0; font-size:12px;">Real-time KPIs for Cleaning Management</p>
</div>
<div style="font-size:12px;">
<label>Facility:
<select style="margin-left:4px;">
<option>All Facilities</option>
<option>Dubai General Hospital</option>
<option>Sheikh Khalifa Medical City</option>
</select>
</label>
<label style="margin-left:10px;">Zone/Ward:
<select>
<option>All Zones</option>
<option>ICU</option>
<option>OR Complex</option>
<option>Medical Ward 3A</option>
</select>
</label>
<label style="margin-left:10px;">Period:
<select>
<option>Today</option>
<option>Last 7 days</option>
<option>This Month</option>
<option>Custom...</option>
</select>
</label>
</div>
</div>
</header>
<main style="padding:15px;">
<!-- KPI Cards -->
<section style="display:flex; flex-wrap:wrap; gap:10px; margin-bottom:15px;">
<div style="flex:1 1 22%; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h2 style="margin:0; font-size:12px; color:#666;">Bed Turnaround Time</h2>
<p style="margin:5px 0 0; font-size:22px; color:#333;">38 min</p>
<p style="margin:2px 0 0; font-size:11px; color:#0a8a0a;">Target: ≤ 45 min</p>
</div>
<div style="flex:1 1 22%; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h2 style="margin:0; font-size:12px; color:#666;">OR Turnover Time</h2>
<p style="margin:5px 0 0; font-size:22px; color:#333;">29 min</p>
<p style="margin:2px 0 0; font-size:11px; color:#e68a00;">Target: ≤ 30 min</p>
</div>
<div style="flex:1 1 22%; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h2 style="margin:0; font-size:12px; color:#666;">Task Completion Rate</h2>
<p style="margin:5px 0 0; font-size:22px; color:#333;">97.4%</p>
<p style="margin:2px 0 0; font-size:11px; color:#cc0000;">Target: ≥ 98%</p>
</div>
<div style="flex:1 1 22%; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h2 style="margin:0; font-size:12px; color:#666;">Terminal Cleaning Compliance</h2>
<p style="margin:5px 0 0; font-size:22px; color:#333;">99.2%</p>
<p style="margin:2px 0 0; font-size:11px; color:#e68a00;">Target: 100%</p>
</div>
</section>
<!-- Charts Row 1 -->
<section style="display:flex; gap:10px; margin-bottom:15px;">
<div style="flex:2; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h3 style="margin:0 0 5px; font-size:13px;">Bed Turnaround Time Trend</h3>
<div style="height:200px; border:1px dashed #ccc; font-size:11px; color:#999; display:flex; align-items:center; justify-content:center;">
Line chart placeholder (daily average vs target)
</div>
</div>
<div style="flex:1; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h3 style="margin:0 0 5px; font-size:13px;">Task Completion by Zone</h3>
<div style="height:200px; border:1px dashed #ccc; font-size:11px; color:#999; display:flex; align-items:center; justify-content:center;">
Bar chart placeholder
</div>
</div>
</section>
<!-- Charts Row 2 -->
<section style="display:flex; gap:10px; margin-bottom:15px;">
<div style="flex:1; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h3 style="margin:0 0 5px; font-size:13px;">Inspection Pass Rate</h3>
<div style="height:180px; border:1px dashed #ccc; font-size:11px; color:#999; display:flex; align-items:center; justify-content:center;">
Gauge / bar chart placeholder
</div>
</div>
<div style="flex:1; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h3 style="margin:0 0 5px; font-size:13px;">Staff Utilization</h3>
<div style="height:180px; border:1px dashed #ccc; font-size:11px; color:#999; display:flex; align-items:center; justify-content:center;">
Box / bar chart placeholder
</div>
</div>
<div style="flex:1; background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<h3 style="margin:0 0 5px; font-size:13px;">Scheduled Cleaning Compliance</h3>
<div style="height:180px; border:1px dashed #ccc; font-size:11px; color:#999; display:flex; align-items:center; justify-content:center;">
Heatmap / calendar placeholder
</div>
</div>
</section>
<!-- Detail Table -->
<section style="background:#fff; padding:10px; border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,0.1);">
<div style="display:flex; justify-content:space-between; align-items:center;">
<h3 style="margin:0; font-size:13px;">Open High-Priority Tasks</h3>
<button style="font-size:11px; padding:4px 8px;">Export CSV</button>
</div>
<table style="width:100%; border-collapse:collapse; margin-top:5px; font-size:11px;">
<thead>
<tr>
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Task ID</th>
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Type</th>
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Zone/Ward</th>
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Priority</th>
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Assigned To</th>
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Waiting (min)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">CLN-2026-00123</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">Discharge</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">Medical Ward 3A</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px; color:#cc0000;">High</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">Ahmed Ali</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">22</td>
</tr>
<tr>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">CLN-2026-00124</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">Terminal</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">ICU Isolation 2</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px; color:#cc0000;">Critical</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">Unassigned</td>
<td style="border-bottom:1px solid #f0f0f0; padding:4px;">15</td>
</tr>
</tbody>
</table>
</section>
</main>
</body>
</html>
Regulatory Reports
All reporting must align with UAE regulations and local health authority requirements. The Cleaning module primarily supports infection prevention, facility hygiene, and PDPL-compliant auditability.
1. MOH / Federal-Level Expectations
While MOH does not typically request raw cleaning logs, the system should support:
- Environmental Hygiene Summary for Federal Audits
- Aggregated statistics on:
- Terminal cleaning compliance (KPI-CLEANING-006).
- Quality inspection pass rates (KPI-CLEANING-005).
- Documentation of biohazard clean-ups (RPT-CLN-009).
- Exportable as:
- PDF with summary tables and charts.
- Underlying CSV/Excel for detailed review.
- Fields:
- Facility, ward, number of infection-flagged discharges, number of terminal cleanings, failures and corrective actions.
2. DOH (Abu Dhabi) – ADHICS & Malaffi Context
- ADHICS (Abu Dhabi Healthcare Information and Cyber Security Standard)
- Cleaning data is operational but may be used in infection control analytics.
-
Requirements:
- Access logs for all views/exports of cleaning and inspection data.
- Role-based access control (e.g., Infection Control Officer vs Cleaning Staff).
- Audit trails for any modification of inspection results or terminal cleaning records.
-
Malaffi Integration
- No direct cleaning data submission, but:
- Infection control teams may correlate Malaffi infection data with local terminal cleaning compliance.
- System must support export of infection-related cleaning data (encounter IDs, dates, protocol type) for internal use.
3. DHA (Dubai) – NABIDH & eClaimLink Context
- NABIDH
-
Cleaning events are not directly exchanged, but:
- Infection control dashboards may be used to support NABIDH quality and safety indicators.
- System should allow facility-level extraction of cleaning KPIs for internal NABIDH quality committees.
-
eClaimLink
- No direct linkage to cleaning; however:
- Bed turnaround and OR turnover performance may indirectly support operational KPIs relevant to payer negotiations.
- Export of aggregated KPIs (no patient identifiers) should be possible for management reporting.
4. UAE PDPL (Federal Decree-Law No. 45/2021)
- Data Minimization & Purpose Limitation
- Cleaning reports should not expose unnecessary patient identifiers.
-
For regulatory and management reports:
- Use encounter IDs and bed/room IDs where needed.
- Mask or omit patient names and Emirates IDs unless strictly required for internal investigation.
-
Audit & Access Reporting
-
System must be able to produce:
- PDPL Audit Report – Cleaning Data Access
- Who accessed cleaning logs linked to specific infection cases.
- When data was exported (CSV/PDF/Excel) and by whom.
- Purpose (captured via mandatory “reason for export” field).
-
Data Subject Rights
- If a patient requests information about infection-related cleaning of their room:
- System should support filtered reports by encounter ID showing:
- Terminal cleaning tasks, timestamps, protocol used, inspection results.
- Exportable as PDF for patient communication via the EHR module.
5. Internal Infection Control & Accreditation
- Infection Control Committee Reports
- Monthly/quarterly:
- Terminal cleaning compliance by ward.
- Inspection pass rates and trends.
- Biohazard cleaning incidents and response times.
-
Used for:
- DOH/DHA licensing inspections.
- International accreditation (e.g., JCI) – without referencing non-UAE regulations in system text.
-
Outbreak Investigation Support
- On-demand reports:
- All cleaning and inspection events for specified rooms/wards and date ranges.
- Correlation with infection flags and terminal cleaning protocols.
Ad-Hoc Reporting
Available Data Fields for Custom Queries
The reporting layer should expose a curated view (e.g., vw_cleaning_analytics) combining key fields from owned tables and referenced entities. Example field groups:
- Task-Level Fields (from
cleaning_tasks) task_idtask_typetrigger_source(ADT, schedule, manual, OR)prioritystatustask_created_datetimeassigned_datetimestarted_datetimecompleted_datetimedue_datetimeprotocol_idzone_idlocation_idbed_idencounter_id-
assigned_to(staff_id) -
Schedule Fields (from
cleaning_schedules) schedule_idfrequencyday_of_weektime_slot-
is_active -
Checklist & Inspection Fields
checklist_id,checklist_name(fromcleaning_checklists)-
inspection_id,inspection_datetime,score,pass_fail,re_clean_required(fromcleaning_inspections) -
Staff Fields (from
cleaning_staff) staff_idfull_namezone_idshiftcertification_infection_control-
certification_biohazard -
Zone & Location Fields
zone_name,facility_id,floor,wing(fromcleaning_zones)facility_name,department_id(fromfacilities,departments)-
location_code,room_number,bed_label(fromlocations,beds) -
Supplies Usage Fields (from
cleaning_supplies_usage) usage_idtask_idsupply_namequantity_usedunit-
lot_number -
Infection Control Linkage
is_infection_flag(fromencounters)protocol_type(fromcleaning_protocols)
All ad-hoc views must enforce PDPL-compliant masking of patient identifiers; joins to patients should be disabled or heavily restricted in the self-service reporting layer.
Export Formats
- Supported formats
- CSV (for data analysis in BI tools).
- Excel (XLSX) with basic formatting and filters.
- PDF (for formal reports and regulatory submissions).
-
JSON (for internal API-based data extraction, if required).
-
Export Controls
- Role-based permissions (e.g.,
generate_reports,view_analytics). - Mandatory “reason for export” field for PDPL auditing.
- Logging of:
- User ID
- Timestamp
- Report name / query ID
- Row count
- Export format
Scheduled Report Delivery
- Scheduling Capabilities
- Users with appropriate permissions can schedule:
- Daily, weekly, monthly, or custom cron-like intervals.
-
Parameters:
- Date range (e.g., “previous day”, “previous month”).
- Facility/zone filters.
- Output format (PDF, Excel, CSV).
- Recipients (internal email addresses only).
-
Delivery Mechanism
-
Email with secure link to download (preferable) or attachment, in line with PDPL and ADHICS:
- Links should require authentication.
- Links expire after configurable period (e.g., 7 days).
-
Monitoring & Governance
- Admin view of all scheduled reports:
- Owner, schedule, recipients, last run status.
- Ability to pause or cancel schedules (e.g., when staff leave the organization).
- Audit log entries for each execution (success/failure, row count).
Shared Entity References
This module references shared entities defined in other modules:
- Facilities, departments, locations, users: see
../ehr-patient-mgmt/03-data-specifications.md - Beds, encounters: see
../scheduling/03-data-specifications.md - OR cases, staff shifts: see OR Management / HR modules respectively.
All KPI and reporting implementations must use these shared keys and avoid duplicating master data.