diff --git a/main/404.html b/main/404.html index d3a71efbb5..2775217f06 100644 --- a/main/404.html +++ b/main/404.html @@ -31,7 +31,7 @@ admiral - 0.11.0 + 0.12.0 -


+
+


+ + +
+

DAIDS implementation +

+
+

Terms graded +

+

Grading is implemented for those lab tests where a lab value is +included in the grading definition, admiral does NOT try +to read any other data to determine the grade, and only the ADLB VAD is +used. The following DAIDS SOC values were identified for grading, these +are “Chemistries” and “Hematology”.

+

From these SOC values the following terms criteria is implemented in +admiral

+

From SOC = “Chemistries” there are 31 DAIDS Terms:

+
    +
  • Acidosis
  • +
  • Albumin, Low
  • +
  • Alkaline Phosphatase, High
  • +
  • Alkalosis
  • +
  • ALT, High
  • +
  • Amylase, High
  • +
  • AST, High
  • +
  • Bicarbonate, Low
  • +
  • Direct Bilirubin, High
  • +
  • Total Bilirubin, High
  • +
  • Calcium, High
  • +
  • Calcium (Ionized), High
  • +
  • Calcium, Low
  • +
  • Calcium (Ionized), Low
  • +
  • Creatine Kinase, High
  • +
  • Creatinine, High
  • +
  • Glucose Fasting, High
  • +
  • Glucose Nonfasting, High
  • +
  • Glucose, Low
  • +
  • Lactate, High
  • +
  • Lipase, High
  • +
  • Cholesterol, Fasting, High
  • +
  • LDL, Fasting, High
  • +
  • Triglycerides, Fasting, High
  • +
  • Magnesium, Low
  • +
  • Phosphate, Low
  • +
  • Potassium, High
  • +
  • Potassium, Low
  • +
  • Sodium, High
  • +
  • Sodium, Low
  • +
  • Uric Acid, High
  • +
+

Note: {admiral} does not grade for TERM = “Total Bilirubin, High” +when AGE <= 28 days, these criteria are in Appendix of DAIDS +Table for Grading the Severity of Adult and Pediatric Adverse Events +Corrected Version 2.1.

+

From the SOC = “Hematology” there are 11 DAIDS Terms:

+
    +
  • Absolute CD4+ Count, Low
  • +
  • Absolute Lymphocyte Count, Low
  • +
  • Absolute Neutrophil Count (ANC), Low
  • +
  • Fibrinogen Decreased
  • +
  • Hemoglobin, Low
  • +
  • INR, High
  • +
  • Methemoglobin
  • +
  • PTT, High
  • +
  • Platelets, Decreased
  • +
  • PT, High
  • +
  • WBC, Decreased
  • +
+
+
+

Terms with age or sex dependent grading criteria +

+

Some terms defined in DAIDS have age or sex dependent grading +criteria, {admiral} handles this in variable FILTER in the +metadata. We use {admiral} function compute_duration to +calculate age, see TERM = “Cholesterol, Fasting, High”:

+
+


+

Note: All possible values must be covered for each TERM defined, for +TERM = “Absolute Lymphocyte Count, Low” and “Absolute CD4+ Count, Low” +there is only grading criteria defined for age > 5 years. Therefore, +we add another row with age <= 5 years and set grade to missing. +Similarly, for TERM = “LDL, Fasting, High” there is only grading +criteria defined for age > 2 years. Therefore, we add another row +with age <= 2 years and set grade to missing.

+
+ +
+
+

Assumptions made when grading +

+

For terms “INR, High”, “PT, High” and “PTT, High”, the criteria is +based on subjects “not on anticoagulation therapy”, this is captured in +COMMENT field.

+


+
+


+

Similarly, for terms “Absolute CD4+ Count, Low” and “Absolute +Lymphocyte Count, Low”, the criteria is based on subjects “not HIV +infected”, this is captured in COMMENT field.

+


+
+


+

For term “Acidosis”, “Alkalosis” and “Direct Bilirubin, High (> 28 +days of age)”, {admiral} grades as high as possible, so assumes worst +case and subject has “life-threatening consequences”. This is captured +in COMMENT field.

+


+
+


Similarly, for term “Lactate, High”, {admiral} only grade 1 and +2, and there is the following criteria:

+


+
+


+

admiral assumed worst case and assume “without +acidosis”. The decision made was put in the COMMENT +field.

+


+
+


+

For TERM “Direct Bilirubin, High (<= 28 days of age)” and “Uric +Acid, High” the criteria is not given in SI unit. The conversion to SI +unit is in the comment field.

+


+
+


Conclusion

-

With NCI-CTCAEv4 and NCI-CTCAEv5 now implemented, {admiral} may look -to implement other industry standard grading criteria. Providing tools -for users to easily interact with the metadata to update criteria, based -on their companies needs will also be looked at. Ideally, users should -be able to create their own metadata for company specific grading -schemes.

+

With NCI-CTCAEv4, NCI-CTCAEv5 and DAIDS grading now implemented, +{admiral} may look to implement other industry standard grading +criteria. Providing tools for users to easily interact with the metadata +to update criteria, based on their companies needs will also be looked +at. Ideally, users should be able to create their own metadata for +company specific grading schemes.

@@ -737,7 +886,7 @@

Conclusion

-

Developed by Ben Straub, Stefan Bundfuss, Thomas Neitmann, Samia Kabi, Gordon Miller, Teckla Akinyi, Andrew Smith, Konstantina Koukourikou, Ross Farrugia, Eric Simms, Annie Yang, Robin Koeger, Sophie Shapcott, Ojesh Upadhyay, Jack McGavigan, Kamila Duniec, Gayatri G, Alana Harris, Mahdi About, Pooja Kumari, Claudia Carlucci, Daniil Stefonishin, Sadchla Mascary, Zelos Zhu, Jeffrey Dickinson, Ania Golab, Kangjie Zhang, Daphne Grasselly, Adam Forys, Edoardo Mancini, Stefan Thoma, F. Hoffmann-La Roche AG, GlaxoSmithKline LLC.

+

Developed by Ben Straub, Stefan Bundfuss, Jeffrey Dickinson, Ross Farrugia, Adam Forys, Daphne Grasselly, Dinakar Kulkarni, Edoardo Mancini, Sadchla Mascary, Gordon Miller, Sophie Shapcott, Eric Simms, Stefan Thoma, Kangjie Zhang, Zelos Zhu, G Gayatri, Thomas Neitmann, F. Hoffmann-La Roche AG, GlaxoSmithKline LLC.

Derive/Impute End and Start Analysis Date/time and Relative Day @@ -241,8 +225,8 @@

Derive/Impute End and Start Analysis Date/time and Relative Da reference_date = TRTSDT, source_vars = exprs(ASTDT, AENDT) )

-
-

See also Date and Time Imputation.

+
+

See also Date and Time Imputation.

Derive Durations @@ -257,8 +241,8 @@

Derive Durations= ASTDT, end_date = AENDT )

-
- +
+

Derive ATC variables @@ -357,8 +341,8 @@

Derive Date/Date-time of Last Dose= EXSTDTM <= ASTDTM, mode = "last" )

-
- +
+

Derive Severity, Causality, and Toxicity Grade @@ -387,8 +371,8 @@

Derive Treatment Emergent Flag= TRTEDT, end_window = 30 )

-
-

To derive on-treatment flag (ONTRTFL) in an ADaM dataset +

+

To derive on-treatment flag (ONTRTFL) in an ADaM dataset with a single occurrence date, we use derive_var_ontrtfl().

The expected result is the input dataset with an additional column @@ -396,7 +380,7 @@

Derive Treatment Emergent Flag if you want occurrences that started +span_period = TRUE if you want occurrences that started prior to drug intake, and was ongoing or ended after this time to be considered as on-treatment.

@@ -506,8 +490,8 @@ 

Derive Occurrence Flags), filter = TRTEMFL == "Y" )

-
- +
+

Derive Query Variables @@ -524,8 +508,8 @@

Derive Query Variables
 data("queries")
-
-
+
+
 adae1 <- tibble::tribble(
   ~USUBJID, ~ASTDTM, ~AETERM, ~AESEQ, ~AEDECOD, ~AELLT, ~AELLTCD,
   "01", "2020-06-02 23:59:59", "ALANINE AMINOTRANSFERASE ABNORMAL",
@@ -539,8 +523,8 @@ 

Derive Query Variables) adae_query <- derive_vars_query(dataset = adae1, dataset_queries = queries)

-
-

Similarly to SMQ, the derive_vars_query() function can +

+

Similarly to SMQ, the derive_vars_query() function can be used to derive Standardized Drug Groupings (SDG).

 sdg <- tibble::tribble(
@@ -559,8 +543,8 @@ 

Derive Query Variables"05", "2020-06-09 23:59:59", "Diuretic 2" ) adcm_query <- derive_vars_query(adcm, sdg)

-
- +
+

Add the ADSL variables @@ -573,8 +557,8 @@

Add the ADSL variables= select(adsl, !!!negate_vars(adsl_vars)), by_vars = exprs(STUDYID, USUBJID) )

-
- +
+

Derive Analysis Sequence Number @@ -603,8 +587,8 @@

Derive Analysis Sequence Number= ASEQ, check_type = "error" )

-
- +
+

Add Labels and Attributes @@ -663,7 +647,7 @@

Example Scripts

Expand Dosing Records @@ -427,8 +412,8 @@

Expand Dosing Recordsderive_vars_dtm_to_tm(exprs(ASTDTM)) %>% derive_vars_dtm_to_tm(exprs(AENDTM)) %>% derive_vars_dy(reference_date = TRTSDT, source_vars = exprs(ADT))

-
- +
+

Find First Dose @@ -460,8 +445,8 @@

Find First Dose= NFRLT %/% 24 + 1, AVISIT = paste("Day", AVISITN) )

-
- +
+

Find Reference Dose Dates Corresponding to PK Records @@ -491,8 +476,8 @@

Find Reference Dose Dates Corresponding to PK Records= "last", check_type = "none" )

-
-

Similarly, find next dose information using +

+

Similarly, find next dose information using derive_vars_joined() with the filter_join parameter as ADTM <= ADTM.join. Here we keep the next dose analysis date ADTM_next, the next actual dose @@ -516,8 +501,8 @@

Find Reference Dose Dates Corresponding to PK Records= "first", check_type = "none" ) -
-

Use the same method to find the previous and next nominal times. Note +

+

Use the same method to find the previous and next nominal times. Note that here the data are sorted by nominal time rather than the actual time. This will tell us when the previous dose and the next dose were supposed to occur. Sometimes this will differ from the actual times in a @@ -556,8 +541,8 @@

Find Reference Dose Dates Corresponding to PK Records= "first", check_type = "none" ) -
- +
+

Combine PC and EX Records and Derive Relative Time Variables @@ -643,8 +628,8 @@

Combine PC and EX Records and Derive Relative Time Variablesderive_vars_dtm_to_tm(exprs(FANLDTM)) %>% derive_vars_dtm_to_dt(exprs(PCRFTDTM)) %>% derive_vars_dtm_to_tm(exprs(PCRFTDTM))

-
-

For nominal relative times we calculate NRRLT generally +

+

For nominal relative times we calculate NRRLT generally as NFRLT - NFRLT_prev and NXRLT as NFRLT - NFRLT_next.

@@ -661,8 +646,8 @@ 

Combine PC and EX Records and Derive Relative Time VariablesTRUE ~ NFRLT - NFRLT_next ) )

-
- +
+

Derive Analysis Variables @@ -763,8 +748,8 @@

Derive Analysis Variables= "SEQ", SRCSEQ = coalesce(PCSEQ, EXSEQ) )

-
- +
+

Create Duplicated Records for Analysis @@ -808,8 +793,8 @@

Create Duplicated Records for Analysis) %>% derive_vars_dtm_to_dt(exprs(PCRFTDTM)) %>% derive_vars_dtm_to_tm(exprs(PCRFTDTM))

-
- +
+

Combine ADPC data with Duplicated Records @@ -836,8 +821,8 @@

Combine ADPC data with Duplicated Records= "Y", ANL02FL = if_else(is.na(DTYPE), "Y", NA_character_), )

-
- +
+

Calculate Change from Baseline and Assign ASEQ @@ -885,8 +870,8 @@

Calculate Change from Baseline and Assign ASEQderive_vars_merged( dataset_add = select(param_lookup, -PCTESTCD), by_vars = exprs(PARAMCD) )

-
- +
+

Add Additional Baseline Variables @@ -916,8 +901,8 @@

Add Additional Baseline Variables= compute_bmi(height = HTBL, weight = WTBL), BMIBLU = "kg/m^2" )

-
- +
+

Add the ADSL variables @@ -1009,9 +994,9 @@

Find First Dose ADPPK

The initial programming steps for ADPPK will follow the same sequence as the ADPC. This includes reading in the -{admiral.test} data, deriving analysis dates, defining the -nominal relative time from first dose NFRLT, and expanding -dosing records. For more detail see these steps above (Read in Data).

+pharmaversesdtm data, deriving analysis dates, defining +the nominal relative time from first dose NFRLT, and +expanding dosing records. For more detail see these steps above (Read in Data).

We will pick this up at the stage where we find the first dose for the concentration records. We will use derive_vars_merged() as we did for ADPC.

@@ -1036,8 +1021,8 @@

Find First Dose ADPPK= NFRLT %/% 24 + 1, AVISIT = paste("Day", AVISITN), )

-
- +
+

Find Previous Dose @@ -1080,8 +1065,8 @@

Find Previous Dose= "last", check_type = "none" )

-
- +
+

Combine PC and EX Records for ADPPK @@ -1139,8 +1124,8 @@

Combine PC and EX Records for ADPPKTRUE ~ NFRLT - NFRLT_prev ) )

-
- +
+
-
- +
+

Add ASEQ and Remove Temporary Variables @@ -1252,8 +1237,8 @@

Add ASEQ and Remove Temporary Variables-starts_with("AVISIT"), -starts_with("PARAM"), -ends_with("TMF"), -starts_with("TRT"), -starts_with("ATPT"), -DRUG )

-
- +
+

Derive Numeric Covariates @@ -1328,8 +1313,8 @@

Derive Numeric CovariatesRACE, RACEN, ETHNIC, ETHNICN, FORM, FORMN, COUNTRY, COUNTRYN, REGION1, REGION1N )

-
- +
+

Derive Additional Covariates from VS and LB @@ -1379,17 +1364,17 @@

Derive Additional Covariates from VS and LB), # Derive CRCLBL and EGFRBL using new function CRCLBL = compute_egfr( - creat = CREATBL, creatu = "SI", age = AGE, wt = WTBL, sex = SEX, + creat = CREATBL, creatu = "SI", age = AGE, weight = WTBL, sex = SEX, method = "CRCL" ), EGFRBL = compute_egfr( - creat = CREATBL, creatu = "SI", age = AGE, wt = WTBL, sex = SEX, + creat = CREATBL, creatu = "SI", age = AGE, weight = WTBL, sex = SEX, method = "CKD-EPI" ) ) %>% rename(TBILBL = BILIBL)

-
- +
+

Combine Covariates with ADPPK Data @@ -1406,8 +1391,8 @@

Combine Covariates with ADPPK Data) %>% arrange(STUDYIDN, USUBJIDN, AFRLT, EVID) %>% mutate(RECSEQ = row_number())

-
- +
+
@@ -221,8 +205,8 @@

Original Items= if_else(ADT <= TRTSDT, "BASELINE", VISIT), AVISITN = if_else(ADT <= TRTSDT, 0, VISITNUM) )

-
-

We handle unscheduled visits as normal visits. For deriving visits +

+

We handle unscheduled visits as normal visits. For deriving visits based on time-windows, see Visit and Period Variables. And for flagging values to be used for analysis, see derive_var_extreme_flag().

@@ -263,8 +247,8 @@

Scales and Scores= "GAD02-Total Score - Analysis" ) ) -
-

For the GDS-SF questionnaire, the total score is defined as the +

+

For the GDS-SF questionnaire, the total score is defined as the average of the item values transformed to the range [0, 15] and rounded up to the next integer. If more than five items are missing, the total score is considered as missing. This parameter can be derived by @@ -293,8 +277,8 @@

Scales and Scores= "GDS02- Total Score - Analysis" ) ) -
-

After deriving the scores by visit, the baseline and change from +

+

After deriving the scores by visit, the baseline and change from baseline variables can be derived:

 adgdssf <- adgdssf %>%
@@ -323,8 +307,8 @@ 

Scales and Scores= exprs(PARAMCD, ADT), check_type = "error" )

-
- +
+

Time to Deterioration/Improvement @@ -373,8 +357,8 @@

Time to Deterioration/ImprovementAVALCAT1N < BASECA1N ~ "IMPROVED", ) )

-
-

Then a time to deterioration parameter can be derived by:

+
+

Then a time to deterioration parameter can be derived by:

 # Define event
 deterioration_event <- event_source(
@@ -429,8 +413,8 @@ 

Time to Deterioration/Improvement= STARTDT, end_date = ADT )

-
- +
+

Time to Confirmed/Definitive Deterioration/Improvement @@ -454,8 +438,8 @@

Time to Confirmed/ CHGCAT1.join == "WORSENED" & ADY.join >= ADY + 7 )

-
-

For flagging deteriorations at two consecutive assessments or +

+

For flagging deteriorations at two consecutive assessments or considering death due to progression at the last assessment as confirmation, the tmp_obs_nr_var argument is helpful:

@@ -486,8 +470,8 @@ 

Time to Confirmed/ CHGCAT1.join == "WORSENED" & ADY.join >= ADY + 7 | tmp_obs_nr == max(tmp_obs_nr.join) & DTHCAUS == "PROGRESSIVE DISEASE") )

-
-

For definitive deterioration (deterioration at all following +

+

For definitive deterioration (deterioration at all following assessments), parameter summary functions like all() can be used in the filter condition:

@@ -500,8 +484,8 @@ 

Time to Confirmed/ join_type = "after", filter = CHGCAT1 == "WORSENED" & all(CHGCAT1.join == "WORSENED") )

-
-

The time-to-event parameter can be derived in the same way as for the +

+

The time-to-event parameter can be derived in the same way as for the unconfirmed parameters (see Time to Deterioration/Improvement).

@@ -563,8 +547,8 @@

Worst/Best Answer= "Worst Sleeping Problems" ) ) -
- +
+

Completion @@ -584,8 +568,8 @@

Completion= if_else(AVAL == 1, "YES", "NO") ) )

-
-

Please note that the denominator may depend on the answers of some of +

+

Please note that the denominator may depend on the answers of some of the questions. For example, a given questionnaire might direct someone to go from question #4 directly to question #8 based on their response to question #4, because questions #5, #6 and #7 would not apply in that @@ -627,9 +611,15 @@

Completion) ) %>% filter(is.na(filled_in)) %>% - select(-filled_in) -
- + select(-filled_in) +#> Warning: The `dataset_expected_obs` argument of `derive_expected_records()` is +#> deprecated as of admiral 0.12.0. +#> Please use the `dataset_ref` argument instead. +#> This warning is displayed once every 8 hours. +#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was +#> generated. +
+

@@ -185,7 +167,7 @@

Examples -

Developed by Ben Straub, Stefan Bundfuss, Thomas Neitmann, Samia Kabi, Gordon Miller, Teckla Akinyi, Andrew Smith, Konstantina Koukourikou, Ross Farrugia, Eric Simms, Annie Yang, Robin Koeger, Sophie Shapcott, Ojesh Upadhyay, Jack McGavigan, Kamila Duniec, Gayatri G, Alana Harris, Mahdi About, Pooja Kumari, Claudia Carlucci, Daniil Stefonishin, Sadchla Mascary, Zelos Zhu, Jeffrey Dickinson, Ania Golab, Kangjie Zhang, Daphne Grasselly, Adam Forys, Edoardo Mancini, Stefan Thoma, F. Hoffmann-La Roche AG, GlaxoSmithKline LLC.

+

Developed by Ben Straub, Stefan Bundfuss, Jeffrey Dickinson, Ross Farrugia, Adam Forys, Daphne Grasselly, Dinakar Kulkarni, Edoardo Mancini, Sadchla Mascary, Gordon Miller, Sophie Shapcott, Eric Simms, Stefan Thoma, Kangjie Zhang, Zelos Zhu, G Gayatri, Thomas Neitmann, F. Hoffmann-La Roche AG, GlaxoSmithKline LLC.