Skip to content

Chakru/Healthcare-Waitlist-Analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Healthcare Waitlist Analysis - Power BI

An end-to-end Power BI project analysing patient waitlists across inpatient, day case and outpatient categories. The report highlights waitlist distribution, specialty-level behaviour and long-term monthly trends. The aim of this work is to build practical Power BI skills and present a complete report development workflow.


Overview

This project follows a full lifecycle approach. It starts with defining what needs to be measured, moves into cleaning and shaping raw CSV files and then builds an interactive report with clear navigation. The final result supports healthcare performance monitoring by showing waitlist volumes and patterns across multiple dimensions.


Key Questions Answered

  • How have patient waitlists changed over time across inpatient, day case and outpatient services?
  • Which specialties contribute the most to overall waitlist volumes?
  • How does wait time distribution vary by age profile and time band?
  • How does the latest month compare with the same period in the previous year?

Tools & Skills Used

  • Power BI Desktop
  • Power Query (M) for data cleaning and transformation
  • DAX for measures and time-based calculations
  • Interactive report design and navigation

Dataset

The dataset contains multi-year patient waitlist information split across separate files.

The dataset represents anonymised, aggregated patient waitlist counts and is intended for analytical and educational purposes only.

Folder structure

Inpatient

  • IN_WL_2018.csv
  • IN_WL_2019.csv
  • IN_WL_2020.csv
  • IN_WL_2021.csv

Outpatient

  • OP_WL_2018.csv
  • OP_WL_2019.csv
  • OP_WL_2020.csv
  • OP_WL_2021.csv

Mapping File

  • Mapping_Specialty.csv

Key fields

  • Archive_Date
  • Case_Type
  • Specialty_Name
  • Time_Bands
  • Age_Profile

Folder connections were used to combine yearly files into unified inpatient and outpatient tables.


Data Preparation

Data cleaning and shaping was done in Power Query. The main steps were:

  • Combining multiple CSV files into single tables
  • Checking and correcting data types
  • Renaming and organising columns
  • Adding calculated columns as needed
  • Appending inpatient and outpatient tables
  • Ensuring the data was consistent before modelling

Data Model

The data model follows a straightforward star schema to support efficient filtering and performance.

Fact table

  • Combined waitlist data covering all case types and years

Dimension table

  • Specialty mapping table used for grouping and categorisation

Relationships were created to support clean filtering and analysis.


Report Features

Summary Page

Key elements:

  • KPI cards comparing current and previous year waitlists
  • Donut visual showing distribution by case type
  • Stacked bar chart linking time bands with age profiles
  • Top five specialties based on waitlist volume
  • Monthly trend analysis for inpatient, day case and outpatient categories

Detailed View

Features:

  • Filter panel for archive date, case type, specialty, age profile and time bands
  • Expandable grid showing detailed breakdowns
  • Buttons for navigation
  • Clean layout designed for deeper analysis

DAX Measures

This report uses DAX to support dynamic calculations, time-based comparisons and user-driven behaviour across visuals. Measures are designed to respond to slicer selections, handle missing values gracefully and keep visuals consistent across pages.

Below is a selection of key measures used in the report.

Average Waiting List

Calculates the average number of patients on the waiting list.

Average Waiting List = AVERAGE(All_Data[Total])

Median Waiting List

Calculates the median waiting list value, providing a more robust measure when data is skewed.

Median Waiting List = MEDIAN(All_Data[Total])

Average / Median Toggle

Allows users to switch between Average and Median waiting list calculations using a slicer.

Avg/Med Wait List = SWITCH (
            VALUES('Calculation Method'[Cal Method]),"Average", 
            [Average Waiting List],"Median", [Median Waiting List]
        )

Dynamic Visual Title

Updates chart titles automatically based on the selected calculation method to maintain clarity.

    Dynamic Title = SWITCH (
            VALUES('Calculation Method'[Cal Method]),"Average", 
            "Key Indicator - Patient Wait List (Average)","Median",  
            "Key Indicator - Patient Wait List (Median)"
        )

Latest Month Wait List

Returns the total waiting list value for the most recent available month. The + 0 ensures blanks are handled cleanly in visuals.

Latest Month Wait List = CALCULATE (
        SUM(All_Data[Total]),
        All_Data[Archive_Date] = MAX(All_Data[Archive_Date])
    ) + 0

Previous Year Latest Month Wait List

Calculates the waiting list total for the same month in the previous year.

PY Latest Month Wait List = CALCULATE (
        SUM(All_Data[Total]),
        All_Data[Archive_Date] = EDATE(MAX(All_Data[Archive_Date]), -12)
    ) + 0

No Data Indicator (Inpatient / Day Case)

Displays a message when no data is available for non-outpatient selections.

NoDataLeft = IF(
        ISBLANK(
            CALCULATE(
                SUM(All_Data[Total]),
                All_Data[Case_Type] <> "Outpatient"
            )
        ),
        "No Data for selected criteria",
        ""
    )

No Data Indicator (Outpatient)

Displays a message when no data is available for outpatient selections.

NoDataRight = IF(
        ISBLANK(
            CALCULATE(
                SUM(All_Data[Total]),
                All_Data[Case_Type] = "Outpatient"
            )
        ),
        "No Data for selected criteria",
        ""
    )

Learnings

This project helped reinforce:

  • End-to-end Power BI report development from raw data to final delivery
  • Practical use of folder-based imports for scalable data refresh
  • Data modelling best practices using a star schema
  • Writing reusable and dynamic DAX measures
  • Designing reports with usability, navigation and clarity in mind
  • Custom background images were used to create a consistent visual layout across report pages.

Repository Structure

healthcare-waitlist-analysis/
├─ Data/
│   ├─ Inpatient/
│   │   ├─ IN_WL_2018.csv
│   │   ├─ IN_WL_2019.csv
│   │   ├─ IN_WL_2020.csv
│   │   └─ IN_WL_2021.csv
│   ├─ Outpatient/
│   │   ├─ OP_WL_2018.csv
│   │   ├─ OP_WL_2019.csv
│   │   ├─ OP_WL_2020.csv
│   │   └─ OP_WL_2021.csv
│   └─ Mapping_Specialty.csv
├─ Dax/
│   └─ Key_Measures.txt
├─ Report_Backgrounds/
│   ├─ Details.png
│   ├─ DrillDown.png
│   └─ Summary.png
├─ Healthcare_Waitlist_Analysis.pbix
├─ README.md


How to Use

  1. Download the PBIX file.
  2. Keep the dataset folder in the same structure if you plan to refresh the data.
  3. Open the PBIX file in Power BI Desktop to explore, review or update the report (Power BI Desktop required).

Acknowledgement

Inspiration for this project was taken from publicly available educational material on YouTube.

About

An end-to-end Power BI project analysing patient waitlists across inpatient, day case and outpatient categories.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors