| Title: | Manipulate 'EpiTrax' Data and Generate Reports |
|---|---|
| Description: | A fast, flexible tool for generating disease surveillance reports from data exported from 'EpiTrax', a central repository for epidemiological data used by public health officials. It provides functions to manipulate 'EpiTrax' datasets, tailor reports to internal or public use, and export reports in CSV, Excel 'xlsx', or PDF formats. |
| Authors: | Andrew Pulsipher [aut, cre] (ORCID: <https://orcid.org/0000-0002-0773-3210>), Nate Lanza [aut, ctb], Madeline George [ctb], Zachary Heuscher [ctb], Centers for Disease Control and Prevention's Center for Forecasting and Outbreak Analytics [fnd] (Cooperative agreement CDC-RFA-FT-23-0069) |
| Maintainer: | Andrew Pulsipher <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.5.1 |
| Built: | 2026-06-05 08:06:25 UTC |
| Source: | https://github.com/EpiForeSITE/epitraxr |
clear_old_reports deletes reports from previous runs and returns a list of
the reports that were deleted.
clear_old_reports(internal, public)clear_old_reports(internal, public)
internal |
Filepath. Folder for internal reports. |
public |
Filepath. Folder for public reports. |
The list of old reports that were cleared.
ireports_folder <- file.path(tempdir(), "internal") preports_folder <- file.path(tempdir(), "public") dir.create(ireports_folder) dir.create(preports_folder) clear_old_reports(ireports_folder, preports_folder) unlink(c(ireports_folder, preports_folder), recursive = TRUE)ireports_folder <- file.path(tempdir(), "internal") preports_folder <- file.path(tempdir(), "public") dir.create(ireports_folder) dir.create(preports_folder) clear_old_reports(ireports_folder, preports_folder) unlink(c(ireports_folder, preports_folder), recursive = TRUE)
'compute_trend' compares values of two columns and produces a new column containing the trend result. The trend is represented by one of three values:
"Elevated": increase from baseline
"Less Than Expected": decrease from baseline
"Expected": no change from baseline
compute_trend(current, historical, threshold = 0)compute_trend(current, historical, threshold = 0)
current |
List. Current data. |
historical |
List. Historical comparison data. |
threshold |
Numeric. Percentage threshold (as decimal) for determining trend significance. Values within this percentage of the historical value are considered "Expected". Defaults to 0.0 (any difference triggers trend). |
Character vector containing the trend labels.
# Without threshold - any difference triggers trend compute_trend(c(5, 10, 10), c(3, 10, 11)) # With 15% threshold - small changes are "Expected" compute_trend(c(5, 10, 10), c(3, 10, 11), threshold = 0.15)# Without threshold - any difference triggers trend compute_trend(c(5, 10, 10), c(3, 10, 11)) # With 15% threshold - small changes are "Expected" compute_trend(c(5, 10, 10), c(3, 10, 11), threshold = 0.15)
'convert_counts_to_rate' converts case counts for a given population to an adjusted per population of size X and rounds to the given number of digits.
convert_counts_to_rate(counts, pop, digits, rate_adj_pop = 1e+05)convert_counts_to_rate(counts, pop, digits, rate_adj_pop = 1e+05)
counts |
Integer(s). Case counts to convert. |
pop |
Integer. Population size where cases were counted. |
digits |
Integer. Number of decimals to round to. |
rate_adj_pop |
Integer. Optional target population to use for rate. Defaults to 100k for rate per 100k. |
The count(s) as rates per rate_adj_pop.
convert_counts_to_rate(50, 200000, 2) convert_counts_to_rate(c(10, 20), 100000, 1, 10000)convert_counts_to_rate(50, 200000, 2) convert_counts_to_rate(c(10, 20), 100000, 1, 10000)
create_epitrax_from_file reads an EpiTrax data file and creates a structured object
containing the data along with commonly used metadata and empty report lists.
create_epitrax_from_file(filepath = NULL, num_yrs = 5)create_epitrax_from_file(filepath = NULL, num_yrs = 5)
filepath |
Optional filepath. EpiTrax data file should be a CSV. If this parameter is NULL, the user will be prompted to choose a file interactively. |
num_yrs |
Integer. Number of years of data to keep. Defaults to 5. |
An object of class epitrax containing:
data: The validated and formatted EpiTrax data
diseases: Vector of unique diseases in the dataset
yrs: Vector of years in the dataset
report_year: Most recent year in the dataset
report_month: Most recent month in report_year
internal_reports: Empty list to store internal reports
public_reports: Empty list to store public reports
read_epitrax_data() which this function wraps and
setup_epitrax() which wraps this function
if (interactive()) { # Interactive file chooser: create_epitrax_from_file() } # Using sample data included with package data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") epitrax <- create_epitrax_from_file(data_file) # Access components head(epitrax$data) epitrax$diseases epitrax$report_yearif (interactive()) { # Interactive file chooser: create_epitrax_from_file() } # Using sample data included with package data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") epitrax <- create_epitrax_from_file(data_file) # Access components head(epitrax$data) epitrax$diseases epitrax$report_year
create_filesystem creates the given folders if they don't already exist.
create_filesystem(internal, public, settings)create_filesystem(internal, public, settings)
internal |
Filepath. Folder for internal reports. |
public |
Filepath. Folder for public reports. |
settings |
Filepath. Folder for report settings. |
NULL.
internal_folder = file.path(tempdir(), "internal") public_folder = file.path(tempdir(), "public") settings_folder = file.path(tempdir(), "settings") create_filesystem( internal = internal_folder, public = public_folder, settings = settings_folder ) unlink(c(internal_folder, public_folder, settings_folder), recursive = TRUE)internal_folder = file.path(tempdir(), "internal") public_folder = file.path(tempdir(), "public") settings_folder = file.path(tempdir(), "settings") create_filesystem( internal = internal_folder, public = public_folder, settings = settings_folder ) unlink(c(internal_folder, public_folder, settings_folder), recursive = TRUE)
'create_public_report_combined_month_ytd' creates a comprehensive public report that combines monthly case data with year-to-date statistics for the given month and year. This provides both current month context and cumulative year progress.
create_public_report_combined_month_ytd(data, diseases, y, m, config)create_public_report_combined_month_ytd(data, diseases, y, m, config)
data |
Dataframe. Input data with columns:
|
diseases |
Dataframe. Diseases to include in the report. Maps EpiTrax disease names to public-facing versions. Must have columns:
|
y |
Integer. Report year |
m |
Integer. Report month (1-12) |
config |
List. Report settings |
Uses the following config options:
current_population
avg_5yr_population
rounding_decimals
trend_threshold
List containing the report name and combined monthly/YTD report data with columns for monthly cases/averages/trends and YTD statistics.
create_public_report_month(), create_report_ytd_counts() which this
function uses and epitraxr_config() for config options
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") # Read in EpiTrax data data <- read_epitrax_data(data_file) diseases <- data.frame( EpiTrax_name = c("Influenza", "COVID-19", "Measles", "Syphilis"), Public_name = c("Influenza", "COVID-19", "Measles", "Syphilis") ) config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") config <- get_report_config(config_file) create_public_report_combined_month_ytd( data = data, diseases = diseases, y = 2024, m = 2, config = config )data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") # Read in EpiTrax data data <- read_epitrax_data(data_file) diseases <- data.frame( EpiTrax_name = c("Influenza", "COVID-19", "Measles", "Syphilis"), Public_name = c("Influenza", "COVID-19", "Measles", "Syphilis") ) config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") config <- get_report_config(config_file) create_public_report_combined_month_ytd( data = data, diseases = diseases, y = 2024, m = 2, config = config )
'create_public_report_month' creates a public report for the given month.
create_public_report_month(data, diseases, y, m, config)create_public_report_month(data, diseases, y, m, config)
data |
Dataframe. Input data with columns:
|
diseases |
Dataframe. Diseases to include in the report. Maps EpiTrax disease names to public-facing versions. Must have columns:
|
y |
Integer. Report year |
m |
Integer. Report month (1-12) |
config |
List. Report settings |
Uses the following config options:
current_population
avg_5yr_population
rounding_decimals
trend_threshold
List containing the report name and data.
get_month_counts(), create_report_monthly_avgs() which
this function uses and epitraxr_config() for config options
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") # Read in EpiTrax data data <- read_epitrax_data(data_file) diseases <- data.frame( EpiTrax_name = c("Influenza", "COVID-19", "Measles", "Syphilis"), Public_name = c("Influenza", "COVID-19", "Measles", "Syphilis") ) config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") config <- get_report_config(config_file) create_public_report_month( data = data, diseases = diseases, y = 2024, m = 1, config = config )data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") # Read in EpiTrax data data <- read_epitrax_data(data_file) diseases <- data.frame( EpiTrax_name = c("Influenza", "COVID-19", "Measles", "Syphilis"), Public_name = c("Influenza", "COVID-19", "Measles", "Syphilis") ) config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") config <- get_report_config(config_file) create_public_report_month( data = data, diseases = diseases, y = 2024, m = 1, config = config )
'create_public_report_ytd' creates a public report for YTD rates.
create_public_report_ytd(data, diseases, y, m, config)create_public_report_ytd(data, diseases, y, m, config)
data |
Dataframe. Input data with columns:
|
diseases |
Dataframe. Diseases to include in the report. Maps EpiTrax disease names to public-facing versions. Must have columns:
|
y |
Integer. Report year |
m |
Integer. Report month (1-12) |
config |
List. Report settings |
Uses the following config options:
current_population
avg_5yr_population
rounding_decimals
trend_threshold
List containing the report name and data.
create_report_ytd_counts() which this function uses
and epitraxr_config() for config options
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") # Read in EpiTrax data data <- read_epitrax_data(data_file) diseases <- data.frame( EpiTrax_name = c("Influenza", "COVID-19", "Measles", "Syphilis"), Public_name = c("Influenza", "COVID-19", "Measles", "Syphilis") ) config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") config <- get_report_config(config_file) create_public_report_ytd( data = data, diseases = diseases, y = 2024, m = 1, config = config )data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") # Read in EpiTrax data data <- read_epitrax_data(data_file) diseases <- data.frame( EpiTrax_name = c("Influenza", "COVID-19", "Measles", "Syphilis"), Public_name = c("Influenza", "COVID-19", "Measles", "Syphilis") ) config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") config <- get_report_config(config_file) create_public_report_ytd( data = data, diseases = diseases, y = 2024, m = 1, config = config )
'create_report_annual_counts' generates a data frame of annual case counts for each disease, with years as columns.
create_report_annual_counts(data, diseases)create_report_annual_counts(data, diseases)
data |
Dataframe. Input data with columns:
|
diseases |
Character vector. Diseases to include in the report |
Dataframe of annual counts with one row per disease and one column per year.
data <- data.frame( disease = c("A", "A", "B"), year = c(2020, 2021, 2020), counts = c(5, 7, 8) ) create_report_annual_counts(data, diseases = c("A", "B", "C"))data <- data.frame( disease = c("A", "A", "B"), year = c(2020, 2021, 2020), counts = c(5, 7, 8) ) create_report_annual_counts(data, diseases = c("A", "B", "C"))
'create_report_grouped_stats' generates a comprehensive report with current and historical statistics for diseases organized by group. The report includes monthly counts/rates, year-to-date counts, and trend analysis.
create_report_grouped_stats(data, diseases, y, m, config, is.public = FALSE)create_report_grouped_stats(data, diseases, y, m, config, is.public = FALSE)
data |
Dataframe. Input data with columns:
|
diseases |
Dataframe. Diseases to include in the report. Must have column
|
y |
Integer. Report year |
m |
Integer. Report month (1-12) |
config |
List. Report settings |
is.public |
Logical. If TRUE, uses public-facing disease names. |
Uses the following config options:
current_population
avg_5yr_population
rounding_decimals
trend_threshold
Dataframe with one row per disease containing:
Group: Disease group name
Disease: Disease name
Monthly counts and rates for current year/month
Historical monthly averages and medians
Year-to-date counts and historical averages and medians
YTD trend indicators
create_report_monthly_counts(), create_report_monthly_avgs(),
create_report_monthly_medians(), create_report_ytd_counts(),
create_report_ytd_medians() which this function uses and epitraxr_config()
for config options
data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2023, 2024, 2023, 2024), month = c(1, 1, 2, 2), counts = c(10, 20, 15, 25) ) diseases <- data.frame( EpiTrax_name = c("A", "B", "C"), Group_name = c("Group1", "Group1", "Group2") ) config <- list( current_population = 100000, avg_5yr_population = 100000, rounding_decimals = 1, trend_threshold = 0.15 ) create_report_grouped_stats(data, diseases, 2024, 2, config)data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2023, 2024, 2023, 2024), month = c(1, 1, 2, 2), counts = c(10, 20, 15, 25) ) diseases <- data.frame( EpiTrax_name = c("A", "B", "C"), Group_name = c("Group1", "Group1", "Group2") ) config <- list( current_population = 100000, avg_5yr_population = 100000, rounding_decimals = 1, trend_threshold = 0.15 ) create_report_grouped_stats(data, diseases, 2024, 2, config)
'create_report_monthly_avgs' generates a data frame of average monthly case counts for each disease across all years in the input data.
create_report_monthly_avgs(data, diseases, config)create_report_monthly_avgs(data, diseases, config)
data |
Dataframe. Input data with columns:
|
diseases |
Character vector. Diseases to include in the report |
config |
List. Report settings |
Uses the following config options:
rounding_decimals
Dataframe of monthly averages with one row per disease and one column per month (Jan through Dec).
epitraxr_config() for config options
data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2023, 2024, 2023, 2024), month = c(1, 1, 2, 2), counts = c(10, 20, 15, 25) ) config <- list(rounding_decimals = 1) create_report_monthly_avgs(data, c("A", "B", "C"), config)data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2023, 2024, 2023, 2024), month = c(1, 1, 2, 2), counts = c(10, 20, 15, 25) ) config <- list(rounding_decimals = 1) create_report_monthly_avgs(data, c("A", "B", "C"), config)
'create_report_monthly_counts' generates a data frame of monthly case counts for each disease for a specific year, with months as columns.
create_report_monthly_counts(data, diseases, y)create_report_monthly_counts(data, diseases, y)
data |
Dataframe. Input data with columns:
|
diseases |
Character vector. Diseases to include in the report |
y |
Integer. Report year |
Dataframe of monthly counts with one row per disease and one column per month (Jan through Dec).
data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2024, 2024, 2024, 2023), month = c(1, 2, 1, 4), counts = c(5, 7, 8, 9) ) create_report_monthly_counts(data, diseases = c("A", "B", "C"), y = 2024)data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2024, 2024, 2024, 2023), month = c(1, 2, 1, 4), counts = c(5, 7, 8, 9) ) create_report_monthly_counts(data, diseases = c("A", "B", "C"), y = 2024)
'create_report_monthly_medians' generates a data frame of median monthly case counts for each disease across all years in the input data. This provides a more robust central tendency measure compared to averages for skewed data.
create_report_monthly_medians(data, diseases)create_report_monthly_medians(data, diseases)
data |
Dataframe. Input data with columns:
|
diseases |
Character vector. Diseases to include in the report |
Dataframe of monthly medians with one row per disease and one column per month (Jan through Dec).
data <- data.frame( disease = c("A", "A", "A", "B", "B", "B"), year = c(2022, 2023, 2024, 2022, 2023, 2024), month = c(1, 1, 1, 2, 2, 2), counts = c(10, 20, 30, 5, 15, 25) ) create_report_monthly_medians(data, c("A", "B", "C"))data <- data.frame( disease = c("A", "A", "A", "B", "B", "B"), year = c(2022, 2023, 2024, 2022, 2023, 2024), month = c(1, 1, 1, 2, 2, 2), counts = c(10, 20, 30, 5, 15, 25) ) create_report_monthly_medians(data, c("A", "B", "C"))
'create_report_ytd_counts' generates a data frame of year-to-date counts for each disease up to the given month, comparing the given year to the average of other years.
create_report_ytd_counts(data, diseases, y, m, config, as.rates = FALSE)create_report_ytd_counts(data, diseases, y, m, config, as.rates = FALSE)
data |
Dataframe. Input data with columns:
|
diseases |
Character vector. Diseases to include in the report |
y |
Integer. Report year |
m |
Integer. Report month (1-12) |
config |
List. Report settings |
as.rates |
Logical. If TRUE, returns rates per 100k instead of raw counts |
Uses the following config options:
current_population
avg_5yr_population
rounding_decimals
Dataframe with one row per disease and columns for current YTD and average YTD values (either counts or rates per 100k)
epitraxr_config() for config options
data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2024, 2023, 2024, 2023), month = c(1, 1, 2, 2), counts = c(10, 20, 15, 25) ) config <- list( current_population = 100000, avg_5yr_population = 100000, rounding_decimals = 1 ) create_report_ytd_counts(data, c("A", "B", "C"), 2024, 2, config)data <- data.frame( disease = c("A", "A", "B", "B"), year = c(2024, 2023, 2024, 2023), month = c(1, 1, 2, 2), counts = c(10, 20, 15, 25) ) config <- list( current_population = 100000, avg_5yr_population = 100000, rounding_decimals = 1 ) create_report_ytd_counts(data, c("A", "B", "C"), 2024, 2, config)
'create_report_ytd_medians' generates a data frame of median year-to-date
counts for each disease up to the given month (months 1:m) across all years in the data.
This provides a robust central tendency measure for YTD values.
create_report_ytd_medians(data, diseases, m)create_report_ytd_medians(data, diseases, m)
data |
Dataframe. Input data with columns:
|
diseases |
Character vector. Diseases to include in the report |
m |
Integer. Report month (1-12) |
Dataframe with one row per disease and columns for disease name and median YTD counts.
data <- data.frame( disease = c("A", "A", "A", "B", "B", "B"), year = c(2022, 2023, 2024, 2022, 2023, 2024), month = c(1, 1, 2, 2, 2, 3), counts = c(10, 15, 20, 5, 8, 12) ) create_report_ytd_medians(data, c("A", "B", "C"), 2)data <- data.frame( disease = c("A", "A", "A", "B", "B", "B"), year = c(2022, 2023, 2024, 2022, 2023, 2024), month = c(1, 1, 2, 2, 2, 3), counts = c(10, 15, 20, 5, 8, 12) ) create_report_ytd_medians(data, c("A", "B", "C"), 2)
epitrax_ireport_annual_counts generates an internal report of annual
counts for each disease in the EpiTrax object data.
epitrax_ireport_annual_counts(epitrax)epitrax_ireport_annual_counts(epitrax)
epitrax |
Object of class |
Updated EpiTrax object with annual_counts added to the
internal_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_annual_counts() epitrax$internal_reports$annual_countsdata_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_annual_counts() epitrax$internal_reports$annual_counts
epitrax_ireport_monthly_avgs generates an internal report of monthly
averages for all years in the EpiTrax object data, with the option to exclude
the current report year.
epitrax_ireport_monthly_avgs(epitrax, exclude.report.year = FALSE)epitrax_ireport_monthly_avgs(epitrax, exclude.report.year = FALSE)
epitrax |
Object of class |
exclude.report.year |
Logical indicating whether to exclude the current report year from the report. Defaults to FALSE. |
Updated EpiTrax object with monthly averages report added to the
internal_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_monthly_avgs() names(epitrax$internal_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_monthly_avgs() names(epitrax$internal_reports)
epitrax_ireport_monthly_counts_all_yrs generates internal reports of
monthly counts for each year in the EpiTrax object data.
epitrax_ireport_monthly_counts_all_yrs(epitrax)epitrax_ireport_monthly_counts_all_yrs(epitrax)
epitrax |
Object of class |
Updated EpiTrax object with monthly counts reports for each year
added to the internal_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_monthly_counts_all_yrs() names(epitrax$internal_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_monthly_counts_all_yrs() names(epitrax$internal_reports)
epitrax_ireport_ytd_counts_for_month generates an internal report of
year-to-date counts up to a specific month in the EpiTrax object data.
epitrax_ireport_ytd_counts_for_month(epitrax, as.rates = FALSE)epitrax_ireport_ytd_counts_for_month(epitrax, as.rates = FALSE)
epitrax |
Object of class |
as.rates |
Logical. If TRUE, returns rates per 100k instead of raw counts. |
Updated EpiTrax object with report added to the internal_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_ytd_counts_for_month(as.rates = TRUE) names(epitrax$internal_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_ireport_ytd_counts_for_month(as.rates = TRUE) names(epitrax$internal_reports)
epitrax_preport_combined_month_ytd generates a public report of
monthly and year-to-date (YTD) disease statistics for the report month
in the EpiTrax object data.
epitrax_preport_combined_month_ytd(epitrax)epitrax_preport_combined_month_ytd(epitrax)
epitrax |
Object of class |
Updated EpiTrax object with YTD rates report added to the
public_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_combined_month_ytd() names(epitrax$public_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_combined_month_ytd() names(epitrax$public_reports)
epitrax_preport_month_crosssections generates monthly cross-section
reports. These compare the counts for a given month against the
monthly averages for the same month across previous years.
epitrax_preport_month_crosssections(epitrax, month_offsets = 0:3)epitrax_preport_month_crosssections(epitrax, month_offsets = 0:3)
epitrax |
Object of class |
month_offsets |
Numeric vector of month offsets to create reports for. Defaults to 0:3, which generates reports for the current month and the three previous months. |
Updated EpiTrax object with monthly cross-section reports added to
the public_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_month_crosssections(month_offsets = 0:1) names(epitrax$public_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_month_crosssections(month_offsets = 0:1) names(epitrax$public_reports)
epitrax_preport_ytd_rates generates a public report of year-to-date
rates for the current month in the EpiTrax object data.
epitrax_preport_ytd_rates(epitrax)epitrax_preport_ytd_rates(epitrax)
epitrax |
Object of class |
Updated EpiTrax object with YTD rates report added to the
public_reports field.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_ytd_rates() names(epitrax$public_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_ytd_rates() names(epitrax$public_reports)
epitrax_report_grouped_stats generates a comprehensive report with current
and historical statistics for diseases organized by group. The report includes
monthly counts/rates, historical averages and medians, year-to-date counts, and
trend analysis. It can be run for either internal or public reports.
epitrax_report_grouped_stats(epitrax, is.public = FALSE)epitrax_report_grouped_stats(epitrax, is.public = FALSE)
epitrax |
Object of class |
is.public |
Logical indicating whether to generate a public report using the public disease list. If FALSE (default), generates an internal report using the internal disease list. |
Updated EpiTrax object with grouped statistics report added to either
the internal_reports or public_reports field, depending on the is.public
parameter.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_grouped_stats() names(epitrax$internal_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_grouped_stats() names(epitrax$internal_reports)
epitrax_report_monthly_medians generates a report of monthly medians for all years
in the EpiTrax object data, with the option to exclude the current report year.
It can be run for either internal or public reports.
epitrax_report_monthly_medians( epitrax, is.public = FALSE, exclude.report.year = FALSE )epitrax_report_monthly_medians( epitrax, is.public = FALSE, exclude.report.year = FALSE )
epitrax |
Object of class |
is.public |
Logical indicating whether to generate a public report using the public disease list. If FALSE (default), generates an internal report using the internal disease list. |
exclude.report.year |
Logical indicating whether to exclude the current report year from the report. Defaults to FALSE. |
Updated EpiTrax object with monthly medians report added to either
the internal_reports or public_reports field, depending on the is.public
parameter.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_monthly_medians() names(epitrax$internal_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_monthly_medians() names(epitrax$internal_reports)
epitrax_report_ytd_medians generates a report of median year-to-date counts
for each disease up to the current report month across all years in the EpiTrax
object data, with the option to exclude the current report year. It can be run for
either internal or public reports.
epitrax_report_ytd_medians( epitrax, is.public = FALSE, exclude.report.year = FALSE )epitrax_report_ytd_medians( epitrax, is.public = FALSE, exclude.report.year = FALSE )
epitrax |
Object of class |
is.public |
Logical indicating whether to generate a public report using the public disease list. If FALSE (default), generates an internal report using the internal disease list. |
exclude.report.year |
Logical indicating whether to exclude the current report year from the report. Defaults to FALSE. |
Updated EpiTrax object with YTD medians report added to either
the internal_reports or public_reports field, depending on the is.public
parameter.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_ytd_medians() names(epitrax$internal_reports)data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_ytd_medians() names(epitrax$internal_reports)
epitrax_set_config_from_file reads a report configuration file and adds it to the
EpiTrax object.
epitrax_set_config_from_file(epitrax, filepath)epitrax_set_config_from_file(epitrax, filepath)
epitrax |
Object of class |
filepath |
Path to the report configuration file. |
Updated EpiTrax object with config field set.
epitrax_set_config_from_list() and the convenience function
setup_epitrax() which wraps this function
config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") epitrax <- structure( list(data = c(1,2,3)), class = "epitrax" ) epitrax <- epitrax_set_config_from_file(epitrax, config_file)config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") epitrax <- structure( list(data = c(1,2,3)), class = "epitrax" ) epitrax <- epitrax_set_config_from_file(epitrax, config_file)
epitrax_set_config_from_list sets the report configuration from the given list.
epitrax_set_config_from_list(epitrax, config = NULL)epitrax_set_config_from_list(epitrax, config = NULL)
epitrax |
Object of class |
config |
Optional list of config parameters. If omitted, default values will be used. |
Updated EpiTrax object with config field set.
epitrax_set_config_from_file() and the convenience function
setup_epitrax() which wraps this function
config <- list( current_population = 56000, avg_5yr_population = 57000, rounding_decimals = 3, generate_csvs = FALSE ) epitrax <- structure( list(data = c(1,2,3)), class = "epitrax" ) epitrax <- epitrax_set_config_from_list(epitrax, config)config <- list( current_population = 56000, avg_5yr_population = 57000, rounding_decimals = 3, generate_csvs = FALSE ) epitrax <- structure( list(data = c(1,2,3)), class = "epitrax" ) epitrax <- epitrax_set_config_from_list(epitrax, config)
epitrax_set_report_diseases reads internal and public disease lists and
adds them to the EpiTrax object.
epitrax_set_report_diseases(epitrax, disease_list_files = NULL)epitrax_set_report_diseases(epitrax, disease_list_files = NULL)
epitrax |
Object of class |
disease_list_files |
Optional list containing filepaths to internal and public report disease lists. If omitted, the default lists will be used and a warning will be given. |
Updated EpiTrax object with report_diseases field set.
setup_epitrax() the convenience function which wraps this function
i_file <- system.file("tinytest/test_files/disease_lists/internal_list.csv", package = "epitraxr") p_file <- system.file("tinytest/test_files/disease_lists/public_list.csv", package = "epitraxr") epitrax <- structure( list(data = c(1,2,3)), class = "epitrax" ) epitrax <- epitrax_set_report_diseases( epitrax, disease_list_files = list( internal = i_file, public = p_file ) )i_file <- system.file("tinytest/test_files/disease_lists/internal_list.csv", package = "epitraxr") p_file <- system.file("tinytest/test_files/disease_lists/public_list.csv", package = "epitraxr") epitrax <- structure( list(data = c(1,2,3)), class = "epitrax" ) epitrax <- epitrax_set_report_diseases( epitrax, disease_list_files = list( internal = i_file, public = p_file ) )
epitrax_write_csvs writes the internal and public reports from an EpiTrax
object to CSV files in the specified filesystem. Doesn't write files if
the EpiTrax config setting generate_csvs is set to false.
epitrax_write_csvs(epitrax, fsys)epitrax_write_csvs(epitrax, fsys)
epitrax |
Object of class |
fsys |
Filesystem list containing paths for internal and public reports. |
The original EpiTrax object, unchanged.
fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_ytd_rates() |> epitrax_write_csvs(fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE)fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_ytd_rates() |> epitrax_write_csvs(fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE)
epitrax_write_pdf_grouped_stats writes the grouped statistics reports from
an EpiTrax object to PDF files using a formatted template. It processes both
internal and public grouped statistics reports.
epitrax_write_pdf_grouped_stats(epitrax, params, fsys, trend.only = FALSE)epitrax_write_pdf_grouped_stats(epitrax, params, fsys, trend.only = FALSE)
epitrax |
Object of class |
params |
List. Report parameters containing:
|
fsys |
Filesystem list containing paths for internal and public reports. |
trend.only |
Logical. Whether to show only trend in the PDF report. |
The original EpiTrax object, unchanged.
## Not run: # Example not run because it requires LaTeX installation fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) fsys <- setup_filesystem(fsys) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) params <- list( title = "Monthly Grouped Disease Statistics" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_grouped_stats() |> epitrax_write_pdf_grouped_stats(params = params, fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE) ## End(Not run)## Not run: # Example not run because it requires LaTeX installation fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) fsys <- setup_filesystem(fsys) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) params <- list( title = "Monthly Grouped Disease Statistics" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_report_grouped_stats() |> epitrax_write_pdf_grouped_stats(params = params, fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE) ## End(Not run)
epitrax_write_pdf_public_reports writes a PDF report for each public
report, excluding grouped stats reports (which are handled by
epitrax_write_pdf_grouped_stats). The PDF uses pretty formatting and adds
a header and footer.
epitrax_write_pdf_public_reports(epitrax, fsys, trend.only = FALSE)epitrax_write_pdf_public_reports(epitrax, fsys, trend.only = FALSE)
epitrax |
Object of class |
fsys |
Filesystem list containing paths for internal and public reports. |
trend.only |
Logical. Whether to show only trend in the PDF report. |
The original EpiTrax object, unchanged.
## Not run: # Example not run because it requires LaTeX installation fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) fsys <- setup_filesystem(fsys) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_month_crosssections(month_offsets = 0) |> epitrax_write_pdf_public_reports(fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE) ## End(Not run)## Not run: # Example not run because it requires LaTeX installation fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) fsys <- setup_filesystem(fsys) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_month_crosssections(month_offsets = 0) |> epitrax_write_pdf_public_reports(fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE) ## End(Not run)
epitrax_write_xlsxs writes the internal and public reports from an EpiTrax
object to Excel files in the specified filesystem. Combines all internal reports
into one Excel file with separate sheets for each report. Likewise with public
reports.
epitrax_write_xlsxs(epitrax, fsys)epitrax_write_xlsxs(epitrax, fsys)
epitrax |
Object of class |
fsys |
Filesystem list containing paths for internal and public reports. |
The original EpiTrax object, unchanged.
fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) fsys <- setup_filesystem(fsys) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_ytd_rates() |> epitrax_write_xlsxs(fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE)fsys <- list( internal = file.path(tempdir(), "internal_reports"), public = file.path(tempdir(), "public_reports"), settings = file.path(tempdir(), "report_settings") ) fsys <- setup_filesystem(fsys) data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") config_file <- system.file("tinytest/test_files/configs/good_config.yaml", package = "epitraxr") disease_lists <- list( internal = "use_defaults", public = "use_defaults" ) epitrax <- setup_epitrax( filepath = data_file, config_file = config_file, disease_list_files = disease_lists ) |> epitrax_preport_ytd_rates() |> epitrax_write_xlsxs(fsys = fsys) # Cleanup unlink(unlist(fsys, use.names = FALSE), recursive = TRUE)
epitraxr_config creates a list of configuration options used for generating
reports.
epitraxr_config( current_population = 1e+05, avg_5yr_population = 1e+05, rounding_decimals = 2, generate_csvs = TRUE, trend_threshold = 0.15 )epitraxr_config( current_population = 1e+05, avg_5yr_population = 1e+05, rounding_decimals = 2, generate_csvs = TRUE, trend_threshold = 0.15 )
current_population |
Integer. Defaults to 100,000. |
avg_5yr_population |
Integer. Defaults to 100,000. |
rounding_decimals |
Integer. Defaults to 2. |
generate_csvs |
Logical. Defaults to TRUE. |
trend_threshold |
Numeric. Defaults to 0.15. |
A named list with 'keys' corresponding to config options.
epitraxr_config( current_population = 56000, avg_5yr_population = 57000, rounding_decimals = 3, generate_csvs = FALSE, trend_threshold = 0.2 )epitraxr_config( current_population = 56000, avg_5yr_population = 57000, rounding_decimals = 3, generate_csvs = FALSE, trend_threshold = 0.2 )
format_epitrax_data prepares the input EpiTrax data for use by report generation
functions in the package. It adds the counts column, renames columns to
standard names used by the package ("disease", "month", "year", "counts"),
and rearranges columns for consistency.
format_epitrax_data(data)format_epitrax_data(data)
data |
Dataframe. Must contain columns:
|
A standardized data frame with columns "disease", "month", "year", and "counts".
df <- data.frame( patient_mmwr_year = c(2020L, 2020L), month = c(1, 2), patient_disease = c("A", "B") ) df <- format_epitrax_data(df)df <- data.frame( patient_mmwr_year = c(2020L, 2020L), month = c(1, 2), patient_disease = c("A", "B") ) df <- format_epitrax_data(df)
get_month_counts aggregates disease counts by month and year. This is a helper
function used internally by report generation functions to summarize monthly
disease counts.
get_month_counts(data)get_month_counts(data)
data |
Dataframe. Must contain columns:
|
A dataframe with the aggregated monthly counts
df <- data.frame( disease = c("Flu", "Flu", "Measles"), year = c(2020, 2020, 2020), month = c(1, 1, 2), counts = c(5, 3, 2) ) get_month_counts(df)df <- data.frame( disease = c("Flu", "Flu", "Measles"), year = c(2020, 2020, 2020), month = c(1, 1, 2), counts = c(5, 3, 2) ) get_month_counts(df)
'get_report_config' reads in the config YAML file. Missing fields will be set to default values and a warning will be issued. The config file can have the following fields:
current_population: Integer. Current population size.
avg_5yr_population: Integer. Average population over the last 5 years.
rounding_decimals: Integer. Number of decimals to round report values to.
generate_csvs: Logical. Whether to generate CSV files.
trend_threshold: Numeric. Threshold for trend calculations.
get_report_config(filepath)get_report_config(filepath)
filepath |
Filepath. Path to report config file. |
See the example config file here:
system.file("sample_data/sample_config.yml", package = "epitraxr").
A named list with an attribute of 'keys' from the file.
config_file <- system.file("sample_data/sample_config.yml", package = "epitraxr") report_config <- get_report_config(config_file)config_file <- system.file("sample_data/sample_config.yml", package = "epitraxr") report_config <- get_report_config(config_file)
get_report_diseases is a convenience function that combines
get_report_diseases_internal and get_report_diseases_public.
get_report_diseases(internal, public, defaults)get_report_diseases(internal, public, defaults)
internal |
Filepath. Path to internal disease list CSV file. |
public |
Filepath. Path to public disease list CSV file. |
defaults |
String vector. List of default diseases to use if either file doesn't exist. |
A list with two elements:
internal: Dataframe with EpiTrax_name column
public: Dataframe with EpiTrax_name and Public_name columns
get_report_diseases_internal(), get_report_diseases_public() which this function wraps.
# Using default lists (when files don't exist) default_list <- c("Measles", "Chickenpox") disease_lists <- get_report_diseases("", "", default_list) # Using disease list files i_file <- system.file("tinytest/test_files/disease_lists/internal_list.csv", package = "epitraxr") p_file <- system.file("tinytest/test_files/disease_lists/public_list.csv", package = "epitraxr") disease_lists <- get_report_diseases( internal = i_file, public = p_file, defaults = default_list )# Using default lists (when files don't exist) default_list <- c("Measles", "Chickenpox") disease_lists <- get_report_diseases("", "", default_list) # Using disease list files i_file <- system.file("tinytest/test_files/disease_lists/internal_list.csv", package = "epitraxr") p_file <- system.file("tinytest/test_files/disease_lists/public_list.csv", package = "epitraxr") disease_lists <- get_report_diseases( internal = i_file, public = p_file, defaults = default_list )
'get_report_diseases_internal' reads the internal list from a given CSV file or uses the default diseases, if the file doesn't exist.
get_report_diseases_internal(filepath, defaults)get_report_diseases_internal(filepath, defaults)
filepath |
Filepath. Internal disease list CSV file. |
defaults |
String vector. List of default diseases to use if the above file doesn't exist. |
The provided internal disease list file must contain at least a column named
EpiTrax_name which contains EpiTrax disease names to include in the report.
The file can optionally contain a column named Group_name, which maps the
diseases in EpiTrax_name to a disease group. This is only used for reports
that include disease groupings.
See the example file here:
system.file("sample_data/sample_disease_list.csv", package = "epitraxr")
A dataframe containing the diseases to include in the internal report and possibly the disease groupings.
# Using default list (when file doesn't exist) default_list <- c("Measles", "Chickenpox") disease_list <- get_report_diseases_internal("", default_list) # Using a disease list file list_file <- system.file("sample_data/sample_disease_list.csv", package = "epitraxr") disease_list <- get_report_diseases_internal(list_file, default_list)# Using default list (when file doesn't exist) default_list <- c("Measles", "Chickenpox") disease_list <- get_report_diseases_internal("", default_list) # Using a disease list file list_file <- system.file("sample_data/sample_disease_list.csv", package = "epitraxr") disease_list <- get_report_diseases_internal(list_file, default_list)
'get_report_diseases_public' reads the public list from a given CSV file or uses the default diseases if the file doesn't exist.
get_report_diseases_public(filepath, defaults)get_report_diseases_public(filepath, defaults)
filepath |
Filepath. Public disease list CSV file. |
defaults |
String vector. List of default diseases to use if the above file doesn't exist. |
The provided public disease list file must contain two columns named
EpiTrax_name and Public_name which map EpiTrax disease names to
a public-facing name for the public report. The file can optionally
contain a column named Group_name, which maps the diseases in
EpiTrax_name to a disease group. This is only used for reports that
include disease groupings.
See the example file here:
system.file("sample_data/sample_disease_list.csv", package = "epitraxr")
A dataframe containing the diseases to include in the public report and the name to use for each disease in the public report. It may also contain the disease groupings.
# Using default list (when file doesn't exist) default_list <- c("Measles", "Chickenpox") disease_list <- get_report_diseases_public("", default_list) # Using a disease list file list_file <- system.file("sample_data/sample_disease_list.csv", package = "epitraxr") disease_list <- get_report_diseases_public(list_file, default_list)# Using default list (when file doesn't exist) default_list <- c("Measles", "Chickenpox") disease_list <- get_report_diseases_public("", default_list) # Using a disease list file list_file <- system.file("sample_data/sample_disease_list.csv", package = "epitraxr") disease_list <- get_report_diseases_public(list_file, default_list)
'get_yrs' extracts and returns the sorted unique years from the 'year' column of a data frame.
get_yrs(data)get_yrs(data)
data |
Dataframe. Must contain the column:
|
Integer vector of sorted unique years present in the data.
df <- data.frame(year = c(2020, 2021, 2020, 2022)) get_yrs(df)df <- data.frame(year = c(2020, 2021, 2020, 2022)) get_yrs(df)
mmwr_week_to_month calculates the calendar month from the
patient_mmwr_week and patient_mmwr_year fields of the EpiTrax data.
The result is stored in the month column and the patient_mmwr_week
column is removed.
mmwr_week_to_month(data)mmwr_week_to_month(data)
data |
Dataframe. Must contain columns:
|
The input data frame with an added "month" column (integer 1-12) and
removed patient_mmwr_week column.
df <- data.frame( patient_mmwr_year = 2020L, patient_mmwr_week = 1L, patient_disease = "A" ) mmwr_week_to_month(df)df <- data.frame( patient_mmwr_year = 2020L, patient_mmwr_week = 1L, patient_disease = "A" ) mmwr_week_to_month(df)
'read_epitrax_data' reads EpiTrax data from a CSV, validates, and formats it. It also filters rows older than given number of years. The input file must contain the columns:
patient_mmwr_year (integer)
patient_mmwr_week (integer)
patient_disease (character)
read_epitrax_data(filepath = NULL, num_yrs = 5)read_epitrax_data(filepath = NULL, num_yrs = 5)
filepath |
Optional filepath. Data file should be a CSV. If this parameter is NULL, the user will be prompted to choose a file interactively. |
num_yrs |
Integer. Number of years of data to keep. Defaults to 5. |
See the example file here:
system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr")
The validated and formatted EpiTrax data from the input file.
if(interactive()) { # Interactive file chooser: read_epitrax_data() } # Using a file path: data <- read_epitrax_data( filepath = system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr"), num_yrs = 3 ) head(data)if(interactive()) { # Interactive file chooser: read_epitrax_data() } # Using a file path: data <- read_epitrax_data( filepath = system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr"), num_yrs = 3 ) head(data)
'reshape_annual_wide' reshapes a given data frame with diseases for rows and years for columns.
reshape_annual_wide(data)reshape_annual_wide(data)
data |
Dataframe. Must have columns:
|
The reshaped data frame.
df <- data.frame( disease = c("A", "A", "B"), year = c(2020, 2021, 2020), counts = c(5, 7, 8) ) reshape_annual_wide(df)df <- data.frame( disease = c("A", "A", "B"), year = c(2020, 2021, 2020), counts = c(5, 7, 8) ) reshape_annual_wide(df)
'reshape_monthly_wide' reshapes a given data frame with diseases for rows and months for columns.
reshape_monthly_wide(data)reshape_monthly_wide(data)
data |
Dataframe. Must contain columns:
|
The reshaped data frame.
df <- data.frame( disease = c("A", "B"), month = c(1, 2), counts = c(5, 6) ) reshape_monthly_wide(df)df <- data.frame( disease = c("A", "B"), month = c(1, 2), counts = c(5, 6) ) reshape_monthly_wide(df)
run_app launches the interactive Shiny web application for
EpiTrax data analysis and report generation. The app provides a user-friendly
interface for uploading data, configuring reports, and generating various
types of disease surveillance reports.
run_app(...)run_app(...)
... |
Additional arguments passed to |
Starts the execution of the app, printing the port to the console.
if (interactive() & requireNamespace("shiny")) { run_app() }if (interactive() & requireNamespace("shiny")) { run_app() }
'set_na_0' sets NA values to 0 in a data frame.
set_na_0(df)set_na_0(df)
df |
Dataframe. |
Dataframe with NA values replaced by 0.
df <- data.frame(year = c(2020, NA, 2022)) set_na_0(df)df <- data.frame(year = c(2020, NA, 2022)) set_na_0(df)
setup_epitrax initializes an EpiTrax object with configuration and report
disease lists. It is a convenience function that combines create_epitrax_from_file(),
epitrax_set_config_from_file(), and epitrax_set_report_diseases().
setup_epitrax( filepath = NULL, num_yrs = 5, disease_list_files = NULL, config_list = NULL, config_file = NULL )setup_epitrax( filepath = NULL, num_yrs = 5, disease_list_files = NULL, config_list = NULL, config_file = NULL )
filepath |
Optional filepath. EpiTrax data file should be a CSV. If this parameter is NULL, the user will be prompted to choose a file interactively. |
num_yrs |
Integer. Number of years of data to keep. Defaults to 5. |
disease_list_files |
Optional list containing filepaths to internal and public report disease lists. If omitted, the default lists will be used and a warning will be given. |
config_list, config_file
|
Configuration options may be specified as a list or as a path to a YAML config file, respectively. Only one can be specified at a time. If both are specified, the function will return an error. If both are omitted, the default config values will be used. |
An EpiTrax object with configuration and report diseases set.
create_epitrax_from_file(), epitrax_set_config_from_file(),
epitrax_set_config_from_list(), and epitrax_set_report_diseases()
which this function wraps.
data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") disease_lists <- list( internal = system.file("tinytest/test_files/disease_lists/internal_list.csv", package = "epitraxr"), public = system.file("tinytest/test_files/disease_lists/public_list.csv", package = "epitraxr") ) epitrax <- setup_epitrax( filepath = data_file, disease_list_files = disease_lists )data_file <- system.file("sample_data/sample_epitrax_data.csv", package = "epitraxr") disease_lists <- list( internal = system.file("tinytest/test_files/disease_lists/internal_list.csv", package = "epitraxr"), public = system.file("tinytest/test_files/disease_lists/public_list.csv", package = "epitraxr") ) epitrax <- setup_epitrax( filepath = data_file, disease_list_files = disease_lists )
setup_filesystem creates the necessary folder structure and optionally clears
old reports. This is a convenience function that combines create_filesystem
and clear_old_reports.
setup_filesystem(folders, clear.reports = FALSE)setup_filesystem(folders, clear.reports = FALSE)
folders |
List. Contains paths to report folders with elements:
|
clear.reports |
Logical. Whether to clear old reports from the internal and public folders. Defaults to FALSE. |
The input folders list, unchanged.
create_filesystem(), clear_old_reports() which this function wraps.
# Create folders in a temporary directory folders <- list( internal = file.path(tempdir(), "internal"), public = file.path(tempdir(), "public"), settings = file.path(tempdir(), "settings") ) setup_filesystem(folders) unlink(unlist(folders, use.names = FALSE), recursive = TRUE)# Create folders in a temporary directory folders <- list( internal = file.path(tempdir(), "internal"), public = file.path(tempdir(), "public"), settings = file.path(tempdir(), "settings") ) setup_filesystem(folders) unlink(unlist(folders, use.names = FALSE), recursive = TRUE)
'standardize_report_diseases' removes rows from the data that shouldn't appear in the report and adds rows for diseases that should be in the report, but weren't in the input dataset. Added rows are filled with 0s.
standardize_report_diseases(data, diseases)standardize_report_diseases(data, diseases)
data |
Dataframe. Current report data. |
diseases |
Character vector. Diseases to include in the report. |
Report data with rows for all diseases to report.
df <- data.frame(disease=c("A","B","D"), counts=c(5,7,8)) standardize_report_diseases(df, c("A","C"))df <- data.frame(disease=c("A","B","D"), counts=c(5,7,8)) standardize_report_diseases(df, c("A","C"))
validate_config checks the values of the given config list. If any values
are missing or invalid, they are set to default values and a warning is
issued.
validate_config(config)validate_config(config)
config |
Named list. |
A named list with 'keys' corresponding to config options.
validate_config(config = list())validate_config(config = list())
'validate_data' checks the data for expected columns and data types, removes unneeded columns, and returns the resulting data. Missing or NA values will be removed with a warning. Valid data must include the following columns (and types):
patient_mmwr_year (integer)
patient_mmwr_week (integer)
patient_disease (character)
validate_data(data)validate_data(data)
data |
Dataframe. EpiTrax data to validate. |
The validated data with all unneeded columns removed.
df <- data.frame( patient_mmwr_year = 2020L, patient_mmwr_week = 1L, patient_disease = "A" ) validate_data(df)df <- data.frame( patient_mmwr_year = 2020L, patient_mmwr_week = 1L, patient_disease = "A" ) validate_data(df)
validate_epitrax checks that the EpiTrax object is valid.
validate_epitrax(epitrax, report.check = TRUE)validate_epitrax(epitrax, report.check = TRUE)
epitrax |
Object of class |
report.check |
Logical indicating whether to check report-related fields. |
NULL if valid, otherwise throws an error.
epitrax <- structure( list( data = c(1,2,3), config = list(rounding_decimals = 2, generate_csvs = TRUE), report_diseases = list(internal = "internal_list", public = "public_list") ), class = "epitrax" ) validate_epitrax(epitrax, report.check = TRUE)epitrax <- structure( list( data = c(1,2,3), config = list(rounding_decimals = 2, generate_csvs = TRUE), report_diseases = list(internal = "internal_list", public = "public_list") ), class = "epitrax" ) validate_epitrax(epitrax, report.check = TRUE)
validate_filesystem checks that the filesystem structure is valid.
validate_filesystem(fsys)validate_filesystem(fsys)
fsys |
List. Contains paths to report folders with elements:
|
NULL if valid, otherwise throws an error.
fsys <- list( internal = "internal_reports", public = "public_reports" ) validate_filesystem(fsys)fsys <- list( internal = "internal_reports", public = "public_reports" ) validate_filesystem(fsys)
write_report_csv writes the given data to the specified folder with the
given filename.
write_report_csv(data, filename, folder)write_report_csv(data, filename, folder)
data |
Dataframe. Report data. |
filename |
String. Report filename. |
folder |
Filepath. Report destination folder. |
NULL.
# Create sample data r_data <- data.frame( Disease = c("Measles", "Chickenpox"), Counts = c(20, 43) ) # Write to temporary directory write_report_csv(r_data, "report.csv", tempdir()) unlink(file.path(tempdir(), "report.csv"), recursive = TRUE)# Create sample data r_data <- data.frame( Disease = c("Measles", "Chickenpox"), Counts = c(20, 43) ) # Write to temporary directory write_report_csv(r_data, "report.csv", tempdir()) unlink(file.path(tempdir(), "report.csv"), recursive = TRUE)
write_report_pdf renders a report as a PDF using a R Markdown
template. It is relatively flexible and can be used for various
types of report.
write_report_pdf(data, params, filename, folder, trend.only = FALSE)write_report_pdf(data, params, filename, folder, trend.only = FALSE)
data |
Dataframe. Report data. |
params |
List. Report parameters containing:
|
filename |
String. Report filename. |
folder |
Filepath. Report destination folder. |
trend.only |
Logical. Whether to show only trend in the PDF report. If TRUE, "trend_only_" will be prepended to the filename. |
NULL (called for side effects - creates the report file).
## Not run: # Example not run because it requires LaTeX installation # Create sample report data r_data <- data.frame( Disease = c("COVID", "Flu", "Measles"), `March 2024` = c(0, 25, 5), `Historical March Avg` = c(0, 15, 8), `Trend` = compute_trend(c(0, 25, 5), c(0, 15, 8)), check.names = FALSE ) # Set report parameters params <- list( title = "Monthly Disease Surveillance Report", report_year = 2024, report_month = 3, trend_threshold = 0.20 ) # Write to temporary directory write_report_pdf( data = r_data, params = params, filename = "monthly_disease_report.pdf", folder = tempdir() ) ## End(Not run)## Not run: # Example not run because it requires LaTeX installation # Create sample report data r_data <- data.frame( Disease = c("COVID", "Flu", "Measles"), `March 2024` = c(0, 25, 5), `Historical March Avg` = c(0, 15, 8), `Trend` = compute_trend(c(0, 25, 5), c(0, 15, 8)), check.names = FALSE ) # Set report parameters params <- list( title = "Monthly Disease Surveillance Report", report_year = 2024, report_month = 3, trend_threshold = 0.20 ) # Write to temporary directory write_report_pdf( data = r_data, params = params, filename = "monthly_disease_report.pdf", folder = tempdir() ) ## End(Not run)
write_report_pdf_grouped renders a grouped disease statistics report
as a PDF using a R Markdown template. The report includes comprehensive
disease statistics organized by groups with current and historical data.
write_report_pdf_grouped(data, params, filename, folder, trend.only = FALSE)write_report_pdf_grouped(data, params, filename, folder, trend.only = FALSE)
data |
Dataframe. Report data. |
params |
List. Report parameters containing:
|
filename |
String. Report filename. |
folder |
Filepath. Report destination folder. |
trend.only |
Logical. Whether to show only trend in the PDF report. If TRUE, "trend_only_" will be prepended to the filename. |
NULL (called for side effects - creates the report file).
## Not run: # Example not run because it requires LaTeX installation # Create sample grouped report data r_data <- data.frame( Group = c("Respiratory", "Respiratory", "Vaccine-Preventable"), Disease = c("COVID", "Flu", "Measles"), `March 2024` = c(0, 25, 5), `March 2024 Rate` = c(0, 25, 5), `Historical March Avg` = c(0, 15, 8), `Historical March Median` = c(0, 15, 8), `2024 YTD` = c(0, 37, 9), `Historical 2024 YTD Avg` = c(20, 25, 14), `Historical 2024 YTD Median` = c(20, 25, 14), `YTD Trend` = compute_trend(c(0, 37, 9), c(20, 25, 14)), check.names = FALSE ) # Set report parameters params <- list( title = "Grouped Disease Surveillance Report", report_year = 2024, report_month = 3, trend_threshold = 0.20 ) # Write to temporary directory write_report_pdf_grouped( data = r_data, params = params, filename = "grouped_disease_report.pdf", folder = tempdir() ) ## End(Not run)## Not run: # Example not run because it requires LaTeX installation # Create sample grouped report data r_data <- data.frame( Group = c("Respiratory", "Respiratory", "Vaccine-Preventable"), Disease = c("COVID", "Flu", "Measles"), `March 2024` = c(0, 25, 5), `March 2024 Rate` = c(0, 25, 5), `Historical March Avg` = c(0, 15, 8), `Historical March Median` = c(0, 15, 8), `2024 YTD` = c(0, 37, 9), `Historical 2024 YTD Avg` = c(20, 25, 14), `Historical 2024 YTD Median` = c(20, 25, 14), `YTD Trend` = compute_trend(c(0, 37, 9), c(20, 25, 14)), check.names = FALSE ) # Set report parameters params <- list( title = "Grouped Disease Surveillance Report", report_year = 2024, report_month = 3, trend_threshold = 0.20 ) # Write to temporary directory write_report_pdf_grouped( data = r_data, params = params, filename = "grouped_disease_report.pdf", folder = tempdir() ) ## End(Not run)
write_report_xlsx writes the given data to the specified folder with the
given filename in Excel (.xlsx) format.
write_report_xlsx(data, filename, folder)write_report_xlsx(data, filename, folder)
data |
List. Named list of dataframes. The name will be used as the sheet name. |
filename |
String. Report filename. |
folder |
Filepath. Report destination folder. |
NULL.
# Create sample data with multiple sheets r_data1 <- data.frame( Disease = c("Measles", "Chickenpox"), Counts = c(20, 43) ) r_data2 <- data.frame( Disease = c("Measles", "Chickenpox"), Rate = c(10.5, 22.7) ) r_xl <- list( counts = r_data1, rates = r_data2 ) # Write to temporary directory write_report_xlsx(r_xl, "report.xlsx", tempdir()) unlink(file.path(tempdir(), "report.xlsx"), recursive = TRUE)# Create sample data with multiple sheets r_data1 <- data.frame( Disease = c("Measles", "Chickenpox"), Counts = c(20, 43) ) r_data2 <- data.frame( Disease = c("Measles", "Chickenpox"), Rate = c(10.5, 22.7) ) r_xl <- list( counts = r_data1, rates = r_data2 ) # Write to temporary directory write_report_xlsx(r_xl, "report.xlsx", tempdir()) unlink(file.path(tempdir(), "report.xlsx"), recursive = TRUE)