Introduction

Patients with severe asthma can be treated with biologic medicinces. NICE has approved four biologics for use in England for people with severe asthma; benralizumab, mepolizumab and most recently reslizumab for treating severe eosinophilic asthma and omalizumab for treating severe persistent confirmed allergic IgE‑mediated asthma. Our team delivers OpenPrescribing.net, a publicly funded and openly accessible explorer for NHS primary care prescribing supported by prescribing data openly published by the NHS Business Services Authority. We were concerned that the NHS did not share hospital medicines data in a similar manner to primary care and advocated openly that it should be shared. Asthma UK have similarly advocated that hospital medicines data should be shared to enable transparent assessment of access to new treatments and accountability for public spending.

In September 2020 NHS BSA published hospital medicines data for the first time. We have prepared the following notebook for investigating the use of asthma biologic medicines in English hospitals. If you have any feedback or insight The DataLab team can be contacted at .

Contents

Data preparation

Before we can analyse trends and variation in the use of asthma biologics we need to prepare our dataset. This analysis uses:

We also use information on the daily defined dose (DDD) of each asthma biologic, so that the volume of each VMP can be compared directly once converted to DDDs. The WHO publish DDDs online:

Reading in the secondary care medicines dataset from DataLab BigQuery

# reading in hospital issues data for asthma biologics
library(tidyverse)
library(bigrquery)
library(DBI)
library(knitr)
library(here)

options(scipen = 999)

## set up connection to BigQuery
con <- dbConnect(
  bigrquery::bigquery(),
  project = "ebmdatalab",
  dataset = "scmd")

scmd_extract_asthma_biologics <- "select 
year_month,
ods_code,
vmp_snomed_code,
vmp_product_name,
sum(total_quanity_in_vmp_unit) as total_quantity
from ebmdatalab.scmd.scmd
where 
vmp_snomed_code = \"18671311000001102\" or 
vmp_snomed_code = \"18671411000001109\" or
vmp_snomed_code = \"37564311000001105\" or
vmp_snomed_code = \"37564411000001103\" or
vmp_snomed_code = \"31210311000001108\" or
vmp_snomed_code = \"33999611000001101\" or
vmp_snomed_code = \"34812511000001102\" or
vmp_snomed_code = \"37854611000001108\" or
vmp_snomed_code = \"35298511000001102\"
group by
year_month,
ods_code,
vmp_snomed_code,
vmp_product_name
order by
year_month"

scmd_asthma_biologics <- dbGetQuery(con, scmd_extract_asthma_biologics)

kable(scmd_asthma_biologics[1:10, ], caption = "Preview of scmd_asthma_biologics data table")
Preview of scmd_asthma_biologics data table
year_month ods_code vmp_snomed_code vmp_product_name total_quantity
2019-01-01 R1H 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 13
2019-01-01 RA2 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 12
2019-01-01 RA3 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 62
2019-01-01 RA4 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 58
2019-01-01 RA7 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 82
2019-01-01 RA9 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 187
2019-01-01 RAE 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 502
2019-01-01 RAL 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 104
2019-01-01 RAP 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 17
2019-01-01 RBA 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 116

Reading in the dm+d information for asthma biologics from DataLab BigQuery

# reading in dm+d data for asthma biologics

## set up connection to BigQuery
con <- dbConnect(
  bigrquery::bigquery(),
  project = "ebmdatalab",
  dataset = "scmd")

dmd_extract_asthma_biologics <- "select 
  cast(a.id as STRING) as vmpid,
  a.nm as vmpnm,
  a.vtm as vtmid,
  j.nm as vtmnm,
  b.form as form_cd,
  c.descr as formdescr,
  a.df_ind as df_ind_cd,
  d.descr as df_descr,
  a.udfs,
  e.descr as udfs_descr,
  f.descr as unit_dose_descr,
  g.strnt_nmrtr_val,
  h.descr as strnt_nmrtr_uom,
  g.strnt_dnmtr_val,
  i.descr as strnt_dnmtr_descr,
  a.bnf_code,
  k.presentation as bnf_presentation
  
from ebmdatalab.dmd.vmp as a

left join ebmdatalab.dmd.dform as b
on a.id = b.vmp

left join ebmdatalab.dmd.form as c
on b.form = c.cd

left join ebmdatalab.dmd.dfindicator as d
on a.df_ind = d.cd

left join ebmdatalab.dmd.unitofmeasure as e
on a.udfs_uom = e.cd

left join ebmdatalab.dmd.unitofmeasure as f
on a.unit_dose_uom = f.cd

left join ebmdatalab.dmd.vpi as g
on a.id = g.vmp

left join ebmdatalab.dmd.unitofmeasure as h
on g.strnt_nmrtr_uom = h.cd

left join ebmdatalab.dmd.unitofmeasure as i
on g.strnt_dnmtr_uom = i.cd

left join ebmdatalab.dmd.vtm as j
on a.vtm = j.id

left join ebmdatalab.hscic.bnf as k
on a.bnf_code = k.presentation_code

where
  a.id = 18671311000001102 or 
  a.id = 18671411000001109 or
  a.id = 37564311000001105 or
  a.id = 37564411000001103 or
  a.id = 31210311000001108 or
  a.id = 33999611000001101 or
  a.id = 34812511000001102 or
  a.id = 37854611000001108 or
  a.id = 35298511000001102"

dmd_asthma_biologics <- dbGetQuery(con, dmd_extract_asthma_biologics) %>% 
  dplyr::rename(vmp_product_name = vmpnm) %>%
  select(-c("vmpid"))

kable(dmd_asthma_biologics[1:5, ], caption = "Preview of dmd_asthma_biologics data table")
Preview of dmd_asthma_biologics data table
vmp_product_name vtmid vtmnm form_cd formdescr df_ind_cd df_descr udfs udfs_descr unit_dose_descr strnt_nmrtr_val strnt_nmrtr_uom strnt_dnmtr_val strnt_dnmtr_descr bnf_code bnf_presentation
Mepolizumab 100mg powder for solution for injection vials NA Mepolizumab 385223009 Powder for solution for injection 1 Discrete 1.0 vial vial 100 mg NA NA 0304020Y0AAAAAA Mepolizumab 100mg powder for solution for injection vials
Reslizumab 100mg/10ml solution for infusion vials NA Reslizumab 385229008 Solution for infusion 1 Discrete 10.0 ml vial 10 mg 1 ml 0304020Z0AAAAAA Reslizumab 100mg/10ml solution for infusion vials
Reslizumab 25mg/2.5ml solution for infusion vials NA Reslizumab 385229008 Solution for infusion 1 Discrete 2.5 ml vial 10 mg 1 ml 0304020Z0AAABAB Reslizumab 25mg/2.5ml solution for infusion vials
Omalizumab 75mg/0.5ml solution for injection pre-filled syringes 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 0.5 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAABAB Omalizumab 75mg/0.5ml inj pre-filled syringes
Omalizumab 150mg/1ml solution for injection pre-filled syringes 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1.0 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes

Preview of hospital trust code to NHS Digital ODS information

# reading in ods data on hospitals - no header information so need to add this in
hospital_to_stp_map <- read.csv(file = here::here("data", "etr.csv"), header = FALSE) %>%
  select(1:4) 
colnames(hospital_to_stp_map) <- c("ods_code", "trust_name", "region_code", "stp_code")

kable(hospital_to_stp_map[1:5, ], caption = "Preview of hospital_to_stp_map data table")
Preview of hospital_to_stp_map data table
ods_code trust_name region_code stp_code
R0A MANCHESTER UNIVERSITY NHS FOUNDATION TRUST Y62 QOP
R0B SOUTH TYNESIDE AND SUNDERLAND NHS FOUNDATION TRUST Y63 QHM
R0C PROJECT NIGHTINGALE NHS TRUST Y56 Q71
R1A WORCESTERSHIRE HEALTH AND CARE NHS TRUST Y60 QGH
R1C SOLENT NHS TRUST Y59 QRL
# reading in map from ccg codes to stp and region codes because this gives a map from stp_code to stp_name
stp_to_region_map <- read.csv(here::here("data","gp-reg-pat-prac-map.csv")) %>%
  group_by(STP_CODE, STP_NAME) %>%
  summarise(COMM_REGION_NAME = first(COMM_REGION_NAME),
            COMM_REGION_CODE = first(COMM_REGION_CODE)) %>%
  dplyr::rename(stp_code = STP_CODE)

kable(stp_to_region_map[1:5, ], caption = "Preview of stp_to_region_map data table")
Preview of stp_to_region_map data table
stp_code STP_NAME COMM_REGION_NAME COMM_REGION_CODE
QE1 Healthier Lancashire and South Cumbria North West Y62
QF7 South Yorkshire and Bassetlaw North East and Yorkshire Y63
QGH Herefordshire and Worcestershire Midlands Y60
QH8 Mid and South Essex East of England Y61
QHG Bedfordshire, Luton and Milton Keynes East of England Y61

Merging together and cleaning data sources

Now the four data tables will be merged together to create the dataset used for our analysis. To be able to match trust codes to trust names, STP ODS codes and region ODS codes there first needs to be some data cleaning as the SCMD uses some old trust ODS codes and doesn’t take account of some trust mergers over the last few years.

# Merging data tables together
asthma_biologics <- left_join(scmd_asthma_biologics, dmd_asthma_biologics, by = "vmp_product_name") %>%
  left_join(., hospital_to_stp_map, by = "ods_code") %>%
  # some data cleaning as scmd uses some ods codes that are not up to date
  mutate(stp_code = as.character(stp_code),
         stp_code = case_when(
           ods_code == "RQ6" ~ "QYG",
           ods_code %in% c("RNL", "RE9", "RLN") ~ "QHM",
           ods_code %in% c("RM2", "RW3") ~ "QOP",
           ods_code == "RGQ" ~ "QJG",
           ods_code == "RJF" ~ "QJ2",
           ods_code == "RR1" ~ "QHL",
           TRUE ~ stp_code
         )
  ) %>%
  left_join(., stp_to_region_map, by = "stp_code") %>%
  select(-c("COMM_REGION_CODE"))

kable(asthma_biologics[1:5, ], caption = "Preview of asthma_biologics data table")
Preview of asthma_biologics data table
year_month ods_code vmp_snomed_code vmp_product_name total_quantity vtmid vtmnm form_cd formdescr df_ind_cd df_descr udfs udfs_descr unit_dose_descr strnt_nmrtr_val strnt_nmrtr_uom strnt_dnmtr_val strnt_dnmtr_descr bnf_code bnf_presentation trust_name region_code stp_code STP_NAME COMM_REGION_NAME
2019-01-01 R1H 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 13 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes BARTS HEALTH NHS TRUST Y56 QMF East London Health and Care Partnership London
2019-01-01 RA2 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 12 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes ROYAL SURREY COUNTY HOSPITAL NHS FOUNDATION TRUST Y59 QXU Surrey Heartlands Health and Care Partnership South East
2019-01-01 RA3 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 62 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes WESTON AREA HEALTH NHS TRUST Y58 QUY Bristol, North Somerset and South Gloucestershire South West
2019-01-01 RA4 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 58 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes YEOVIL DISTRICT HOSPITAL NHS FOUNDATION TRUST Y58 QSL Somerset South West
2019-01-01 RA7 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 82 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes UNIVERSITY HOSPITALS BRISTOL AND WESTON NHS FOUNDATION TRUST Y58 QUY Bristol, North Somerset and South Gloucestershire South West

Converting volume in VMP quantity to volume in DDDs

The final data cleaning step is to convert the volume from VMP quantity (as provided in the SCMD dataset) to volume in DDDs.

  • SCMD volumes data is provided in vmp quantity - this means different things for different products. e.g. 100mg powder = 1 vmp quantity but 100mg/20ml solution for injection = 20 vmp quantity, even though both VMPS have the same strength of ingredient.

  • To translate volume in VMP quantity to volume in DDDs we need to go through a few steps:

    • First, translate volume in VMP quantity to volumes in singles of the product (i.e. number of vials)

    • Then translate volume in singles of product to volume in strength of ingredient (i.e. number of mgs of active ingredient)

    • Finally translate volume in strength of ingredient to volume in DDDs, using the DDD information published by the WHO

asthma_biologics_with_DDD <- asthma_biologics %>%
  mutate(volume_singles = total_quantity / udfs,
         volume_mg_strength = volume_singles * ifelse(is.na(strnt_dnmtr_val), strnt_nmrtr_val, strnt_nmrtr_val * (udfs / strnt_dnmtr_val)),
         mg_per_DDD = case_when(
           vtmnm == "Omalizumab" ~ 16,
           vtmnm == "Mepolizumab" ~ 3.6,
           vtmnm == "Reslizumab" ~ 7.1,
           vtmnm == "Benralizumab" ~ 0.54,
           TRUE ~ NA_real_
         ), 
         volume_DDD = volume_mg_strength / mg_per_DDD
  )

kable(asthma_biologics_with_DDD[1:5, ], caption = "Preview of asthma_biologics_with_DDD data table")
Preview of asthma_biologics_with_DDD data table
year_month ods_code vmp_snomed_code vmp_product_name total_quantity vtmid vtmnm form_cd formdescr df_ind_cd df_descr udfs udfs_descr unit_dose_descr strnt_nmrtr_val strnt_nmrtr_uom strnt_dnmtr_val strnt_dnmtr_descr bnf_code bnf_presentation trust_name region_code stp_code STP_NAME COMM_REGION_NAME volume_singles volume_mg_strength mg_per_DDD volume_DDD
2019-01-01 R1H 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 13 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes BARTS HEALTH NHS TRUST Y56 QMF East London Health and Care Partnership London 13 1950 16 121.875
2019-01-01 RA2 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 12 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes ROYAL SURREY COUNTY HOSPITAL NHS FOUNDATION TRUST Y59 QXU Surrey Heartlands Health and Care Partnership South East 12 1800 16 112.500
2019-01-01 RA3 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 62 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes WESTON AREA HEALTH NHS TRUST Y58 QUY Bristol, North Somerset and South Gloucestershire South West 62 9300 16 581.250
2019-01-01 RA4 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 58 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes YEOVIL DISTRICT HOSPITAL NHS FOUNDATION TRUST Y58 QSL Somerset South West 58 8700 16 543.750
2019-01-01 RA7 18671311000001102 Omalizumab 150mg/1ml solution for injection pre-filled syringes 82 406442003 Omalizumab 385219001 Solution for injection 1 Discrete 1 ml pre-filled disposable injection 150 mg 1 ml 0304020X0AAACAC Omalizumab 150mg/1ml inj pre-filled syringes UNIVERSITY HOSPITALS BRISTOL AND WESTON NHS FOUNDATION TRUST Y58 QUY Bristol, North Somerset and South Gloucestershire South West 82 12300 16 768.750

Analysis

Use of Asthma biologics over time

The public secondary care medicines dataset provides information on hospital use of asthma biologics from January 2019 to July 2020.

At a national level we can see that the total use of asthma biologics has increase over this period, but the size of the change varies by type of chemical. Use of Benralizumab has increased the most (in both absolute and proportional terms) and there is very little use of Reslizumab over the period.

Nat_time_series <- asthma_biologics_with_DDD %>%
  group_by(year_month, vtmnm) %>%
  summarise(volume_DDD = sum(volume_DDD))

ggplot(Nat_time_series, aes(x = year_month, y = volume_DDD, group = vtmnm)) +
  geom_line(aes(color = vtmnm), size = 2) +
  labs(x = "Month", y = "Total volume issued in hospitals - DDD") +
  scale_y_continuous(labels = scales::number) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90)) +
  ggtitle("Prescribing of asthma biologics over time - National")

At a regional level it looks like the take up of asthma biologics does vary by region - London and the North West seem to be the drivers of the increased use of Benralizumab with the North East and Yorkshire, the Midlands and the South East using more of Mepolizumab. There is a large variation in volume of use of Omalizumab between regions, with the North East and Yorkshire having the highest use over time and East of England having the lowest use.

Reg_time_series <- asthma_biologics_with_DDD %>%
  group_by(COMM_REGION_NAME, year_month, vtmnm) %>%
  summarise(volume_DDD = sum(volume_DDD))

ggplot(Reg_time_series, aes(x = year_month, y = volume_DDD, group = COMM_REGION_NAME)) +
  geom_line(aes(color = COMM_REGION_NAME), size = 1) +
  facet_wrap(facets=vars(vtmnm)) +
  labs(x = "Month", y = "Total volume issued in hospitals - DDD") +
  scale_y_continuous(labels = scales::number) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90),
        legend.position = "bottom") +
  ggtitle("Prescribing of asthma biologics over time - Regional")

Variation in the use of Asthma biologics - by region and trust

We can look at the total issues of asthma biologics over the latest 12 months of data available, August 2019 to July 2020 inclusive, to understand the variation in total issues and type of issues.

At a regional level the volume of total asthma biologics issued in hospitals ranges from 141,000 DDDs in the East of England to 694,000 DDDs in the North East and Yorkshire. Across most regions Omalizumab and Mepolizumab make up the vast majority of issues, with the exception of London where Benralizumab has the greatest share of issues.

# Look at regional use by product
Reg_split <- asthma_biologics_with_DDD %>%
  filter(year_month >= as.Date("2019-08-01") & year_month <= as.Date("2020-07-01")) %>%
  group_by(COMM_REGION_NAME, vtmnm) %>%
  summarise(volume_DDD = sum(volume_DDD)) %>%
  group_by(COMM_REGION_NAME) %>%
  mutate(prop_use = volume_DDD / sum(volume_DDD),
         pos = cumsum(volume_DDD) - volume_DDD/2,
         total = sum(volume_DDD)) %>%
  ungroup() %>%
  arrange(desc(total))

ggplot(data = Reg_split, aes(x = reorder(COMM_REGION_NAME,total), y = volume_DDD, fill = vtmnm)) +
  geom_bar(position = "stack", stat = "identity") +
  theme_bw() +
  labs(x = "Region",
       y = "Volume of asthma biologics issues - DDDs") +
  theme(strip.text.x = element_text(size = 8),
        panel.grid.major.x = element_blank(),
        legend.position = "bottom") + 
  scale_y_continuous(labels = scales::number) +
  ggtitle(label = "Regional use of asthma biologics",
          subtitle = "Between August 2019 and July 2020")

At a trust level, again there is clear variation in the total issues of asthma biologics between August 2019 and July 2020 and in the type of asthma biologic used. For trusts with very low issues Omalizumab seems to be the preferred choice, whereas there is more variation in the type of asthma biologic used in trusts with higher volumes of issues.

# Look at trust use by product
Trust_split <- asthma_biologics_with_DDD %>%
  filter(year_month >= as.Date("2019-08-01") & year_month <= as.Date("2020-07-01")) %>%
  group_by(trust_name, ods_code, vtmnm) %>%
  summarise(volume_DDD = sum(volume_DDD)) %>%
  group_by(trust_name, ods_code) %>%
  mutate(prop_use = volume_DDD / sum(volume_DDD),
         pos = cumsum(volume_DDD) - volume_DDD/2,
         total = sum(volume_DDD)) %>%
  ungroup() %>%
  arrange(desc(total))

# stacked bar chart
ggplot(data = Trust_split, aes(x = reorder(ods_code,total), y = volume_DDD, fill = vtmnm)) +
  geom_bar(position = "stack", stat = "identity") +
  theme_bw() +
  labs(x = "Trust",
       y = "Volume of asthma biologics issues - DDDs") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        strip.text.x = element_text(size = 8),
        panel.grid.major.x = element_blank(),
        legend.position = "bottom") + 
  scale_y_continuous(labels = scales::number) +
  ggtitle(label = "Trust use of asthma biologics",
          subtitle = "Between August 2019 and July 2020")

# scatter plot - total asthma biologic prescribing by % Omalizumab
trust_volume_by_prop_Omal <- asthma_biologics_with_DDD %>%
  filter(year_month >= as.Date("2019-08-01") & year_month <= as.Date("2020-07-01")) %>%
  mutate(vol_omalizumab = ifelse(vtmnm == "Omalizumab", volume_DDD, 0)) %>%
  group_by(ods_code) %>%
  summarise(volume_DDD = sum(volume_DDD),
            prop_omalizumab = sum(vol_omalizumab) / sum(volume_DDD)) %>%
  arrange(desc(volume_DDD))

ggplot(trust_volume_by_prop_Omal, aes(x = volume_DDD, y = prop_omalizumab)) +
  geom_point(size = 2, alpha=0.2, shape=16) +
  labs(x = "Total asthma biologic issues in DDDs", y = "% of total volume through Omalizumab") +
  scale_x_continuous(labels = scales::number) +
  scale_y_continuous(labels = scales::percent) +
  theme_bw() +
  ggtitle(label = "Comparing prescribing of Asthma biologics and % of prescribing through Omalizumab",
          subtitle = "Trust level - Between August 2019 and July 2020")

Top twenty trusts

Looking at the twenty trusts that use the greatest volume of asthma biologics we can see that University of Manchester and Guy’s and St Thomas’ trusts are the outliers in terms of total usage and Royal Brompton & Harefield (see caveats section) trust stands out because there is no use of Omalizumab.

# Top 20 trusts
Trust_split_Top20 <- Trust_split %>%
  mutate(rank = dense_rank(desc(total))) %>%
  arrange(desc(total)) %>%
  filter(rank <= 20) %>%
  mutate(trust_name = as.character(trust_name),
         trust_name = case_when(ods_code == "RM2" ~ "UNIVERSITY HOSPITAL OF SOUTH MANCHESTER NHS FOUNDATION TRUST",
                                ods_code == "RR1" ~  "HEART OF ENGLAND NHS FOUNDATION TRUST",
                                TRUE ~ trust_name)
  )

ggplot(data = Trust_split_Top20, aes(x = reorder(trust_name,total), y = volume_DDD, fill = vtmnm)) +
  geom_bar(position = "stack", stat = "identity") +
  theme_bw() +
  labs(x = "Trust",
       y = "Volume of asthma biologics issues - DDDs") +
  theme(panel.grid.major.y = element_blank(),
        legend.position = "bottom") + 
  scale_y_continuous(labels = scales::number) +
  ggtitle(label = "Trust use of asthma biologics - Top 20 trusts by DDD volume",
          subtitle = "Between August 2019 and July 2020") +
  coord_flip()

Data Caveats

A detailed description of the data can be read on the NHS Business Services Authority website. We note some further caveats relevant to this analysis:

  • ODS codes: The published ODS codes are not all current so some hospital trusts may have older names.

  • Omalizumab usage at the Royal Brompton: There apears to be no use of omalizumab at RBHT recorded in the data. Our investigations to date suggest that there is.

We will share both of these findings with the NHS Business Services Authority.