Skip to contents

Adds a record for corrected QT using either Bazett's, Fridericia's or Sagie's formula for each by group (e.g., subject and visit) where the source parameters are available.

Usage

derive_param_qtc(
  dataset,
  by_vars,
  method,
  set_values_to = default_qtc_paramcd(method),
  qt_code = "QT",
  rr_code = "RR",
  get_unit_expr,
  filter = NULL
)

Arguments

dataset

Input dataset

The variables specified by the by_vars and the unit_var parameter, PARAMCD, and AVAL are expected.

The variable specified by by_vars and PARAMCD must be a unique key of the input dataset after restricting it by the filter condition (filter parameter) and to the parameters specified by qt_code and rr_code.

by_vars

Grouping variables

Only variables specified in by_vars will be populated in the newly created records.

Permitted Values: list of variables

method

Method used to QT correction

Permitted Values: "Bazett", "Fridericia", "Sagie"

set_values_to

Variables to be set

The specified variables are set to the specified values for the new observations. For example exprs(PARAMCD = "MAP") defines the parameter code for the new parameter.

Permitted Values: List of variable-value pairs

qt_code

QT parameter code

The observations where PARAMCD equals the specified value are considered as the QT interval assessments. It is expected that QT is measured in msec.

Permitted Values: character value

rr_code

RR parameter code

The observations where PARAMCD equals the specified value are considered as the RR interval assessments. It is expected that RR is measured in msec.

Permitted Values: character value

get_unit_expr

An expression providing the unit of the parameter

The result is used to check the units of the input parameters.

Permitted Values: A variable of the input dataset or a function call

filter

Filter condition

The specified condition is applied to the input dataset before deriving the new parameter, i.e., only observations fulfilling the condition are taken into account.

Permitted Values: a condition

Value

The input dataset with the new parameter added. Note, a variable will only be populated in the new parameter rows if it is specified in by_vars.

Examples

library(tibble)

adeg <- tribble(
  ~USUBJID, ~PARAMCD, ~PARAM, ~AVAL, ~AVALU, ~VISIT,
  "01-701-1015", "HR", "Heart Rate (beats/min)", 70.14, "beats/min", "BASELINE",
  "01-701-1015", "QT", "QT Duration (msec)", 370, "msec", "WEEK 2",
  "01-701-1015", "HR", "Heart Rate (beats/min)", 62.66, "beats/min", "WEEK 1",
  "01-701-1015", "RR", "RR Duration (msec)", 710, "msec", "WEEK 2",
  "01-701-1028", "HR", "Heart Rate (beats/min)", 85.45, "beats/min", "BASELINE",
  "01-701-1028", "QT", "QT Duration (msec)", 480, "msec", "WEEK 2",
  "01-701-1028", "QT", "QT Duration (msec)", 350, "msec", "WEEK 3",
  "01-701-1028", "HR", "Heart Rate (beats/min)", 56.54, "beats/min", "WEEK 3",
  "01-701-1028", "RR", "RR Duration (msec)", 842, "msec", "WEEK 2",
)

derive_param_qtc(
  adeg,
  by_vars = exprs(USUBJID, VISIT),
  method = "Bazett",
  set_values_to = exprs(
    PARAMCD = "QTCBR",
    PARAM = "QTcB - Bazett's Correction Formula Rederived (msec)",
    AVALU = "msec"
  ),
  get_unit_expr = AVALU
)
#> # A tibble: 11 x 6
#>    USUBJID    PARAMCD PARAM                                 AVAL AVALU   VISIT  
#>    <chr>      <chr>   <chr>                                <dbl> <chr>   <chr>  
#>  1 01-701-10… HR      Heart Rate (beats/min)                70.1 beats/… BASELI…
#>  2 01-701-10… QT      QT Duration (msec)                   370   msec    WEEK 2 
#>  3 01-701-10… HR      Heart Rate (beats/min)                62.7 beats/… WEEK 1 
#>  4 01-701-10… RR      RR Duration (msec)                   710   msec    WEEK 2 
#>  5 01-701-10… HR      Heart Rate (beats/min)                85.4 beats/… BASELI…
#>  6 01-701-10… QT      QT Duration (msec)                   480   msec    WEEK 2 
#>  7 01-701-10… QT      QT Duration (msec)                   350   msec    WEEK 3 
#>  8 01-701-10… HR      Heart Rate (beats/min)                56.5 beats/… WEEK 3 
#>  9 01-701-10… RR      RR Duration (msec)                   842   msec    WEEK 2 
#> 10 01-701-10… QTCBR   QTcB - Bazett's Correction Formula … 439.  msec    WEEK 2 
#> 11 01-701-10… QTCBR   QTcB - Bazett's Correction Formula … 523.  msec    WEEK 2 

derive_param_qtc(
  adeg,
  by_vars = exprs(USUBJID, VISIT),
  method = "Fridericia",
  set_values_to = exprs(
    PARAMCD = "QTCFR",
    PARAM = "QTcF - Fridericia's Correction Formula Rederived (msec)",
    AVALU = "msec"
  ),
  get_unit_expr = extract_unit(PARAM)
)
#> # A tibble: 11 x 6
#>    USUBJID    PARAMCD PARAM                                  AVAL AVALU   VISIT 
#>    <chr>      <chr>   <chr>                                 <dbl> <chr>   <chr> 
#>  1 01-701-10… HR      Heart Rate (beats/min)                 70.1 beats/… BASEL…
#>  2 01-701-10… QT      QT Duration (msec)                    370   msec    WEEK 2
#>  3 01-701-10… HR      Heart Rate (beats/min)                 62.7 beats/… WEEK 1
#>  4 01-701-10… RR      RR Duration (msec)                    710   msec    WEEK 2
#>  5 01-701-10… HR      Heart Rate (beats/min)                 85.4 beats/… BASEL…
#>  6 01-701-10… QT      QT Duration (msec)                    480   msec    WEEK 2
#>  7 01-701-10… QT      QT Duration (msec)                    350   msec    WEEK 3
#>  8 01-701-10… HR      Heart Rate (beats/min)                 56.5 beats/… WEEK 3
#>  9 01-701-10… RR      RR Duration (msec)                    842   msec    WEEK 2
#> 10 01-701-10… QTCFR   QTcF - Fridericia's Correction Formu… 415.  msec    WEEK 2
#> 11 01-701-10… QTCFR   QTcF - Fridericia's Correction Formu… 508.  msec    WEEK 2

derive_param_qtc(
  adeg,
  by_vars = exprs(USUBJID, VISIT),
  method = "Sagie",
  set_values_to = exprs(
    PARAMCD = "QTLCR",
    PARAM = "QTlc - Sagie's Correction Formula Rederived (msec)",
    AVALU = "msec"
  ),
  get_unit_expr = extract_unit(PARAM)
)
#> # A tibble: 11 x 6
#>    USUBJID    PARAMCD PARAM                                 AVAL AVALU   VISIT  
#>    <chr>      <chr>   <chr>                                <dbl> <chr>   <chr>  
#>  1 01-701-10… HR      Heart Rate (beats/min)                70.1 beats/… BASELI…
#>  2 01-701-10… QT      QT Duration (msec)                   370   msec    WEEK 2 
#>  3 01-701-10… HR      Heart Rate (beats/min)                62.7 beats/… WEEK 1 
#>  4 01-701-10… RR      RR Duration (msec)                   710   msec    WEEK 2 
#>  5 01-701-10… HR      Heart Rate (beats/min)                85.4 beats/… BASELI…
#>  6 01-701-10… QT      QT Duration (msec)                   480   msec    WEEK 2 
#>  7 01-701-10… QT      QT Duration (msec)                   350   msec    WEEK 3 
#>  8 01-701-10… HR      Heart Rate (beats/min)                56.5 beats/… WEEK 3 
#>  9 01-701-10… RR      RR Duration (msec)                   842   msec    WEEK 2 
#> 10 01-701-10… QTLCR   QTlc - Sagie's Correction Formula R… 415.  msec    WEEK 2 
#> 11 01-701-10… QTLCR   QTlc - Sagie's Correction Formula R… 504.  msec    WEEK 2