Nothing
# tests/testthat/test-seqic_indicator_1.R
testthat::test_that("seqic_indicator_1() correctly expects columns to be in the 'data'", {
# Create minimal valid input
valid_data <- tibble::tibble(
activation_level = factor("Level 1"),
provider_type = factor("Surgery/Trauma"),
trauma_level = factor("I"),
response_minutes = 10,
provider = "Dr. A",
incident_id = 1
)
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_leve,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = TRUE,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_leve,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = "thing",
response_time = response_minutes,
trauma_team_activation_provider = provider
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_seconds,
trauma_team_activation_provider = provider
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_leve,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = "fake"
),
regexp = "It was not possible to validate"
)
})
testthat::test_that("seqic_indicator_1() validates input types correctly", {
# Create minimal valid input
valid_data <- tibble::tibble(
activation_level = factor("Level 1"),
provider_type = factor("Surgery/Trauma"),
trauma_level = factor("I"),
response_minutes = 10,
provider = "Dr. A",
incident_id = 1
)
# Valid call should not error
testthat::expect_silent(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
)
)
# data is not a data.frame
testthat::expect_error(
traumar::seqic_indicator_1(
data = as.matrix(valid_data),
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"data.*must be of class"
)
# trauma_team_activation_level is not character or factor
bad_data <- dplyr::mutate(valid_data, activation_level = 1)
testthat::expect_error(
traumar::seqic_indicator_1(
data = bad_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"trauma_team_activation_level.*must be of class"
)
# trauma_team_physician_service_type is invalid
bad_data <- dplyr::mutate(valid_data, provider_type = 42)
testthat::expect_error(
traumar::seqic_indicator_1(
data = bad_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"trauma_team_physician_service_type.*must be of class"
)
# unique_incident_id invalid
bad_data <- dplyr::mutate(valid_data, incident_id = list("A"))
testthat::expect_error(
traumar::seqic_indicator_1(
data = bad_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"unique_incident_id.*must be of class"
)
# level is not character or factor
bad_data <- dplyr::mutate(valid_data, trauma_level = 99)
testthat::expect_error(
traumar::seqic_indicator_1(
data = bad_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"level.*must be of class"
)
# response_time is not numeric
bad_data <- dplyr::mutate(valid_data, response_minutes = "soon")
testthat::expect_error(
traumar::seqic_indicator_1(
data = bad_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"response_time.*must be of class"
)
# trauma_team_activation_provider is not character or factor
bad_data <- dplyr::mutate(valid_data, provider = 999)
testthat::expect_error(
traumar::seqic_indicator_1(
data = bad_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider
),
"trauma_team_activation_provider.*must be of class"
)
})
testthat::test_that("seqic_indicator_1() validates groups and calculate_ci", {
valid_data <- tibble::tibble(
activation_level = "Level 1",
provider_type = "Surgery/Trauma",
trauma_level = "I",
response_minutes = 10,
provider = "Dr. A",
incident_id = 1,
group_var = "Test"
)
# groups contains a non-string
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider,
groups = list(123)
),
"All elements in.*groups.*must be strings"
)
# groups contains a string not found in data
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider,
groups = c("not_a_col")
),
"not valid columns in"
)
# calculate_ci is invalid
testthat::expect_error(
traumar::seqic_indicator_1(
data = valid_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider,
calculate_ci = "wrong"
),
"it must be"
)
})
testthat::test_that("seqic_indicator_1 calculates indicators 1a–1c correctly", {
# Sample test data
test_data <- tibble::tibble(
incident_id = c(1, 2, 3, 4, 5, 6),
activation_level = c(
"Level 1",
"Level 1",
"Level 1",
"Level 1",
"Level 1",
"Level 1"
),
provider_type = c(
"Surgery/Trauma",
"Surgery/Trauma",
"Surgery/Trauma",
"Surgery/Trauma",
"Surgery/Trauma",
"Surgery/Trauma"
),
trauma_level = c("I", "II", "III", "III", "II", "I"),
response_minutes = c(10, 20, 25, NA, 40, NA),
provider = paste("Dr", LETTERS[1:6])
)
# Run without CI
result <- traumar::seqic_indicator_1(
data = test_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider,
calculate_ci = NULL
)
# Expectations for 1a (I and II only, within 15 minutes)
testthat::expect_equal(result$numerator_1a, 1)
testthat::expect_equal(result$denominator_1a, 3)
testthat::expect_equal(result$seqic_1a, 1 / 3)
# Expectations for 1b (I, II, III, within 30 minutes)
testthat::expect_equal(result$numerator_1b, 3)
testthat::expect_equal(result$denominator_1b, 4)
testthat::expect_equal(result$seqic_1b, 0.75)
# Expectations for 1c (missing response time among eligible)
testthat::expect_equal(result$numerator_1c, 2)
testthat::expect_equal(result$denominator_1c, 6)
testthat::expect_equal(result$seqic_1c, 1 / 3)
})
testthat::test_that("seqic_indicator_1 returns confidence intervals when requested", {
test_data <- tibble::tibble(
incident_id = c(1, 2, 3),
activation_level = rep("Level 1", 3),
provider_type = rep("Surgery/Trauma", 3),
trauma_level = c("I", "II", "III"),
response_minutes = c(10, 30, NA),
provider = c("Dr. X", "Dr. Y", "Dr. Z")
)
result <- traumar::seqic_indicator_1(
data = test_data,
trauma_team_activation_level = activation_level,
trauma_team_physician_service_type = provider_type,
level = trauma_level,
unique_incident_id = incident_id,
response_time = response_minutes,
trauma_team_activation_provider = provider,
calculate_ci = "wilson"
)
testthat::expect_true("lower_ci_1a" %in% names(result))
testthat::expect_true("upper_ci_1a" %in% names(result))
testthat::expect_true("lower_ci_1b" %in% names(result))
testthat::expect_true("upper_ci_1b" %in% names(result))
testthat::expect_true("lower_ci_1c" %in% names(result))
testthat::expect_true("upper_ci_1c" %in% names(result))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.