Cleaning Management KPIs & Reporting

Cleaning Management KPIs & Reporting

KPI Summary

KPI ID KPI Name Formula (Conceptual) Target Data Source Frequency
KPI-CLEANING-001 Bed Turnaround Time AVG(completed_datetimetask_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_datetimeor_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_datetimeassigned_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

SQL
-- 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:

SQL
-- 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_tasks
  • task_id
  • task_type (discharge_cleaning, transfer_cleaning, etc.)
  • task_created_datetime
  • completed_datetime
  • status
  • protocol_id
  • location_id
  • cleaning_protocols.protocol_type
  • locations.location_id, locations.facility_id
  • facilities.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):

SQL
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:

SQL
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_tasks
  • task_type = 'or_turnover'
  • or_case_id
  • completed_datetime
  • status
  • location_id
  • or_cases
  • or_case_id
  • or_room_id
  • case_end_time
  • contamination_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

SQL
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:

SQL
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_tasks
  • task_id
  • task_type
  • status (pending, assigned, in_progress, completed, cancelled, expired)
  • task_created_datetime
  • location_id, zone_id
  • assigned_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:

SQL
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:

SQL
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_tasks
  • task_type
  • assigned_datetime
  • started_datetime
  • priority
  • zone_id, location_id
  • assigned_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

SQL
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:

SQL
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_inspections
  • inspection_id
  • task_id
  • inspection_datetime
  • score
  • pass_fail (pass, fail)
  • deficiencies
  • re_clean_required
  • cleaning_tasks.zone_id
  • cleaning_zones.zone_name
  • cleaning_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:

SQL
-- 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

  • encounters
  • encounter_id
  • is_infection_flag (or isolation_flag)
  • discharge_datetime
  • location_id
  • cleaning_tasks
  • encounter_id
  • task_type
  • protocol_id
  • completed_datetime
  • cleaning_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):

SQL
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_tasks
  • task_id
  • trigger_source (schedule, adt, manual, etc.)
  • status
  • task_created_datetime
  • completed_datetime
  • due_datetime
  • schedule_id
  • zone_id
  • cleaning_schedules
  • schedule_id
  • zone_id
  • frequency
  • day_of_week
  • time_slot
  • is_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:

SQL
-- 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_tasks
  • assigned_to
  • started_datetime
  • completed_datetime
  • cleaning_staff
  • staff_id
  • full_name
  • zone_id
  • shift
  • staff_shifts (external)
  • staff_id
  • shift_start_datetime
  • shift_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
HTML
<!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.
  • 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_id
  • task_type
  • trigger_source (ADT, schedule, manual, OR)
  • priority
  • status
  • task_created_datetime
  • assigned_datetime
  • started_datetime
  • completed_datetime
  • due_datetime
  • protocol_id
  • zone_id
  • location_id
  • bed_id
  • encounter_id
  • assigned_to (staff_id)

  • Schedule Fields (from cleaning_schedules)

  • schedule_id
  • frequency
  • day_of_week
  • time_slot
  • is_active

  • Checklist & Inspection Fields

  • checklist_id, checklist_name (from cleaning_checklists)
  • inspection_id, inspection_datetime, score, pass_fail, re_clean_required (from cleaning_inspections)

  • Staff Fields (from cleaning_staff)

  • staff_id
  • full_name
  • zone_id
  • shift
  • certification_infection_control
  • certification_biohazard

  • Zone & Location Fields

  • zone_name, facility_id, floor, wing (from cleaning_zones)
  • facility_name, department_id (from facilities, departments)
  • location_code, room_number, bed_label (from locations, beds)

  • Supplies Usage Fields (from cleaning_supplies_usage)

  • usage_id
  • task_id
  • supply_name
  • quantity_used
  • unit
  • lot_number

  • Infection Control Linkage

  • is_infection_flag (from encounters)
  • protocol_type (from cleaning_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.

content/clinical/cleaning/07-kpis-reports.md Generated 2026-02-20 22:54