Leicester City Council has requested data on MMR vaccination coverage to understand why rates have declined from previously high levels. They need:
Annual MMR coverage rates (age 2, one dose) for Leicester, East Midlands (average), and England (2010–2024)
Comparison against the WHO 95% target
Analysis of the decline from Leicester’s peak years
A one‑page summary of key findings for their public health team
This request tests the ability to respond to external stakeholders with timely, accurate data: a core UKHSA function.
Background: Why MMR Coverage Matters
Measles, mumps, and rubella (MMR) are highly infectious diseases that can cause serious complications. The World Health Organization recommends 95% coverage for two doses of MMR vaccine to achieve herd immunity and prevent outbreaks.
In recent years, the UK has seen measles outbreaks linked to declining vaccination rates. Understanding local trends is essential for targeting public health interventions.
Data Source
The data come from the Fingertips public health database (Indicator 30309 – MMR coverage for one dose by age 2). This is the same source used in Day 1, but for a different indicator, demonstrating the ability to work across multiple public health domains.
Regional‑level data was not available for this indicator, so an East Midlands average was constructed from local authorities in the region to provide a meaningful benchmark.
Rationale: Before diving into detailed analysis, it’s useful to see the big picture. This table shows the range, average, and most recent value for each geography, immediately highlighting that Leicester’s latest coverage is well below its historical peak.
Leicester achieved the WHO 95% target in 2013, reaching 95.8% coverage. Since then, coverage has fallen by 7.4 percentage points to 88.4% in 2024.
Rationale: Extracting these values programmatically ensures the narrative stays accurate even if the data updates. It also allows us to use them in plot annotations.
Rationale: A wide-format table allows readers to see all geographies side by side for each year. The interactive DT table adds sortability and searchability, useful for stakeholder exploration. Colour-coding highlights years where Leicester meets the target.
Explanation of steps:
pivot_wider() converts from long to wide format
mutate() creates difference columns to quantify gaps
formatStyle() applies conditional formatting (green when ≥95%, coral when below)
Trend Visualisation
# Create plotp_trend <-ggplot( mmr_data,aes( x = year, y = coverage, color = geography)) +geom_hline(yintercept =95, linetype ="dashed", color ="red", alpha =0.5) +geom_line(linewidth =1) +geom_point(size =2) +annotate("text", x = peak_year, y = peak_coverage +1,label =paste("Peak: ", peak_coverage, "%"), size =3) +scale_color_manual(values =c("England"="#2c3e50","East Midlands (average)"="#e67e22","Leicester"="#3498db" )) +scale_x_continuous(breaks =seq(2010, 2024, 2)) +scale_y_continuous(limits =c(85, 100), labels =function(x) paste0(x, "%")) +labs(title ="MMR vaccination coverage by age 2: Leicester's decline from target",subtitle =paste("Leicester met the 95% target in", peak_year, "but has since fallen", round(decline, 1), "points"),x ="Year",y ="Coverage (%)",color ="",caption ="Red dashed line = WHO 95% target. East Midlands values are an average of local authorities." ) +theme_minimal() +theme(legend.position ="bottom",axis.text.x =element_text(angle =45, hjust =1) )ggplotly(p_trend, tooltip =c("year", "geography", "coverage"))
MMR coverage: Leicester’s rise and fall
Rationale: A line chart is the standard way to show trends over time. This plot tells Leicester’s story visually:
The red dashed line shows the target
Leicester’s line (blue) rises above it in 2012–14, then steadily declines
The regional (orange) and national (grey) lines provide context
ggplotly() makes the plot interactive (hover to see exact values)
Gap to Target Chart
gap_data <- mmr_wide |>select(year, Leicester) |>mutate(gap_to_target =round(95- Leicester, 1),above_target = gap_to_target <=0 )p_gap <-ggplot( gap_data,aes(x = year, y = gap_to_target, fill = above_target)) +geom_col(width =0.7) +geom_hline(yintercept =0, linetype ="dashed", color ="grey50") +scale_fill_manual(values =c("TRUE"="#2ecc71", "FALSE"="#e74c3c")) +scale_x_continuous(breaks =seq(2010, 2024,2)) +scale_y_continuous(labels =function(x) paste0(x, "%")) +labs(title ="Leicester: gap to WHO 95% target",subtitle ="Positive values indicate coverage below target. Leicester met the target in 2012-14.",x ="Year",y ="Gap to 95% target (percentage points)",fill ="Above target:" ) +theme_minimal() +theme(legend.position ="bottom",axis.text.x =element_text(angle =45, hjust =1) )ggplotly(p_gap, tooltip =c("year", "gap_to_target"))
Leicester: gap to WHO 95% target
Rationale: This chart focuses specifically on Leicester’s performance relative to the target. Bars above zero show years below target; bars below zero (green) show years above target. This makes the magnitude and duration of the deficit immediately visible.
above_target = gap_to_target <= 0 (flags years meeting/exceeding target)
Green bars = meeting target, red bars = below target
Benchmark Chart (Latest Year)
latest_year <-max(mmr_data$year)# Get latest data for all East Midlands authoritieslatest_em <- em_authorities |>filter(str_detect(Timeperiod, as.character(latest_year))) |>filter(!is.na(Value)) |>select(AreaName, coverage = Value) |>mutate(coverage =round(coverage, 1) ) |>add_row(AreaName ="Leicester", coverage = current_coverage) |>distinct() |>arrange(desc(coverage))# Highlight Leicesterp_benchmark <-ggplot( latest_em, aes(x =reorder(AreaName, coverage), y = coverage, fill = AreaName =="Leicester")) +geom_hline(yintercept =95, linetype ="dashed", color ="red", alpha =0.5) +geom_col() +geom_text(aes(label =paste0(coverage, "%")),hjust =-0.1 ) +scale_fill_manual(values =c("TRUE"="#3498db", "FALSE"="grey70")) +scale_y_continuous(limits =c (0, 100), labels =function(x) paste0(x, "%")) +coord_flip() +labs(title =paste("MMR coverage in East Midlands (", latest_year, ")", sep =""),subtitle ="Leicester highlighted in blue. Red line = WHO 95% target",x ="",y ="Coverage (%)",fill ="" ) +theme_minimal() +theme(legend.position ="none")ggplotly(p_benchmark, tooltip =c("AreaName", "coverage"))
East Midlands local authorities: MMR coverage (latest year)
Rationale: This chart shows how Leicester compares to other local authorities in the East Midlands in the most recent year. It answers the question: “Is Leicester’s problem unique, or are neighbouring areas also struggling?”
Explanation:
reorder(AreaName, coverage) sorts bars by coverage (highest to lowest)
Leicester is highlighted in blue for easy identification
The red dashed line shows the WHO target
coord_flip() makes area names readable
Summary Statistics for Briefing
latest_england <- mmr_data |>filter(geography =="England", year == latest_year) |>pull(coverage)latest_em <- mmr_data |>filter(geography =="East Midlands (average)", year == latest_year) |>pull(coverage)# Years below target in last 5 yearsrecent_below <- mmr_wide |>filter(year >=2020, Leicester <95) |>nrow()
Rationale: These values are extracted programmatically so they can be inserted into the narrative text below. This ensures consistency between the text and the data.
Key Findings
The analysis shows:
Leicester achieved the WHO 95% target in 2012–14, reaching a peak of 95.8%
Since then, coverage has declined by 7.4 percentage points to 88.4% in 2024
Leicester is now 6.6 points below the target
This compares to 89.2% in the East Midlands (average) and 88.9% in England
In the last 5 years, Leicester has been below target in all 5 years
One‑Page Briefing for Leicester City Council
MMR Vaccination Coverage in Leicester: Reversing the Decline
Date: March 2026 Prepared by: Marco Sorbona Data source: Fingertips public health database (Indicator 30309 – MMR coverage by age 2)
Key Messages
Leicester met the WHO 95% target in 2012–14, reaching 95.8% coverage
Since then, coverage has fallen by 7.4 percentage points to 88.4% in 2024
Leicester is now 6.6 points below the target and ranks in the lower half of East Midlands authorities
The decline has been sustained over a decade, not a one‑year drop
Why This Matters
Leicester has proved it can achieve high coverage. The question is: what changed? Possible factors include: - Changes in local service delivery - Vaccine hesitancy trends - Population churn and access issues - Post‑pandemic disruption to routine immunisation
Understanding why coverage fell after 2014 is essential to designing effective recovery strategies.
Recommendations
Investigate local factors – compare 2012–14 (peak) to now: what was different in service delivery, outreach, and messaging?
Targeted catch‑up campaigns for children born during the decline years
Peer learning – identify East Midlands authorities maintaining higher coverage and understand their practices
Monitor monthly rather than annually to detect early warning signs
Limitations
Data are for age 2 only; coverage at age 5 (second dose) may differ
Small numbers in some years may cause volatility
COVID‑19 disrupted both vaccination services and data collection in 2020–2021
East Midlands values are an average of local authorities, not an official regional statistic
Appendix: Data Quality Notes
# Indicator: 30309 – MMR for one dose at age 2# Source: Fingertips / UKHSA# Geography: Leicester City (UA), East Midlands (average of local authorities), England# Time period: 2010-2024# Peak years: 2012-2014 when Leicester exceeded 95%# Current: 88.4% in 2024