• Stars
    star
    222
  • Rank 179,123 (Top 4 %)
  • Language
    R
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ADaM in R Asset Library

admiral

CRAN status Test Coverage

ADaM in R Asset Library

Purpose

To provide an open source, modularized toolbox that enables the pharmaceutical programming community to develop ADaM datasets in R.

Installation

The package is available from CRAN and can be installed by running install.packages("admiral").

To install the latest development version of the package directly from GitHub use the following code:

if (!requireNamespace("remotes", quietly = TRUE)) {
  install.packages("remotes")
}

remotes::install_github("pharmaverse/admiral.test", ref = "devel") # This is a required dependency of {admiral}
remotes::install_github("pharmaverse/admiraldev", ref = "devel") # This is a required dependency of {admiral}
remotes::install_github("pharmaverse/admiral", ref = "devel")

Release Schedule

{admiral} releases are targeted for the first Monday of the last month of each quarter. Pull Requests will be frozen the week before a release. The admiral family has several downstream and upstream dependencies and so this release shall be done in three Phases:

  • Phase 1 release is for {admiraldev}, {admiral.test}, and {admiral} core
  • Phase 2 release is extension packages, e.g. {admiralonco}, admiralophtha
Release Schedule Phase 1- Date and Packages Phase 2- Date and Packages
Q3-2023 September 4th September 11th
{admiraldev} {admiral.test} {admiralonco}
{admiral} {admiralophtha}
Q4-2023 December 4th December 11th
{admiraldev} {admiral.test} {admiralonco}
{admiral} {admiralophtha}

Main Goal

Provide users with an open source, modularized toolbox with which to create ADaM datasets in R. As opposed to a “run 1 line and an ADaM appears” black-box solution or an attempt to automate ADaM.

One of the key aspects of {admiral} is its development by the users for the users. It gives an entry point for all to collaborate, co-create and contribute to a harmonized approach of developing ADaMs in R across the pharmaceutical industry.

Scope

To set expectations: It is not our target that {admiral} will ever provide all possible solutions for all ADaM datasets outside of study specific needs. It depends on the user's collaboration and contribution to help grow over time to an asset library that is robust, easy to use and has an across-industry focus. We do not see a coverage of 100% of all ADaM derivations as ever achievable---ADaM is endless.

We will provide:

  • A toolbox of re-usable functions and utilities to create ADaM datasets using R scripts in a modular manner (an "opinionated" design strategy)
  • Pharmaceutical communities and companies are encouraged to contribute to {admiral} following the provided programming strategy and modular approach
  • Functions that are comprehensively documented and tested, including example calls---these are all listed in the Reference section
  • Vignettes on how to create ADSL, BDS and OCCDS datasets, including example scripts
  • Vignettes for ADaM dataset specific functionality (i.e. dictionary coding, date imputation, SMQs ...)

Types of Packages

There will be 3 foreseeable types of {admiral} packages:

  • Core package---one package containing all core functions required to create ADaMs, usable by any company (i.e. general derivations, utility functions and checks for ADSL, OCCDS and BDS)
  • TA (Therapeutic Area) package extensions---one package per TA with functions that are specific to algorithms and requirements for that particular TA (e.g. {admiralonco})
  • Company package extensions---specific needs and plug-ins for the company, such as access to metadata (e.g. {admiralroche} or {admiralgsk})

Admiral Manifesto

For {admiral} and all extension packages, we prioritize providing our users with a simple to adopt toolkit that enables them to produce readable and easily constructible ADaM programs. The following explains our philosophy, which we try to adhere to across the {admiral} family of packages. There isn’t always a clear single, straightforward rule, but there are guiding principles we adhere to for {admiral}. This manifesto helps show the considerations of our developers when making decisions.

We have four design principles to achieve the main goal:

Usability

All {admiral} functions should be easy to use.

  • Documentation is an absolute priority. Each function reference page should cover the purpose, descriptions of each argument with permitted values, the expected input and output, with clear real-life examples---so that users don’t need to dig through code to find answers.
  • Vignettes that complement the functional documentation to help users see how best the functions can be applied to achieve ADaM requirements.
  • Functions should be written and structured in a way that users are able to read, re-use or extend them for study specific purposes if needed (see Readability below).

Simplicity

All {admiral} functions have a clear purpose.

  • We try not to ever design single functions that could achieve numerous very different derivations. For example if you as a user pick up a function with >10 different arguments then chances are it is going to be difficult to understand if this function could be applied for your specific need. The intention is that arguments/parameters can influence how the output of a function is calculated, but not change the purpose of the function.

  • We try to combine similar tasks and algorithms into one function where applicable to reduce the amount of repetitive functions with similar algorithms and to group together similar functionality to increase usability (e.g. one study day calculation rather than a function per variable).

  • We strive to design functions that are not too general and trying to fulfill multiple, complex purposes.

  • Functions should not allow expressions as arguments that are used as code snippets in function calls.

  • We recommend to avoid copy and paste of complex computational algorithms or repetitive code like checks and advise to wrap them into a function. However we would also like to avoid multi-layered functional nesting, so this needs to be considered carefully to keep the nesting of 3-4 functions an exception rather than the rule.

Findability

All {admiral} functions are easily findable.

  • In a growing code base, across a family of packages, we make every effort to make our functions easily findable.
  • We use consistent naming conventions across all our functions, and provide vignettes and ADaM templates that help users to get started and build familiarity. Each {admiral} family package website is searchable.
  • We avoid repetitive functions that will do similar tasks (as explained above with study day example).
  • Each package extension is kept focused on the specific scope, e.g. features that are relevant across multiple extension packages will be moved to the core {admiral} package.

Readability

All {admiral} functions follow the Programming Strategy that all our developers and contributors must follow, so that all our code has a high degree of consistency and readability.

  • We mandate use of tidyverse (e.g. dplyr) over similar functionality existing in base R.
  • For sections of code that perform the actual derivations (e.g. besides assertions or basic utilities), we try to limit nesting of too many dependencies or functions.
  • Modularity is a focus---we don’t try to achieve too many steps in one.
  • All code has to be well commented.
  • We recognize that a user or a Health Authority reviewer may have the wish to delve into the code base (especially given this open source setting), or users may need to extend/adapt the code for their study specific needs. We therefore want any module to be understandable to all, not only the {admiral} developers.

References and Documentation

Conference Presentations

Contact

We use the following for support and communications between user and developer community:

  • Slack---for informal discussions, Q&A and building our user community. If you don't have access, use this link to join the pharmaverse Slack workspace
  • GitHub Issues---for direct feedback, enhancement requests or raising bugs

More Repositories

1

ggsurvfit

R
70
star
2

cardinal

FDA Safety Tables and Figures
R
40
star
3

logrx

Tools to facilitate logging in a clinical environment with the goal of making code easily traceable and reproducible.
HTML
40
star
4

tidytlg

The goal of tidytlg is to generate tables, listings, and graphs (TLG) using Tidyverse.
Rich Text Format
33
star
5

admiralonco

Oncology extension package for ADaM in R Asset Library (admiral)
R
31
star
6

pharmaverse

Website: https://pharmaverse.org/
HTML
28
star
7

sdtm.oak

An EDC and Data Standard agnostic SDTM data transformation engine that automates the transformation of raw clinical data in ODM format to SDTM based on standard mapping algorithms
R
27
star
8

r-pharma2022

The material for the R/Pharma workshop about end to end clinical trials
R
26
star
9

blog

Blogging on the latest, greatest and most spectacular stuff happening around the pharmaverse
R
24
star
10

sdtmchecks

Analysis facing checks for SDTM data
R
21
star
11

admiraldev

Development Tools for the admiral family
R
17
star
12

admiralophtha

Ophthalmology package extension of admiral
R
14
star
13

admiralci

CI/CD workflows used across the admiral family of packages
R
13
star
14

pharmaversesdtm

Test SDTM data for use within the pharmaverse family of packages
R
13
star
15

admiralpeds

Admiral Package Extension for Pediatric Clinical Trials
R
13
star
16

datacutr

Apply a datacut to SDTM in R
R
12
star
17

pharmaverseadam

Test ADaM data for use with pharmaverse
R
10
star
18

cicdworkshop.rinpharma2022

CI/CD Workshop at R/Pharma conference 2022 ✨
SCSS
10
star
19

aNCA

(Pre-)clinical NCA in a dynamic shiny app
R
9
star
20

workshop-positconf23

Workshop notes for posit::conference 2023
R
8
star
21

pharmaverse-pkg

The pharmaverse R package
R
8
star
22

pharmaverse.workshop.phuseUS2022

pharmaverse - PHUSE US Connect 2022 Workhop
R
8
star
23

examples

End to end examples of pharmaverse packages for common safety clinical reporting analyses
R
8
star
24

metatools

R
6
star
25

envsetup

The purpose of this package is to support the setup of the R environment.
R
6
star
26

admiralvaccine

Vaccines extension package for ADaM in R Asset Library (admiral)
R
6
star
27

intro-to-r-for-sas-programmers-workshop

HTML
5
star
28

end_to_end_examples

Repo of end to end examples of using the pharmaverse
HTML
4
star
29

tealworkshop-rinpharma2023

R
4
star
30

admiralmetabolic

Metabolic package extension of admiral
R
4
star
31

admiraltemplate

Recommended Structure for admiral R package extensions
R
3
star
32

raw.synthetic.data

This package will focus on creating raw synthetic data based on the study design for EDC systems and nonCRF/vendor data
3
star
33

pharmaverse.r-universe.dev

For the r-universe
3
star
34

e2e_pk

End to End Examples for PK in Pharmaverse
R
2
star
35

admiral.test

Test SDTM data for use with admiral
R
2
star
36

cicdworkshop

R
1
star
37

upptime

Monitor pharmaverse.org uptime
Markdown
1
star
38

admiraldiscovery

R
1
star
39

pharmaverse4devs

Useful Utility Functions and Development Tools for Packages Across pharmaverse!
R
1
star
40

rpharma-phriday-workshop

Repo for the pharmaverse Friday workshop (First session) at R/pharma 2023
HTML
1
star