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


## -----------------------------------------------------------------------------
variables <- read.csv(system.file("extdata", "variables.csv", package = "chmsflow"))
variable_details <- read.csv(system.file("extdata", "variable-details.csv", package = "chmsflow"))


## ----echo=FALSE, warning=FALSE, message=FALSE---------------------------------
library(knitr)
library(kableExtra)
kable(variable_details[275:278, 1], col.names = "variable")


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:2])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:3])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[c(275), 1:4])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[c(1, 6), 1:5])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:6])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:7])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:8])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:9])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:10])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:11])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:12])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:13])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:14])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, 1:15])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[275:278, ])


## ----echo=FALSE, warning=FALSE------------------------------------------------
library(knitr)
library(kableExtra)
kable(variables[1, ])


## ----warning=FALSE------------------------------------------------------------
calculate_pack_years <- function(smkdsty, clc_age, smk_54, smk_52, smk_31, smk_41, smk_53, smk_42, smk_21, smk_11) {
  pack_years <- dplyr::case_when(
    # Age: valid skip
    clc_age == 96 ~ haven::tagged_na("a"),
    # Age: don't know, refusal, not stated
    clc_age < 0 | clc_age %in% 97:99 ~ haven::tagged_na("b"),

    # Pack-years by smoking status
    smkdsty == 1 ~ pmax(((clc_age - smk_52) * (smk_31 / 20)), 0.0137),
    smkdsty == 2 ~ pmax(((clc_age - smk_52 - (clc_age - smk_54)) * (smk_53 / 20)), 0.0137) +
      ((pmax((smk_41 * smk_42 / 30), 1) / 20) * (clc_age - smk_54)),
    smkdsty == 3 ~ (pmax((smk_41 * smk_42 / 30), 1) / 20) * (clc_age - smk_21),
    smkdsty == 4 ~ pmax(((smk_54 - smk_52) * (smk_53 / 20)), 0.0137),
    smkdsty == 5 & smk_11 == 1 ~ 0.0137,
    smkdsty == 5 & smk_11 == 2 ~ 0.007,
    smkdsty == 6 ~ 0,

    # Smoking status: valid skip
    smkdsty == 96 ~ haven::tagged_na("a"),
    # Smoking status: don't know, refusal, not stated
    smkdsty %in% 97:99 ~ haven::tagged_na("b"),
    .default = haven::tagged_na("b")
  )
  return(pack_years)
}


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[953, ])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variables[189, ])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[308:311, ])


## ----echo=FALSE, warning=FALSE------------------------------------------------
kable(variable_details[308:311, ])
kable(variables[80, ])

