Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve figures #77

Merged
merged 7 commits into from
Dec 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/functions/get_pf_consultation_validation_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ get_dispensing_data <- function(start_date = NULL, end_date = NULL) {
}

# Calculate summary of counts
df_dispensing_data <- get_dispensing_data(start_date = "2024-02-01")
df_dispensing_data <- get_dispensing_data(start_date = "2023-11-01")

df_dispensing_data_summary <- df_dispensing_data |>
group_by(date) |>
Expand Down Expand Up @@ -132,4 +132,5 @@ df_dispensing_data_summary <- df_dispensing_data |>
) |>
mutate(consultation_type = str_replace(consultation_type, "^n_pf_consultation_", ""))

range(df_dispensing_data_summary$date)
write_csv(df_dispensing_data_summary, here("lib", "validation", "data", "pf_consultation_validation_data.csv"))
3 changes: 2 additions & 1 deletion lib/functions/get_pf_medication_validation_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ get_dataset_table_names <- function(dataset_id, start_date = NULL, end_date = NU
dataset_tables
}

get_dataset_table_names("prescription-cost-analysis-pca-monthly-data", "2024-09-01")
get_dataset_table_names("prescription-cost-analysis-pca-monthly-data", "2024-01-01")

construct_sql_query <- function(table_name, sql_query) {
gsub("{FROM_TABLE}", sprintf("FROM `%s`", table_name), sql_query, fixed = TRUE)
Expand Down Expand Up @@ -108,6 +108,7 @@ df_validate <- get_nhsbsa_data("prescription-cost-analysis-pca-monthly-data", sq

names(df_validate)
unique(df_validate$pharmacy_advanced_service)
range(df_validate$date)

pf_medication_validation_data <- df_validate |>
select(date, snomed_code, pharmacy_advanced_service, bnf_section, bnf_paragraph, items) |>
Expand Down
88 changes: 88 additions & 0 deletions lib/functions/load_opensafely_outputs.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Load data based on execution environment
if (Sys.getenv("OPENSAFELY_BACKEND") != "") {
# Load data from generate_pf_measures action
df_measures <- readr::read_csv(
here("output", "measures", "pf_codes_conditions_measures.csv")
)
df_descriptive_stats <- read_csv(
here("output", "measures", "pf_descriptive_stats_measures.csv")
)
df_pfmed <- read_csv(
here("output", "measures", "pf_medications_measures.csv")
)
df_condition_provider <- read_csv(
here("output", "measures", "pf_condition_provider_measures.csv")
)
} else {
# Load data from released_output directory
df_measures <- readr::read_csv(
here("released_output", "measures", "pf_codes_conditions_measures.csv")
)
df_descriptive_stats <- read_csv(
here("released_output", "measures", "pf_descriptive_stats_measures.csv")
)
df_pfmed <- read_csv(
here("released_output", "measures", "pf_medications_measures.csv")
)
df_condition_provider <- read_csv(
here("released_output", "measures", "pf_condition_provider_measures.csv")
)
}

df_measures <- tidy_measures(
data = df_measures,
pf_measures_name_dict = pf_measures_name_dict,
pf_measures_name_mapping = pf_measures_name_mapping,
pf_measures_groupby_dict = pf_measures_groupby_dict
)

df_measures$ethnicity <- factor(
df_measures$ethnicity,
levels = c(
"White",
"Mixed",
"Asian or Asian British",
"Black or Black British",
"Chinese or Other Ethnic Groups",
"Missing"
),
ordered = TRUE
)

df_measures$age_band <- factor(
df_measures$age_band,
levels = c(
"0-19",
"20-39",
"40-59",
"60-79",
"80+",
"Missing"
),
ordered = TRUE
)

df_measures$region <- factor(
df_measures$region,
levels = c(
"East",
"East Midlands",
"London",
"North East",
"North West",
"South East",
"South West",
"West Midlands",
"Yorkshire and The Humber",
"Missing"
),
ordered = TRUE
)

df_measures <- df_measures %>%
mutate(sex = factor(sex,
levels = c("female", "male"),
labels = c("Female", "Male")
))

df_measures$age_band[is.na(df_measures$age_band)] <- "Missing"
42 changes: 42 additions & 0 deletions lib/functions/load_validation_data.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
library(readr)
library(tidyr)
library(dplyr)
library(here)

df_bsa_consultation_validation <- read_csv(
here("lib", "validation", "data", "pf_consultation_validation_data.csv")
) %>%
rename(count_100pct = count) |>
mutate(count_40pct = round(as.numeric(count_100pct * .4), digits = 0)) %>%
mutate(source = "nhs_bsa") |>
pivot_longer(
cols = c(count_100pct, count_40pct),
names_to = "count_method",
values_to = "count"
)

df_bsa_consultation_validation <- df_bsa_consultation_validation %>%
mutate(consultation_type = factor(consultation_type,
levels = c(
"sinusitis",
"infected_insect_bites",
"uncomplicated_uti",
"acute_otitis_media",
"acute_sore_throat",
"shingles",
"impetigo"
),
labels = c(
"Acute Sinusitis",
"Infected Insect Bite",
"UTI",
"Acute Otitis Media",
"Acute Pharyngitis",
"Herpes Zoster",
"Impetigo"
)
))

df_bsa_medication_validation <- read_csv(
here("lib", "validation", "data", "pf_medication_validation_data.csv")
)
6 changes: 6 additions & 0 deletions lib/functions/plot_measures.R
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,9 @@ plot_measures <- function(

plot_tmp
}

# Colour palettes
gradient_palette <- c("#001F4D", "#0056B3", "#007BFF", "#66B3E2", "#A4D8E1", "grey")
region_palette <- c("red", "navy", "#018701", "#ffa600ca", "purple", "brown", "#f4a5b2", "cyan", "green", "grey")
ethnicity_palette <- c("#42db0188", "#0056B3", "#ff0000c2", "#a52a2a5a", "purple", "grey")
sex_palette <- c("red", "blue")
35 changes: 35 additions & 0 deletions lib/functions/tidy_measures.R
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
# Define dictionaries with tidy names and mappings for measures
pf_measures_name_dict <- list(
consultation_service = "Consultation Service",
pharmacy_first_service = "Pharmacy First Consultation",
combined_pf_service = "Pharmacy First Consultations (Combined)",
acute_otitis_media = "Acute Otitis Media",
herpes_zoster = "Herpes Zoster",
acute_sinusitis = "Acute Sinusitis",
impetigo = "Impetigo",
infected_insect_bite = "Infected Insect Bite",
acute_pharyngitis = "Acute Pharyngitis",
uncomplicated_urinary_tract_infection = "UTI"
)

pf_measures_name_mapping <- list(
consultation_service = "clinical_service",
pharmacy_first_service = "clinical_service",
combined_pf_service = "pharmacy_first_services",
acute_otitis_media = "clinical_condition",
herpes_zoster = "clinical_condition",
acute_sinusitis = "clinical_condition",
impetigo = "clinical_condition",
infected_insect_bite = "clinical_condition",
acute_pharyngitis = "clinical_condition",
uncomplicated_urinary_tract_infection = "clinical_condition"
)

pf_measures_groupby_dict <- list(
age_band = "Age band",
sex = "Sex",
imd = "IMD",
region = "Region",
ethnicity = "Ethnicity"
)

#' Tidy measures data
#'
#' Creates a tidier dataframe of measures data.
Expand Down
28 changes: 28 additions & 0 deletions lib/validation/data/pf_consultation_validation_data.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,25 @@
date,consultation_type,count
2023-11-01,acute_otitis_media,0
2023-11-01,acute_sore_throat,0
2023-11-01,impetigo,0
2023-11-01,infected_insect_bites,0
2023-11-01,shingles,0
2023-11-01,sinusitis,0
2023-11-01,uncomplicated_uti,0
2023-12-01,acute_otitis_media,0
2023-12-01,acute_sore_throat,0
2023-12-01,impetigo,0
2023-12-01,infected_insect_bites,0
2023-12-01,shingles,0
2023-12-01,sinusitis,0
2023-12-01,uncomplicated_uti,0
2024-01-01,acute_otitis_media,0
2024-01-01,acute_sore_throat,0
2024-01-01,impetigo,0
2024-01-01,infected_insect_bites,0
2024-01-01,shingles,0
2024-01-01,sinusitis,0
2024-01-01,uncomplicated_uti,0
2024-02-01,acute_otitis_media,18893
2024-02-01,acute_sore_throat,41014
2024-02-01,impetigo,6816
Expand Down Expand Up @@ -41,3 +62,10 @@ date,consultation_type,count
2024-07-01,shingles,5103
2024-07-01,sinusitis,14115
2024-07-01,uncomplicated_uti,51321
2024-08-01,acute_otitis_media,17915
2024-08-01,acute_sore_throat,40771
2024-08-01,impetigo,7448
2024-08-01,infected_insect_bites,44391
2024-08-01,shingles,5151
2024-08-01,sinusitis,10970
2024-08-01,uncomplicated_uti,53389
Loading
Loading