The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

pretestcad Hex logo of R package pretestcad. Logo is a picture of a coronary artery with partial blockage.

R-CMD-check Codecov test coverage

R package used to calculate different PreTest Probability (PTP) scores for obstructive Coronary Artery Disease (CAD).

As diagnosis of CAD involves a costly and invasive coronary angiography procedure for patients, having a reliable PTP for CAD helps doctors to make better decisions during patient management. This ensures high risk patients can be diagnosed and treated early for CAD while avoiding unnecessary testing for low-risk patients.

Table of Content

:arrow_down: Installation

Install the development version from GitHub with:

# install.packages("pak")
pak::pak("JauntyJJS/pretestcad")

Back to top

:anatomical_heart: Currently available pretest probability scores

Back to top

:computer: Getting Started

2024 ESC Guidelines PTP Score

Here is how you can calculate the score using a single patient.

# 30 female with symptom score of 0 and 0 risk factors

calculate_esc_2024_fig_4_ptp(
 age = 30,
 sex = "female",
 chest_pain_type = "no chest pain",
 have_dyspnoea = "no",
 have_family_history = "no",
 have_smoking_history = "no",
 have_dyslipidemia = "no",
 have_hypertension = "no",
 have_diabetes = "no",
 output = "numeric"
)
[1] 0
calculate_esc_2024_fig_4_ptp(
 age = 30,
 sex = "female",
 chest_pain_type = "no chest pain",
 have_dyspnoea = "no",
 have_family_history = "no",
 have_smoking_history = "no",
 have_dyslipidemia = "no",
 have_hypertension = "no",
 have_diabetes = "no",
 output = "grouping"
)
[1] "very low"

Here is how you can calculate the score using for multiple patients.

patient_data <- tibble::tribble(
    ~unique_id,
    ~age,     ~sex, 
    ~chest_pain_type, ~have_dyspnoea, 
    ~have_family_history, ~have_smoking_history, ~have_dyslipidemia, ~have_hypertension, ~have_diabetes,
    "45 year old male with typical chest pain, no dyspnoea, hypertension and diabetes",
    45, "male", 
    "typical", "no",  
    "no", "no", "no", "yes", "yes",
    "70 year old female with no chest pain, dyspnoea, have smoking history (past or current smoker) and dyslipidemia",
    70, "female", 
    "no chest pain", "yes",  
    "no", "yes", "yes", "no", "no"
)

risk_data <- patient_data |>
    dplyr::mutate(
      esc_2024_ptp_group = purrr::pmap_chr(
        .l = list(
          age = .data[["age"]],
          sex = .data[["sex"]],
          chest_pain_type = .data[["chest_pain_type"]],
          have_dyspnoea = .data[["have_dyspnoea"]],
          have_family_history = .data[["have_family_history"]],
          have_smoking_history = .data[["have_smoking_history"]], 
          have_dyslipidemia = .data[["have_dyslipidemia"]], 
          have_hypertension = .data[["have_hypertension"]], 
          have_diabetes = .data[["have_diabetes"]],
          output = "grouping"
        ),
        .f = pretestcad::calculate_esc_2024_fig_4_ptp,
      ),
      esc_2024_ptp_numeric = purrr::pmap_int(
        .l = list(
          age = .data[["age"]],
          sex = .data[["sex"]],
          chest_pain_type = .data[["chest_pain_type"]],
          have_dyspnoea = .data[["have_dyspnoea"]],
          have_family_history = .data[["have_family_history"]],
          have_smoking_history = .data[["have_smoking_history"]],
          have_dyslipidemia = .data[["have_dyslipidemia"]],
          have_hypertension = .data[["have_hypertension"]],
          have_diabetes = .data[["have_diabetes"]],
          output = "numeric"
        ),
        .f = pretestcad::calculate_esc_2024_fig_4_ptp
      ),
      esc_2024_ptp_percent = purrr::pmap_chr(
        .l = list(
          age = .data[["age"]],
          sex = .data[["sex"]],
          chest_pain_type = .data[["chest_pain_type"]],
          have_dyspnoea = .data[["have_dyspnoea"]],
          have_family_history = .data[["have_family_history"]],
          have_smoking_history = .data[["have_smoking_history"]],
          have_dyslipidemia = .data[["have_dyslipidemia"]],
          have_hypertension = .data[["have_hypertension"]],
          have_diabetes = .data[["have_diabetes"]],
          output = "percentage"
        ),
        .f = pretestcad::calculate_esc_2024_fig_4_ptp
      )
    ) |> 
   dplyr::select(
      c("unique_id", "esc_2024_ptp_group", 
        "esc_2024_ptp_numeric", "esc_2024_ptp_percent")
   )

print(risk_data)
# A tibble: 2 Γ— 4
  unique_id         esc_2024_ptp_group esc_2024_ptp_numeric esc_2024_ptp_percent
  <chr>             <chr>                             <int> <chr>               
1 45 year old male… moderate                             20 20%                 
2 70 year old fema… low                                  10 10%                 

Back to top

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.