## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
library(pft)

## -----------------------------------------------------------------------------
data.frame(
  band     = c("normal", "mild", "moderate", "severe"),
  z_lower  = c(-1.645, -2.5, -4,    -Inf),
  z_upper  = c( Inf,   -1.645, -2.5, -4)
)

## -----------------------------------------------------------------------------
pft_severity(c(0.2, -1.7, -3.0, -5.0))

## -----------------------------------------------------------------------------
pft_severity_2005(c(85, 65, 55, 40, 30))

## -----------------------------------------------------------------------------
case <- data.frame(
  fev1    = c(2.5, 2.5, 1.5, 1.5,  3.5),
  fev1_lln_2022= c(3.0, 3.0, 2.5, 2.5,  3.0),
  fvc     = c(3.8, 3.8, 2.2, 2.2,  4.5),
  fvc_lln_2022 = c(3.5, 3.5, 2.5, 2.5,  4.0),
  fev1fvc = c(0.66, 0.66, 0.68, 0.80, 0.78),
  fev1fvc_lln_2022 = 0.70,
  tlc     = c(6.0, 5.0, 4.0, 4.0,  6.5),
  tlc_lln = c(5.5, 5.5, 5.5, 5.5,  5.5)
)
pft_classify(case)[, c("ats_classification")]

## -----------------------------------------------------------------------------
copd <- data.frame(
  sex = "M", age = 68, height = 175, race = "Caucasian",
  fev1_measured    = 1.6,
  fvc_measured     = 3.0,
  fev1fvc_measured = 1.6 / 3.0,
  tlc_measured     = 6.8
)
r <- pft_interpret(copd)
r[, c("ats_classification", "fev1_severity_2022", "fev1_zscore_2022",
       "fev1_pctpred_2022")]

## -----------------------------------------------------------------------------
pft_gold(r$fev1_pctpred_2022, fev1fvc = r$fev1fvc_measured)

## -----------------------------------------------------------------------------
preserved_kco <- data.frame(
  sex = "F", age = 55, height = 160, race = "Caucasian",
  fev1_measured    = 1.2, fvc_measured     = 1.5,
  fev1fvc_measured = 0.80, tlc_measured    = 3.8,
  rv_tlc_measured  = 0.30, dlco_measured   = 22.0,
  va_measured      = 4.6,  kco_tr_measured = 4.5
)
r <- pft_interpret(preserved_kco)
r[, c("ats_classification", "diffusion_category",
       "volume_subpattern")]

## -----------------------------------------------------------------------------
no_tlc <- data.frame(
  sex = "M", age = 50, height = 175, race = "Caucasian",
  fev1_measured    = 2.2, fvc_measured     = 2.8,
  fev1fvc_measured = 0.79
)
r <- pft_interpret(no_tlc)
r[, c("ats_classification", "prism")]

## ----eval = FALSE-------------------------------------------------------------
# library(dplyr)
# 
# out <- pft_spirometry(cohort) |>
#   mutate(
#     fev1_severity_2022 = pft_severity(fev1_zscore_2022),
#     fvc_severity_2022  = pft_severity(fvc_zscore_2022),
#     gold          = pft_gold(fev1_pctpred_2022, fev1fvc = fev1fvc_measured),
#     bdr_sig       = pft_bdr(fev1_pre, fev1_post, fev1_pred_2022)$is_significant
#   )

## ----eval = FALSE-------------------------------------------------------------
# out |>
#   mutate(across(matches("_zscore"), pft_severity, .names = "{.col}_severity"))

