diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..45d257b29a --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000000..c309eaef1f --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,136 @@ +# Contribution Guidelines + +πŸ™ Thank you for taking the time to contribute! + +Your input is deeply valued, whether an issue, a pull request, or even feedback, regardless of size, content or scope. + +## Table of contents + +[πŸ‘Ά Getting started](#getting-started) + +[πŸ“” Code of Conduct](#code-of-conduct) + +[πŸ—ƒ License](#license) + +[πŸ“œ Issues](#issues) + +[🚩 Pull requests](#pull-requests) + +[πŸ’» Coding guidelines](#coding-guidelines) + +[πŸ† Recognition model](#recognition-model) + +[❓ Questions](#questions) + +## Getting started + +Please familiarize yourself with the specific [project structure][proj_readme] and the book content. Please make sure you read the "Development" section in the [README][book_readme] file. + +## Code of Conduct + +A [Code of Conduct](CODE_OF_CONDUCT.md) governs this project. Participants and contributors are expected to follow the rules outlined therein. + +## License + +All your contributions will be covered by this project's [license][license]. + +## Issues + +We use GitHub to track issues, feature requests, and bugs. Before submitting a new issue, please check if the issue has already been reported. If the issue already exists, please upvote the existing issue πŸ‘. + +For new feature requests, please elaborate on the context and the benefit the feature will have for users, developers, or other relevant personas. + +## Pull requests + +### GitHub Flow + +This repository uses the [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow) model for collaboration. To submit a pull request: + +1. Create a branch + + Please see the [branch naming convention](#branch-naming-convention) below. If you don't have write access to this repository, please fork it. + +2. Make changes + + Make sure your code + * passes all checks imposed by GitHub Actions + * is well documented + * is well tested with unit tests sufficiently covering the changes introduced + +3. Create a pull request (PR) + + In the pull request description, please link the relevant issue (if any), provide a detailed description of the change, and include any assumptions. + +4. Address review comments, if any + +5. Post approval + + Merge your PR if you have write access. Otherwise, the reviewer will merge the PR on your behalf. + +6. Pat yourself on the back + + Congratulations! πŸŽ‰ + You are now an official contributor to this project! We are grateful for your contribution. + +### Branch naming convention + +Suppose your changes are related to a current issue in the current project; please name your branch as follows: `_`. Please use underscore (`_`) as a delimiter for word separation. For example, `420_fix_ui_bug` would be a suitable branch name if your change is resolving and UI-related bug reported in issue number `420` in the current project. + +If your change affects multiple repositories, please name your branches as follows: `__`. For example, `69_awesomeproject_fix_spelling_error` would reference issue `69` reported in project `awesomeproject` and aims to resolve one or more spelling errors in multiple (likely related) repositories. + +### `monorepo` and `staged.dependencies` + +Sometimes you might need to change upstream dependent package(s) to be able to submit a meaningful change. We are using [`staged.dependencies`](https://github.com/openpharma/staged.dependencies) functionality to simulate a `monorepo` behavior. The dependency configuration is already specified in this project's `staged_dependencies.yaml` file. You need to name the feature branches appropriately. _This is the only exception from the branch naming convention described above_. + +Please refer to the [staged.dependencies package documentation](https://openpharma.github.io/staged.dependencies/) for more details. + +## Coding guidelines + +This repository follows some unified processes and standards adopted by its maintainers to ensure software development is carried out consistently within teams and cohesively across other repositories. + +### Style guide + +This repository follows the standard [`tidyverse` style guide](https://style.tidyverse.org/) and uses [`lintr`](https://github.com/r-lib/lintr) for lint checks. Customized lint configurations are available in this repository's `.lintr` file. + +### Dependency management + +Lightweight is the right weight. This repository follows [tinyverse](https://www.tinyverse.org/) recommedations of limiting dependencies to minimum. + +### Dependency version management + +If the code is not compatible with all (!) historical versions of a given dependenct package, it is required to specify minimal version in the `DESCRIPTION` file. In particular: if the development version requires (imports) the development version of another package - it is required to put `abc (>= 1.2.3.9000)`. + +### Recommended development environment & tools + +#### R & package versions + +We continuously test our packages against the newest R version along with the most recent dependencies from CRAN and BioConductor. We recommend that your working environment is also set up in the same way. You can find the details about the R version and packages used in the `R CMD check` GitHub Action execution log - there is a step that prints out the R `sessionInfo()`. + +If you discover bugs on older R versions or with an older set of dependencies, please create the relevant bug reports. + +#### `pre-commit` + +We highly recommend that you use the [`pre-commit`](https://pre-commit.com/) tool combined with [`R hooks for pre-commit`](https://github.com/lorenzwalthert/precommit) to execute some of the checks before committing and pushing your changes. + +Pre-commit hooks are already available in this repository's `.pre-commit-config.yaml` file. + +## Recognition model + +As mentioned previously, all contributions are deeply valued and appreciated. While all contribution data is available as part of the [repository insights][insights], to recognize a _significant_ contribution and hence add the contributor to the package authors list, the following rules are enforced: + +* Minimum 5% of lines of code authored* (determined by `git blame` query) OR +* Being at the top 5 contributors in terms of number of commits OR lines added OR lines removed* + +*Excluding auto-generated code, including but not limited to `roxygen` comments or `renv.lock` files. + +The package maintainer also reserves the right to adjust the criteria to recognize contributions. + +## Questions + +If you have further questions regarding the contribution guidelines, please contact the package/repository maintainer. + + +[proj_readme]: https://github.com/insightsengineering/tlg-catalog/tree/main#readme +[book_readme]: https://github.com/insightsengineering/tlg-catalog/tree/main/book#readme +[license]: https://raw.githubusercontent.com/insightsengineering/tlg-catalog/main/LICENSE +[insights]: https://github.com/insightsengineering/tlg-catalog/pulse diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 2210225df0..bf47198a4c 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -22,21 +22,30 @@ jobs: uses: insightsengineering/r.pkg.template/.github/workflows/audit.yaml@main r-cmd: if: github.event_name != 'push' - name: R CMD Check 🧬 + name: R CMD Check (development) 🧬 uses: insightsengineering/r.pkg.template/.github/workflows/build-check-install.yaml@main secrets: REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }} with: + install-deps-from-package-repositories: "R-universe=https://pharmaverse.r-universe.dev/,CRAN=https://cloud.r-project.org/" package-subdirectory: package additional-env-vars: | - _R_CHECK_CRAN_INCOMING_REMOTE_=false - additional-r-cmd-check-params: --as-cran - enforce-note-blocklist: true - note-blocklist: | - checking dependencies in R code ... NOTE - checking R code for possible problems ... NOTE - checking examples ... NOTE - checking Rd line widths ... NOTE + NOT_CRAN=true + QUARTO_PROFILE=development + concurrency-group: development + r-cmd-stable: + if: github.event_name != 'push' + name: R CMD Check (stable) 🧬 + uses: insightsengineering/r.pkg.template/.github/workflows/build-check-install.yaml@main + secrets: + REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }} + with: + install-deps-from-package-repositories: "R-universe=https://insightsengineering.r-universe.dev/,CRAN=https://cloud.r-project.org/" + package-subdirectory: package + additional-env-vars: | + NOT_CRAN=true + QUARTO_PROFILE=stable + concurrency-group: stable linter: if: github.event_name != 'push' name: SuperLinter πŸ¦Έβ€β™€οΈ @@ -45,6 +54,8 @@ jobs: if: github.event_name != 'push' name: Check URLs 🌐 uses: insightsengineering/r.pkg.template/.github/workflows/links.yaml@main + with: + package-subdirectory: package vbump: name: Version Bump πŸ€œπŸ€› if: github.event_name == 'push' diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml new file mode 100644 index 0000000000..b674b0b457 --- /dev/null +++ b/.github/workflows/cla.yaml @@ -0,0 +1,18 @@ +name: CLA πŸ” + +on: + issue_comment: + types: + - created + # For PRs that originate from forks + pull_request_target: + types: + - opened + - closed + - synchronize + +jobs: + CLA: + name: CLA πŸ“ + uses: insightsengineering/.github/.github/workflows/cla.yaml@main + secrets: inherit diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index b30ccddda2..28a1c7d1fe 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,19 +20,45 @@ on: - cron: "17 17 * * 3,6" jobs: + cache-refresh: + name: Refresh Cache β™½ + runs-on: ubuntu-latest + if: github.event_name == 'schedule' + steps: + - name: Refresh Cache β™½ + run: | + gh extension install actions/gh-actions-cache + echo "Fetching list of cache keys..." + cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 ) + ## Setting this to not fail the workflow while deleting cache keys. + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR + do { + gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm + } + done + echo "Cache refresh completed." + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + BRANCH: ${{ github.event.repository.default_branch }} + publish-dev: name: Build & Deploy TLGC (dev) πŸ“– runs-on: ubuntu-latest container: image: ghcr.io/insightsengineering/rstudio:latest + needs: cache-refresh + if: ${{ always() }} permissions: contents: write steps: - name: Checkout repo πŸ›Ž - uses: actions/checkout@v3 + uses: actions/checkout@v4.1.1 - name: Cache artifacts πŸ“€ - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/package/.staged.dependencies @@ -68,10 +94,31 @@ jobs: - name: Upload docs ⬆ if: startsWith(github.ref, 'refs/tags/v') - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: site-development path: site.zip + + - name: Remove large WebR assets 🧹 + run: | + packages_path <- sprintf("./book/_site/site_libs/quarto-contrib/shinylive-%s/shinylive/webr/packages", shinylive::assets_version()) + + # remove the dirs with size > 100 MB + for (x in list.dirs(packages_path)) { + x_files <- file.info(list.files(x, full.names = TRUE)) + if (any(x_files$size > 100 * 1024^2)) { + print(x) + print(x_files) + unlink(x, recursive = TRUE) + } + } + + # refresh the `metadata.rds` file + metadata_path <- file.path(packages_path, "metadata.rds") + metadata <- readRDS(metadata_path) + new_metadata <- metadata[intersect(names(metadata), list.dirs(packages_path, full.names = FALSE))] + saveRDS(new_metadata, metadata_path) + shell: Rscript {0} - name: Publish docs πŸ“” uses: peaceiris/actions-gh-pages@v3 @@ -88,43 +135,6 @@ jobs: url: ${{ secrets.GCHAT_WEBHOOK }} status: ${{ job.status }} - r-cmd-stable: - name: R CMD Check (stable) 🧬 - uses: insightsengineering/r.pkg.template/.github/workflows/build-check-install.yaml@main - secrets: - REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }} - with: - install-deps-from-package-repositories: "R-universe=https://insightsengineering.r-universe.dev/,CRAN=https://cloud.r-project.org/" - package-subdirectory: package - additional-env-vars: | - _R_CHECK_CRAN_INCOMING_REMOTE_=false - additional-r-cmd-check-params: --as-cran - enforce-note-blocklist: true - note-blocklist: | - checking dependencies in R code ... NOTE - checking R code for possible problems ... NOTE - checking examples ... NOTE - checking Rd line widths ... NOTE - - r-cmd-stable-notification: - name: R CMD check (stable) notification πŸ”” - runs-on: ubuntu-latest - needs: r-cmd-stable - if: always() - steps: - - name: Normalize variables πŸ“ - run: | - echo "gchat_webhook=${{ secrets.GCHAT_WEBHOOK }}" >> $GITHUB_ENV - shell: bash - - - name: GChat notification πŸ”” - if: (needs.r-cmd-stable.result == 'failure' || needs.r-cmd-stable.result == 'skipped') && env.gchat_webhook != '' - uses: insightsengineering/google-chat-notification@master - with: - name: ${{ github.event.repository.name }} - R CMD check (stable) - url: ${{ secrets.GCHAT_WEBHOOK }} - status: ${{ needs.r-cmd-stable.result }} - publish-stable: name: Build & Deploy TLGC (stable) πŸ“– runs-on: ubuntu-latest @@ -132,13 +142,15 @@ jobs: image: ghcr.io/insightsengineering/rstudio:latest permissions: contents: write - needs: r-cmd-stable + needs: + - cache-refresh + if: ${{ always() }} steps: - name: Checkout repo πŸ›Ž - uses: actions/checkout@v3 + uses: actions/checkout@v4.1.1 - name: Cache artifacts πŸ“€ - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | book/_freeze @@ -167,10 +179,32 @@ jobs: zip -r9 ../../site.zip * shell: bash working-directory: book/_site + + - name: Remove large WebR assets 🧹 + run: | + packages_path <- sprintf("./book/_site/site_libs/quarto-contrib/shinylive-%s/shinylive/webr/packages", shinylive::assets_version()) + + # remove the dirs with size > 100 MB + for (x in list.dirs(packages_path)) { + x_files <- file.info(list.files(x, full.names = TRUE)) + if (any(x_files$size > 100 * 1024^2)) { + print(x) + print(x_files) + unlink(x, recursive = TRUE) + } + } + + # refresh the `metadata.rds` file + metadata_path <- file.path(packages_path, "metadata.rds") + metadata <- readRDS(metadata_path) + new_metadata <- metadata[intersect(names(metadata), list.dirs(packages_path, full.names = FALSE))] + saveRDS(new_metadata, metadata_path) + shell: Rscript {0} + - name: Upload docs ⬆ if: startsWith(github.ref, 'refs/tags/v') - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: site-stable path: site.zip @@ -199,16 +233,16 @@ jobs: && !contains(github.event.commits[0].message, '[skip docs]') steps: - name: Checkout repo πŸ›Ž - uses: actions/checkout@v3 + uses: actions/checkout@v4.1.1 - name: Download artifact ⏬ - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: site-development path: site-development - name: Download artifact ⏬ - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: site-stable path: site-stable diff --git a/.gitignore b/.gitignore index 38b70a50be..f745feb3fb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,5 @@ .Ruserdata - .Rproj.user -.Rhistory -.RData -*.pdf -_cache -cache -*_cache -*_files -figures -publishing/ -libs -render*.rds -site_libs -_freeze -.quarto/ -_site .DS_Store -*.lock -*.html +.Rhistory +.RData \ No newline at end of file diff --git a/.lintr b/.lintr new file mode 100644 index 0000000000..e9d43f1931 --- /dev/null +++ b/.lintr @@ -0,0 +1,13 @@ +linters: linters_with_defaults( + line_length_linter = line_length_linter(120L), + cyclocomp_linter = NULL, + object_usage_linter = NULL, + object_name_linter = object_name_linter( + styles = c("snake_case", "symbols"), + regexes = c( + ANL = "^ANL_?[0-9A-Z_]*$", + ADaM = "^r?AD[A-Z]{2,5}_?[0-9]*$", + ADaM_variables = "^AVAL$|^USUBJID$|^PARAMCD$|^PARAM$" + ) + ) + ) diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 0000000000..13986d2f8f --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1 @@ +/book/_extensions/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..89aa150a51 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,62 @@ +# All available hooks: https://pre-commit.com/hooks.html +# R specific hooks: https://github.com/lorenzwalthert/precommit +repos: +- repo: https://github.com/lorenzwalthert/precommit + rev: v0.4.3.9001 + hooks: + - id: style-files + args: [--style_pkg=styler, --style_fun=tidyverse_style] + - id: spell-check + exclude: > + (?x)^( + .*\.[rR]| + .*\.feather| + .*\.jpeg| + .*\.pdf| + .*\.png| + .*\.py| + .*\.RData| + .*\.rds| + .*\.Rds| + .*\.Rproj| + .*\.scss| + .*\.sh| + .*\.svg| + .*\.qmd| + (.*/|)\.gitignore| + (.*/|)\.gitlab-ci\.yml| + (.*/|)\.lintr| + (.*/|)\.pre-commit-.*| + (.*/|)\.Rbuildignore| + (.*/|)\.Renviron| + (.*/|)\.Rprofile| + (.*/|)CODEOWNERS| + (.*/|)DESCRIPTION| + (.*/|)LICENSE| + (.*/|)NAMESPACE| + (.*/|)staged_dependencies\.y[a]?ml| + (.*/|)renv/settings\.dcf| + (.*/|)renv\.lock| + (.*/|)WORDLIST| + \.github/workflows/.*| + (.*/|)\_quarto[-]?.*\.yml| + (.*/|)markdown-snaps.md| + data/.* + )$ + - id: lintr + - id: parsable-R + - id: no-browser-statement + - id: no-debug-statement +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: check-added-large-files + args: ['--maxkb=200'] +- repo: local + hooks: + - id: forbid-to-commit + name: Don't commit common R artifacts + entry: Cannot commit .Rhistory, .RData, .Rds or .rds. + language: fail + files: '\.(Rhistory|RData|Rds|rds)$' + # `exclude: ` to allow committing specific files diff --git a/README.md b/README.md new file mode 100644 index 0000000000..cd0d9c3da0 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# TLG Catalog + +This repository consists of two main components: + +* [Book](https://github.com/insightsengineering/tlg-catalog/tree/main/book): A collection of Tables, Listings, and Graphs. Please navigate there to access source files. +* [Package](https://github.com/insightsengineering/tlg-catalog/tree/main/package): Used internally for testing purposes. Most likely you don't have to worry about this. diff --git a/book/.gitignore b/book/.gitignore index 416be9cda3..5197059c9d 100644 --- a/book/.gitignore +++ b/book/.gitignore @@ -1,2 +1,14 @@ -/.quarto/ +/_freeze/ +/_site/ +.quarto/ +*_cache/ +*_files/ *.rmarkdown +render*.rds + +# custom +assets/www/lock/ +assets/www/*.lock +teal_app.lock + +/.quarto/ diff --git a/book/CODE_OF_CONDUCT.md b/book/CODE_OF_CONDUCT.md new file mode 120000 index 0000000000..5cda94459f --- /dev/null +++ b/book/CODE_OF_CONDUCT.md @@ -0,0 +1 @@ +../.github/CODE_OF_CONDUCT.md \ No newline at end of file diff --git a/book/CONTRIBUTING.md b/book/CONTRIBUTING.md new file mode 120000 index 0000000000..e6afed1864 --- /dev/null +++ b/book/CONTRIBUTING.md @@ -0,0 +1 @@ +../.github/CONTRIBUTING.md \ No newline at end of file diff --git a/book/README.md b/book/README.md index 36a5a3cee6..dfddd0cd00 100644 --- a/book/README.md +++ b/book/README.md @@ -1,48 +1,73 @@ -# TLG Catalog +# TLG Catalog -Catalog for tables, listings, and graphs generated from NEST R packages. +The TLG catalog is a catalog of **T**ables, **L**istings, and **G**raphs for clinical trials generated using NEST packages. -## Architecture +This repository provides a comprehensive collection of clinical trials outputs generated using the R language. +The target audience is the clinical trials community, including statisticians, data scientists, and other professionals interested in applying R to clinical trials data. -This repository follows a very straightforward architecture. +## Usage -``` mermaid -sequenceDiagram - autonumber - Author->>github.com: Creates content + pushes updates - github.com->>Github Pages: Builds and publishes - Analyst->>Github Pages: Refers to catalog -``` +Each TLG is represented on a separate article page, typically including the following sections: -## Technology +- Setup and pre-processing of synthetic data. +- Steps to produce the TLG. +- The output TLG generated by the given code (including any available variants). +- An interactive application that can alternatively be used to produce and interact with the TLG. +- Reproducibility information. -- Dependency management: [`staged.dependencies`](https://openpharma.github.io/staged.dependencies/) for installing dependencies -- Building and rendering: [`quarto`](https://quarto.org/) -- Publishing: [`Github Pages`](https://pages.github.com/) hosted at +See the full list of available TLGs on the [Index page](tlg-index.qmd). -## Development +### Interacting with Catalog R Code + +
+
+The full source code of each article can be viewed by clicking on the "Source Code" button at the top of the page and copied using the "Copy to Clipboard" button. +
+ +
+ +
+ +
+Individual code chunks from within the article can also be viewed and copied. +
+ +
+ +
+ +
+The Reproducibility tab contains session information and allows one to install the packages required to properly run the code. +
-This repository is based on the [quarto websites](https://quarto.org/docs/websites/) framework. +
+ +
+
-As a pre-requisite, you need to [install quarto](https://quarto.org/docs/get-started/) and also [install and configure staged.dependencies](https://github.com/openpharma/staged.dependencies#usage). +## License + +This catalog as well as code examples are licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details. + +## Contributing + +We welcome contributions big and small to the TLG catalog. +Please refer to the [Contributing](CONTRIBUTING.md) guide for more information on how you can contribute. +Use the `giscus` panels at the bottom of each page to share your feedback & ideas, ask questions, and report issues. + +## Development -You can install dependencies simply by running the following in an R session: +This website is built using [Quarto](https://quarto.org/) and hosted on [GitHub Pages](https://pages.github.com/). +This website is rebuilt and republished daily as well as every time a change is pushed to the repository as part of the CI/CD process. -``` r -# Assuming: -# 1. Your current working directory is the same as the project directory -# 2. You have set up your GITHUB_PAT environment variable -options( - staged.dependencies.token_mapping = c( - "https://github.com" = "GITHUB_PAT" - ) -) -library(staged.dependencies) -x <- dependency_table(project = ".", verbose = 1) -install_deps(x, verbose = 1, install_project = FALSE) -``` +The catalog is rendered using "Stable" and "Development" profiles. +The main difference between these two profiles is the package versions used to generate the outputs. +The "Stable" profile uses the most recently released versions of all packages, whereas the "Development" profile uses the latest development versions of all NEST packages. +This means that the same R code (e.g. `foo::bar()`) would be run using both the latest released and development package versions (e.g. `foo@v1.2.3` on the "Stable" profile and `foo@v1.2.3.9123` on the "Development" profile). +If your article is affected by API changes between released and development versions, please consider [conditional content](https://quarto.org/docs/authoring/conditional.html) (checking `QUARTO_PROFILE` environment variable) and/or `if` statements on respective package versions to enable the article to work in both profiles. -You'll see that files under [tables](tables), [listings](listings), and [graphs](graphs) are in a `.qmd` file format, which translates to a **q**uarto **m**ark**d**own format. +As a part of the CI/CD process, each article's code is checked for quality, coherence, and readability using tools such as `lintr`, `styler`, and `spelling`. +Additionally, regression testing is performed using `testthat` snapshot testing (see the [package component of the repository](https://github.com/insightsengineering/tlg-catalog/tree/main/package) for more details). -If you are adding a new table, listing, or graph in the form a a new `qmd` file, then you will also need to update the index in the [index.qmd](index.qmd) file with the new file name. +If you are adding a new table, listing, or graph in the form a new `.qmd` file, then you will also need to update the index in the [tlg-index.qmd](tlg-index.qmd) file with the new file name. To do so, run the R code in the [generate-index.R](generate-index.R) file after creating your template. diff --git a/book/_extensions/coatless/webr/_extension.yml b/book/_extensions/coatless/webr/_extension.yml new file mode 100644 index 0000000000..2c95d6eb0f --- /dev/null +++ b/book/_extensions/coatless/webr/_extension.yml @@ -0,0 +1,8 @@ +name: webr +title: Embedded webr code cells +author: James Joseph Balamuta +version: 0.4.2-dev.3 +quarto-required: ">=1.2.198" +contributes: + filters: + - webr.lua diff --git a/book/_extensions/coatless/webr/qwebr-cell-elements.js b/book/_extensions/coatless/webr/qwebr-cell-elements.js new file mode 100644 index 0000000000..5037bdc350 --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-cell-elements.js @@ -0,0 +1,274 @@ +// Supported Evaluation Types for Context +globalThis.EvalTypes = Object.freeze({ + Interactive: 'interactive', + Setup: 'setup', + Output: 'output', +}); + +// Function that obtains the font size for a given element +globalThis.qwebrCurrentFontSizeOnElement = function(element, cssProperty = 'font-size') { + + const currentFontSize = parseFloat( + window + .getComputedStyle(element) + .getPropertyValue(cssProperty) + ); + + return currentFontSize; +} + +// Function to determine font scaling +globalThis.qwebrScaledFontSize = function(div, qwebrOptions) { + // Determine if we should compute font-size using RevealJS's `--r-main-font-size` + // or if we can directly use the document's `font-size`. + const cssProperty = document.body.classList.contains('reveal') ? + "--r-main-font-size" : "font-size"; + + // Get the current font size on the div element + const elementFontSize = qwebrCurrentFontSizeOnElement(div, cssProperty); + + // Determine the scaled font size value + const scaledFontSize = ((qwebrOptions['editor-font-scale'] ?? 1) * elementFontSize) ?? 17.5; + + return scaledFontSize; +} + + +// Function that dispatches the creation request +globalThis.qwebrCreateHTMLElement = function ( + cellData +) { + + // Extract key components + const evalType = cellData.options.context; + const qwebrCounter = cellData.id; + + // We make an assumption that insertion points are defined by the Lua filter as: + // qwebr-insertion-location-{qwebrCounter} + const elementLocator = document.getElementById(`qwebr-insertion-location-${qwebrCounter}`); + + // Figure out the routine to use to insert the element. + let qwebrElement; + switch ( evalType ) { + case EvalTypes.Interactive: + qwebrElement = qwebrCreateInteractiveElement(qwebrCounter, cellData.options); + break; + case EvalTypes.Output: + qwebrElement = qwebrCreateNonInteractiveOutputElement(qwebrCounter, cellData.options); + break; + case EvalTypes.Setup: + qwebrElement = qwebrCreateNonInteractiveSetupElement(qwebrCounter, cellData.options); + break; + default: + qwebrElement = document.createElement('div'); + qwebrElement.textContent = 'Error creating `quarto-webr` element'; + } + + // Insert the dynamically generated object at the document location. + elementLocator.appendChild(qwebrElement); +}; + +// Function that setups the interactive element creation +globalThis.qwebrCreateInteractiveElement = function (qwebrCounter, qwebrOptions) { + + // Create main div element + var mainDiv = document.createElement('div'); + mainDiv.id = 'qwebr-interactive-area-' + qwebrCounter; + mainDiv.className = `qwebr-interactive-area`; + if (qwebrOptions.classes) { + mainDiv.className += " " + qwebrOptions.classes + } + + // Add a unique cell identifier that users can customize + if (qwebrOptions.label) { + mainDiv.setAttribute('data-id', qwebrOptions.label); + } + + // Create toolbar div + var toolbarDiv = document.createElement('div'); + toolbarDiv.className = 'qwebr-editor-toolbar'; + toolbarDiv.id = 'qwebr-editor-toolbar-' + qwebrCounter; + + // Create a div to hold the left buttons + var leftButtonsDiv = document.createElement('div'); + leftButtonsDiv.className = 'qwebr-editor-toolbar-left-buttons'; + + // Create a div to hold the right buttons + var rightButtonsDiv = document.createElement('div'); + rightButtonsDiv.className = 'qwebr-editor-toolbar-right-buttons'; + + // Create Run Code button + var runCodeButton = document.createElement('button'); + runCodeButton.className = 'btn btn-default qwebr-button qwebr-button-run'; + runCodeButton.disabled = true; + runCodeButton.type = 'button'; + runCodeButton.id = 'qwebr-button-run-' + qwebrCounter; + runCodeButton.textContent = '🟑 Loading webR...'; + runCodeButton.title = `Run code (Shift + Enter)`; + + // Append buttons to the leftButtonsDiv + leftButtonsDiv.appendChild(runCodeButton); + + // Create Reset button + var resetButton = document.createElement('button'); + resetButton.className = 'btn btn-light btn-xs qwebr-button qwebr-button-reset'; + resetButton.type = 'button'; + resetButton.id = 'qwebr-button-reset-' + qwebrCounter; + resetButton.title = 'Start over'; + resetButton.innerHTML = ''; + + // Create Copy button + var copyButton = document.createElement('button'); + copyButton.className = 'btn btn-light btn-xs qwebr-button qwebr-button-copy'; + copyButton.type = 'button'; + copyButton.id = 'qwebr-button-copy-' + qwebrCounter; + copyButton.title = 'Copy code'; + copyButton.innerHTML = ''; + + // Append buttons to the rightButtonsDiv + rightButtonsDiv.appendChild(resetButton); + rightButtonsDiv.appendChild(copyButton); + + // Create console area div + var consoleAreaDiv = document.createElement('div'); + consoleAreaDiv.id = 'qwebr-console-area-' + qwebrCounter; + consoleAreaDiv.className = 'qwebr-console-area'; + + // Create editor div + var editorDiv = document.createElement('div'); + editorDiv.id = 'qwebr-editor-' + qwebrCounter; + editorDiv.className = 'qwebr-editor'; + + // Create output code area div + var outputCodeAreaDiv = document.createElement('div'); + outputCodeAreaDiv.id = 'qwebr-output-code-area-' + qwebrCounter; + outputCodeAreaDiv.className = 'qwebr-output-code-area'; + outputCodeAreaDiv.setAttribute('aria-live', 'assertive'); + + // Create pre element inside output code area + var preElement = document.createElement('pre'); + preElement.style.visibility = 'hidden'; + outputCodeAreaDiv.appendChild(preElement); + + // Create output graph area div + var outputGraphAreaDiv = document.createElement('div'); + outputGraphAreaDiv.id = 'qwebr-output-graph-area-' + qwebrCounter; + outputGraphAreaDiv.className = 'qwebr-output-graph-area'; + + // Append buttons to the toolbar + toolbarDiv.appendChild(leftButtonsDiv); + toolbarDiv.appendChild(rightButtonsDiv); + + // Append all elements to the main div + mainDiv.appendChild(toolbarDiv); + consoleAreaDiv.appendChild(editorDiv); + consoleAreaDiv.appendChild(outputCodeAreaDiv); + mainDiv.appendChild(consoleAreaDiv); + mainDiv.appendChild(outputGraphAreaDiv); + + return mainDiv; +} + +// Function that adds output structure for non-interactive output +globalThis.qwebrCreateNonInteractiveOutputElement = function(qwebrCounter, qwebrOptions) { + // Create main div element + var mainDiv = document.createElement('div'); + mainDiv.id = 'qwebr-noninteractive-area-' + qwebrCounter; + mainDiv.className = `qwebr-noninteractive-area`; + if (qwebrOptions.classes) { + mainDiv.className += " " + qwebrOptions.classes + } + + // Add a unique cell identifier that users can customize + if (qwebrOptions.label) { + mainDiv.setAttribute('data-id', qwebrOptions.label); + } + + // Create a status container div + var statusContainer = createLoadingContainer(qwebrCounter); + + // Create output code area div + var outputCodeAreaDiv = document.createElement('div'); + outputCodeAreaDiv.id = 'qwebr-output-code-area-' + qwebrCounter; + outputCodeAreaDiv.className = 'qwebr-output-code-area'; + outputCodeAreaDiv.setAttribute('aria-live', 'assertive'); + + // Create pre element inside output code area + var preElement = document.createElement('pre'); + preElement.style.visibility = 'hidden'; + outputCodeAreaDiv.appendChild(preElement); + + // Create output graph area div + var outputGraphAreaDiv = document.createElement('div'); + outputGraphAreaDiv.id = 'qwebr-output-graph-area-' + qwebrCounter; + outputGraphAreaDiv.className = 'qwebr-output-graph-area'; + + // Append all elements to the main div + mainDiv.appendChild(statusContainer); + mainDiv.appendChild(outputCodeAreaDiv); + mainDiv.appendChild(outputGraphAreaDiv); + + return mainDiv; +}; + +// Function that adds a stub in the page to indicate a setup cell was used. +globalThis.qwebrCreateNonInteractiveSetupElement = function(qwebrCounter, qwebrOptions) { + // Create main div element + var mainDiv = document.createElement('div'); + mainDiv.id = `qwebr-noninteractive-setup-area-${qwebrCounter}`; + mainDiv.className = `qwebr-noninteractive-setup-area`; + if (qwebrOptions.classes) { + mainDiv.className += " " + qwebrOptions.classes + } + + + // Add a unique cell identifier that users can customize + if (qwebrOptions.label) { + mainDiv.setAttribute('data-id', qwebrOptions.label); + } + + // Create a status container div + var statusContainer = createLoadingContainer(qwebrCounter); + + // Append status onto the main div + mainDiv.appendChild(statusContainer); + + return mainDiv; +} + + +// Function to create loading container with specified ID +globalThis.createLoadingContainer = function(qwebrCounter) { + + // Create a status container + const container = document.createElement('div'); + container.id = `qwebr-non-interactive-loading-container-${qwebrCounter}`; + container.className = 'qwebr-non-interactive-loading-container qwebr-cell-needs-evaluation'; + + // Create an R project logo to indicate its a code space + const rProjectIcon = document.createElement('i'); + rProjectIcon.className = 'fa-brands fa-r-project fa-3x qwebr-r-project-logo'; + + // Setup a loading icon from font awesome + const spinnerIcon = document.createElement('i'); + spinnerIcon.className = 'fa-solid fa-spinner fa-spin fa-1x qwebr-icon-status-spinner'; + + // Add a section for status text + const statusText = document.createElement('p'); + statusText.id = `qwebr-status-text-${qwebrCounter}`; + statusText.className = `qwebr-status-text qwebr-cell-needs-evaluation`; + statusText.innerText = 'Loading webR...'; + + // Incorporate an inner container + const innerContainer = document.createElement('div'); + + // Append elements to the inner container + innerContainer.appendChild(spinnerIcon); + innerContainer.appendChild(statusText); + + // Append elements to the main container + container.appendChild(rProjectIcon); + container.appendChild(innerContainer); + + return container; +} \ No newline at end of file diff --git a/book/_extensions/coatless/webr/qwebr-cell-initialization.js b/book/_extensions/coatless/webr/qwebr-cell-initialization.js new file mode 100644 index 0000000000..828bc94a6e --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-cell-initialization.js @@ -0,0 +1,110 @@ +// Handle cell initialization initialization +qwebrCellDetails.map( + (entry) => { + // Handle the creation of the element + qwebrCreateHTMLElement(entry); + // In the event of interactive, initialize the monaco editor + if (entry.options.context == EvalTypes.Interactive) { + qwebrCreateMonacoEditorInstance(entry); + } + } +); + +// Identify non-interactive cells (in order) +const filteredEntries = qwebrCellDetails.filter(entry => { + const contextOption = entry.options && entry.options.context; + return ['output', 'setup'].includes(contextOption) || (contextOption == "interactive" && entry.options && entry.options.autorun === 'true'); +}); + +// Condition non-interactive cells to only be run after webR finishes its initialization. +qwebrInstance.then( + async () => { + const nHiddenCells = filteredEntries.length; + var currentHiddenCell = 0; + + + // Modify button state + qwebrSetInteractiveButtonState(`🟑 Running hidden code cells ...`, false); + + // Begin processing non-interactive sections + // Due to the iteration policy, we must use a for() loop. + // Otherwise, we would need to switch to using reduce with an empty + // starting promise + for (const entry of filteredEntries) { + + // Determine cell being examined + currentHiddenCell = currentHiddenCell + 1; + const formattedMessage = `Evaluating hidden cell ${currentHiddenCell} out of ${nHiddenCells}`; + + // Update the document status header + if (qwebrShowStartupMessage) { + qwebrUpdateStatusHeader(formattedMessage); + } + + // Display the update in non-active areas + qwebrUpdateStatusMessage(formattedMessage); + + // Extract details on the active cell + const evalType = entry.options.context; + const cellCode = entry.code; + const qwebrCounter = entry.id; + + if (['output', 'setup'].includes(evalType)) { + // Disable further global status updates + const activeContainer = document.getElementById(`qwebr-non-interactive-loading-container-${qwebrCounter}`); + activeContainer.classList.remove('qwebr-cell-needs-evaluation'); + activeContainer.classList.add('qwebr-cell-evaluated'); + + // Update status on the code cell + const activeStatus = document.getElementById(`qwebr-status-text-${qwebrCounter}`); + activeStatus.innerText = " Evaluating hidden code cell..."; + activeStatus.classList.remove('qwebr-cell-needs-evaluation'); + activeStatus.classList.add('qwebr-cell-evaluated'); + } + + switch (evalType) { + case 'interactive': + // TODO: Make this more standardized. + // At the moment, we're overriding the interactive status update by pretending its + // output-like. + const tempOptions = entry.options; + tempOptions["context"] = "output" + // Run the code in a non-interactive state that is geared to displaying output + await qwebrExecuteCode(`${cellCode}`, qwebrCounter, tempOptions); + break; + case 'output': + // Run the code in a non-interactive state that is geared to displaying output + await qwebrExecuteCode(`${cellCode}`, qwebrCounter, entry.options); + break; + case 'setup': + const activeDiv = document.getElementById(`qwebr-noninteractive-setup-area-${qwebrCounter}`); + // Run the code in a non-interactive state with all output thrown away + await mainWebR.evalRVoid(`${cellCode}`); + break; + default: + break; + } + + if (['output', 'setup'].includes(evalType)) { + // Disable further global status updates + const activeContainer = document.getElementById(`qwebr-non-interactive-loading-container-${qwebrCounter}`); + // Disable visibility + activeContainer.style.visibility = 'hidden'; + activeContainer.style.display = 'none'; + } + } + } +).then( + () => { + // Release document status as ready + + if (qwebrShowStartupMessage) { + qwebrStartupMessage.innerText = "🟒 Ready!" + } + + qwebrSetInteractiveButtonState( + ` Run Code`, + true + ); + } +); \ No newline at end of file diff --git a/book/_extensions/coatless/webr/qwebr-compute-engine.js b/book/_extensions/coatless/webr/qwebr-compute-engine.js new file mode 100644 index 0000000000..f4ad17b9f9 --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-compute-engine.js @@ -0,0 +1,280 @@ +// Function to verify a given JavaScript Object is empty +globalThis.qwebrIsObjectEmpty = function (arr) { + return Object.keys(arr).length === 0; +} + +// Global version of the Escape HTML function that converts HTML +// characters to their HTML entities. +globalThis.qwebrEscapeHTMLCharacters = function(unsafe) { + return unsafe + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + }; + +// Passthrough results +globalThis.qwebrIdentity = function(x) { + return x; +}; + +// Append a comment +globalThis.qwebrPrefixComment = function(x, comment) { + return `${comment}${x}`; +}; + +// Function to parse the pager results +globalThis.qwebrParseTypePager = async function (msg) { + + // Split out the event data + const { path, title, deleteFile } = msg.data; + + // Process the pager data by reading the information from disk + const paged_data = await mainWebR.FS.readFile(path).then((data) => { + // Obtain the file content + let content = new TextDecoder().decode(data); + + // Remove excessive backspace characters until none remain + while(content.match(/.[\b]/)){ + content = content.replace(/.[\b]/g, ''); + } + + // Returned cleaned data + return content; + }); + + // Unlink file if needed + if (deleteFile) { + await mainWebR.FS.unlink(path); + } + + // Return extracted data with spaces + return paged_data; +} + +// Function to run the code using webR and parse the output +globalThis.qwebrComputeEngine = async function( + codeToRun, + elements, + options) { + + // Call into the R compute engine that persists within the document scope. + // To be prepared for all scenarios, the following happens: + // 1. We setup a canvas device to write to by making a namespace call into the {webr} package + // 2. We use values inside of the options array to set the figure size. + // 3. We capture the output stream information (STDOUT and STERR) + // 4. We disable the current device's image creation. + // 5. Piece-wise parse the results into the different output areas + + // Create a pager variable for help/file contents + let pager = []; + + // Handle how output is processed + let showMarkup = options.results === "markup" && options.output !== "asis"; + let processOutput; + + if (showMarkup) { + processOutput = qwebrEscapeHTMLCharacters; + } else { + processOutput = qwebrIdentity; + } + + // ---- + // Convert from Inches to Pixels by using DPI (dots per inch) + // for bitmap devices (dpi * inches = pixels) + let fig_width = options["fig-width"] * options["dpi"] + let fig_height = options["fig-height"] * options["dpi"] + + // Initialize webR + await mainWebR.init(); + + // Setup a webR canvas by making a namespace call into the {webr} package + // Evaluate the R code + // Remove the active canvas silently + const result = await mainWebRCodeShelter.captureR( + `webr::canvas(width=${fig_width}, height=${fig_height}, capture = TRUE) + .webr_cvs_id <- dev.cur() + ${codeToRun} + invisible(dev.off(.webr_cvs_id)) + `, { + withAutoprint: true, + captureStreams: true, + captureConditions: false//, + // env: webR.objs.emptyEnv, // maintain a global environment for webR v0.2.0 + }); + + // ----- + + // Start attempting to parse the result data + processResultOutput:try { + + // Avoid running through output processing + if (options.results === "hide" || options.output === "false") { + break processResultOutput; + } + + // Merge output streams of STDOUT and STDErr (messages and errors are combined.) + // Require both `warning` and `message` to be true to display `STDErr`. + const out = result.output + .filter( + evt => evt.type === "stdout" || + ( evt.type === "stderr" && (options.warning === "true" && options.message === "true")) + ) + .map((evt, index) => { + const className = `qwebr-output-code-${evt.type}`; + const outputResult = qwebrPrefixComment(processOutput(evt.data), options.comment); + return `${outputResult}`; + }) + .join("\n"); + + + // Clean the state + // We're now able to process pager events. + // As a result, we cannot maintain a true 1-to-1 output order + // without individually feeding each line + const msgs = await mainWebR.flush(); + + // Use `map` to process the filtered "pager" events asynchronously + const pager = await Promise.all( + msgs.filter(msg => msg.type === 'pager').map( + async (msg) => { + return await qwebrParseTypePager(msg); + } + ) + ); + + // Nullify the output area of content + elements.outputCodeDiv.innerHTML = ""; + elements.outputGraphDiv.innerHTML = ""; + + // Design an output object for messages + const pre = document.createElement("pre"); + if (/\S/.test(out)) { + // Display results as HTML elements to retain output styling + const div = document.createElement("div"); + div.innerHTML = out; + + // Calculate a scaled font-size value + const scaledFontSize = qwebrScaledFontSize( + elements.outputCodeDiv, options); + + // Override output code cell size + pre.style.fontSize = `${scaledFontSize}px`; + pre.appendChild(div); + } else { + // If nothing is present, hide the element. + pre.style.visibility = "hidden"; + } + + elements.outputCodeDiv.appendChild(pre); + + // Determine if we have graphs to display + if (result.images.length > 0) { + // Create figure element + const figureElement = document.createElement('figure'); + + // Place each rendered graphic onto a canvas element + result.images.forEach((img) => { + // Construct canvas for object + const canvas = document.createElement("canvas"); + + // Set canvas size to image + canvas.width = img.width; + canvas.height = img.height; + + // Apply output truncations + canvas.style.width = options["out-width"] ? options["out-width"] : `${fig_width}px`; + if (options["out-height"]) { + canvas.style.height = options["out-height"]; + } + + // Apply styling + canvas.style.display = "block"; + canvas.style.margin = "auto"; + + // Draw image onto Canvas + const ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, img.width, img.height); + + // Append canvas to figure output area + figureElement.appendChild(canvas); + }); + + if (options['fig-cap']) { + // Create figcaption element + const figcaptionElement = document.createElement('figcaption'); + figcaptionElement.innerText = options['fig-cap']; + // Append figcaption to figure + figureElement.appendChild(figcaptionElement); + } + + elements.outputGraphDiv.appendChild(figureElement); + } + + // Display the pager data + if (pager) { + // Use the `pre` element to preserve whitespace. + pager.forEach((paged_data, index) => { + let pre_pager = document.createElement("pre"); + pre_pager.innerText = paged_data; + pre_pager.classList.add("qwebr-output-code-pager"); + pre_pager.setAttribute("id", `qwebr-output-code-pager-editor-${elements.id}-result-${index + 1}`); + elements.outputCodeDiv.appendChild(pre_pager); + }); + } + } finally { + // Clean up the remaining code + mainWebRCodeShelter.purge(); + } +} + +// Function to execute the code (accepts code as an argument) +globalThis.qwebrExecuteCode = async function ( + codeToRun, + id, + options = {}) { + + // If options are not passed, we fall back on the bare minimum to handle the computation + if (qwebrIsObjectEmpty(options)) { + options = { + "context": "interactive", + "fig-width": 7, "fig-height": 5, + "out-width": "700px", "out-height": "", + "dpi": 72, + "results": "markup", + "warning": "true", "message": "true", + }; + } + + // Next, we access the compute areas values + const elements = { + runButton: document.getElementById(`qwebr-button-run-${id}`), + outputCodeDiv: document.getElementById(`qwebr-output-code-area-${id}`), + outputGraphDiv: document.getElementById(`qwebr-output-graph-area-${id}`), + id: id, + } + + // Disallowing execution of other code cells + document.querySelectorAll(".qwebr-button-run").forEach((btn) => { + btn.disabled = true; + }); + + if (options.context == EvalTypes.Interactive) { + // Emphasize the active code cell + elements.runButton.innerHTML = ' Run Code'; + } + + // Evaluate the code and parse the output into the document + await qwebrComputeEngine(codeToRun, elements, options); + + // Switch to allowing execution of code + document.querySelectorAll(".qwebr-button-run").forEach((btn) => { + btn.disabled = false; + }); + + if (options.context == EvalTypes.Interactive) { + // Revert to the initial code cell state + elements.runButton.innerHTML = ' Run Code'; + } +} diff --git a/book/_extensions/coatless/webr/qwebr-document-engine-initialization.js b/book/_extensions/coatless/webr/qwebr-document-engine-initialization.js new file mode 100644 index 0000000000..1d447e8bdb --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-document-engine-initialization.js @@ -0,0 +1,94 @@ +// Function to install a single package +async function qwebrInstallRPackage(packageName) { + await mainWebR.evalRVoid(`webr::install('${packageName}');`); +} + +// Function to load a single package +async function qwebrLoadRPackage(packageName) { + await mainWebR.evalRVoid(`require('${packageName}', quietly = TRUE)`); +} + +// Generic function to process R packages +async function qwebrProcessRPackagesWithStatus(packages, processType, displayStatusMessageUpdate = true) { + // Switch between contexts + const messagePrefix = processType === 'install' ? 'Installing' : 'Loading'; + + // Modify button state + qwebrSetInteractiveButtonState(`🟑 ${messagePrefix} package ...`, false); + + // Iterate over packages + for (let i = 0; i < packages.length; i++) { + const activePackage = packages[i]; + const formattedMessage = `${messagePrefix} package ${i + 1} out of ${packages.length}: ${activePackage}`; + + // Display the update in header + if (displayStatusMessageUpdate) { + qwebrUpdateStatusHeader(formattedMessage); + } + + // Display the update in non-active areas + qwebrUpdateStatusMessage(formattedMessage); + + // Run package installation + if (processType === 'install') { + await qwebrInstallRPackage(activePackage); + } else { + await qwebrLoadRPackage(activePackage); + } + } + + // Clean slate + if (processType === 'load') { + await mainWebR.flush(); + } +} + +// Start a timer +const initializeWebRTimerStart = performance.now(); + +// Encase with a dynamic import statement +globalThis.qwebrInstance = import(qwebrCustomizedWebROptions.baseURL + "webr.mjs").then( + async ({ WebR, ChannelType }) => { + // Populate WebR options with defaults or new values based on `webr` meta + globalThis.mainWebR = new WebR(qwebrCustomizedWebROptions); + + // Initialization WebR + await mainWebR.init(); + + // Setup a shelter + globalThis.mainWebRCodeShelter = await new mainWebR.Shelter(); + + // Setup a pager to allow processing help documentation + await mainWebR.evalRVoid('webr::pager_install()'); + + // Override the existing install.packages() to use webr::install() + await mainWebR.evalRVoid('webr::shim_install()'); + + // Specify the repositories to pull from + // Note: webR does not use the `repos` option, but instead uses `webr_pkg_repos` + // inside of `install()`. However, other R functions still pull from `repos`. + await mainWebR.evalRVoid(` + options( + webr_pkg_repos = c(${qwebrPackageRepoURLS.map(repoURL => `'${repoURL}'`).join(',')}), + repos = c(${qwebrPackageRepoURLS.map(repoURL => `'${repoURL}'`).join(',')}) + ) + `); + + // Check to see if any packages need to be installed + if (qwebrSetupRPackages) { + // Obtain only a unique list of packages + const uniqueRPackageList = Array.from(new Set(qwebrInstallRPackagesList)); + + // Install R packages one at a time (either silently or with a status update) + await qwebrProcessRPackagesWithStatus(uniqueRPackageList, 'install', qwebrShowStartupMessage); + + if (qwebrAutoloadRPackages) { + // Load R packages one at a time (either silently or with a status update) + await qwebrProcessRPackagesWithStatus(uniqueRPackageList, 'load', qwebrShowStartupMessage); + } + } + } +); + +// Stop timer +const initializeWebRTimerEnd = performance.now(); diff --git a/book/_extensions/coatless/webr/qwebr-document-settings.js b/book/_extensions/coatless/webr/qwebr-document-settings.js new file mode 100644 index 0000000000..70495cf667 --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-document-settings.js @@ -0,0 +1,26 @@ +// Document level settings ---- + +// Determine if we need to install R packages +globalThis.qwebrInstallRPackagesList = [{{INSTALLRPACKAGESLIST}}]; + +// Specify possible locations to search for the repository +globalThis.qwebrPackageRepoURLS = [{{RPACKAGEREPOURLS}}]; + +// Check to see if we have an empty array, if we do set to skip the installation. +globalThis.qwebrSetupRPackages = !(qwebrInstallRPackagesList.indexOf("") !== -1); +globalThis.qwebrAutoloadRPackages = {{AUTOLOADRPACKAGES}}; + +// Display a startup message? +globalThis.qwebrShowStartupMessage = {{SHOWSTARTUPMESSAGE}}; +globalThis.qwebrShowHeaderMessage = {{SHOWHEADERMESSAGE}}; + +// Describe the webR settings that should be used +globalThis.qwebrCustomizedWebROptions = { + "baseURL": "{{BASEURL}}", + "serviceWorkerUrl": "{{SERVICEWORKERURL}}", + "homedir": "{{HOMEDIR}}", + "channelType": "{{CHANNELTYPE}}" +}; + +// Store cell data +globalThis.qwebrCellDetails = {{QWEBRCELLDETAILS}}; diff --git a/book/_extensions/coatless/webr/qwebr-document-status.js b/book/_extensions/coatless/webr/qwebr-document-status.js new file mode 100644 index 0000000000..c13a5f5277 --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-document-status.js @@ -0,0 +1,92 @@ +// Declare startupMessageQWebR globally +globalThis.qwebrStartupMessage = document.createElement("p"); + + +// Function to set the button text +globalThis.qwebrSetInteractiveButtonState = function(buttonText, enableCodeButton = true) { + document.querySelectorAll(".qwebr-button-run").forEach((btn) => { + btn.innerHTML = buttonText; + btn.disabled = !enableCodeButton; + }); +} + +// Function to update the status message in non-interactive cells +globalThis.qwebrUpdateStatusMessage = function(message) { + document.querySelectorAll(".qwebr-status-text.qwebr-cell-needs-evaluation").forEach((elem) => { + elem.innerText = message; + }); +} + +// Function to update the status message +globalThis.qwebrUpdateStatusHeader = function(message) { + qwebrStartupMessage.innerHTML = ` + + ${message}`; +} + +// Function that attaches the document status message and diagnostics +function displayStartupMessage(showStartupMessage, showHeaderMessage) { + if (!showStartupMessage) { + return; + } + + // Get references to header elements + const headerHTML = document.getElementById("title-block-header"); + const headerRevealJS = document.getElementById("title-slide"); + + // Create the outermost div element for metadata + const quartoTitleMeta = document.createElement("div"); + quartoTitleMeta.classList.add("quarto-title-meta"); + + // Create the first inner div element + const firstInnerDiv = document.createElement("div"); + firstInnerDiv.setAttribute("id", "qwebr-status-message-area"); + + // Create the second inner div element for "WebR Status" heading and contents + const secondInnerDiv = document.createElement("div"); + secondInnerDiv.setAttribute("id", "qwebr-status-message-title"); + secondInnerDiv.classList.add("quarto-title-meta-heading"); + secondInnerDiv.innerText = "WebR Status"; + + // Create another inner div for contents + const secondInnerDivContents = document.createElement("div"); + secondInnerDivContents.setAttribute("id", "qwebr-status-message-body"); + secondInnerDivContents.classList.add("quarto-title-meta-contents"); + + // Describe the WebR state + qwebrStartupMessage.innerText = "🟑 Loading..."; + qwebrStartupMessage.setAttribute("id", "qwebr-status-message-text"); + // Add `aria-live` to auto-announce the startup status to screen readers + qwebrStartupMessage.setAttribute("aria-live", "assertive"); + + // Append the startup message to the contents + secondInnerDivContents.appendChild(qwebrStartupMessage); + + // Add a status indicator for COOP and COEP Headers if needed + if (showHeaderMessage) { + const crossOriginMessage = document.createElement("p"); + crossOriginMessage.innerText = `${crossOriginIsolated ? '🟒' : '🟑'} COOP & COEP Headers`; + crossOriginMessage.setAttribute("id", "qwebr-coop-coep-header"); + secondInnerDivContents.appendChild(crossOriginMessage); + } + + // Combine the inner divs and contents + firstInnerDiv.appendChild(secondInnerDiv); + firstInnerDiv.appendChild(secondInnerDivContents); + quartoTitleMeta.appendChild(firstInnerDiv); + + // Determine where to insert the quartoTitleMeta element + if (headerHTML || headerRevealJS) { + // Append to the existing "title-block-header" element or "title-slide" div + (headerHTML || headerRevealJS).appendChild(quartoTitleMeta); + } else { + // If neither headerHTML nor headerRevealJS is found, insert after "webr-monaco-editor-init" script + const monacoScript = document.getElementById("qwebr-monaco-editor-init"); + const header = document.createElement("header"); + header.setAttribute("id", "title-block-header"); + header.appendChild(quartoTitleMeta); + monacoScript.after(header); + } +} + +displayStartupMessage(qwebrShowStartupMessage, qwebrShowHeaderMessage); \ No newline at end of file diff --git a/book/_extensions/coatless/webr/qwebr-monaco-editor-element.js b/book/_extensions/coatless/webr/qwebr-monaco-editor-element.js new file mode 100644 index 0000000000..24552861ed --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-monaco-editor-element.js @@ -0,0 +1,171 @@ +// Global array to store Monaco Editor instances +globalThis.qwebrEditorInstances = []; + +// Function that builds and registers a Monaco Editor instance +globalThis.qwebrCreateMonacoEditorInstance = function (cellData) { + + const initialCode = cellData.code; + const qwebrCounter = cellData.id; + const qwebrOptions = cellData.options; + + // Retrieve the previously created document elements + let runButton = document.getElementById(`qwebr-button-run-${qwebrCounter}`); + let resetButton = document.getElementById(`qwebr-button-reset-${qwebrCounter}`); + let copyButton = document.getElementById(`qwebr-button-copy-${qwebrCounter}`); + let editorDiv = document.getElementById(`qwebr-editor-${qwebrCounter}`); + + // Load the Monaco Editor and create an instance + let editor; + require(['vs/editor/editor.main'], function () { + editor = monaco.editor.create(editorDiv, { + value: initialCode, + language: 'r', + theme: 'vs-light', + automaticLayout: true, // Works wonderfully with RevealJS + scrollBeyondLastLine: false, + minimap: { + enabled: false + }, + fontSize: qwebrScaledFontSize(editorDiv, qwebrOptions), + renderLineHighlight: "none", // Disable current line highlighting + hideCursorInOverviewRuler: true, // Remove cursor indictor in right hand side scroll bar + readOnly: qwebrOptions['read-only'] ?? false, + quickSuggestions: qwebrOptions['editor-quick-suggestions'] ?? false + }); + + // Store the official counter ID to be used in keyboard shortcuts + editor.__qwebrCounter = qwebrCounter; + + // Store the official div container ID + editor.__qwebrEditorId = `qwebr-editor-${qwebrCounter}`; + + // Store the initial code value and options + editor.__qwebrinitialCode = initialCode; + editor.__qwebrOptions = qwebrOptions; + + // Set at the model level the preferred end of line (EOL) character to LF. + // This prevent `\r\n` from being given to the webR engine if the user is on Windows. + // See details in: https://github.com/coatless/quarto-webr/issues/94 + // Associated error text: + // Error: :1:7 unexpected input + + // Retrieve the underlying model + const model = editor.getModel(); + // Set EOL for the model + model.setEOL(monaco.editor.EndOfLineSequence.LF); + + // Dynamically modify the height of the editor window if new lines are added. + let ignoreEvent = false; + const updateHeight = () => { + // Increment editor height by 2 to prevent vertical scroll bar from appearing + const contentHeight = editor.getContentHeight() + 2; + + // Retrieve editor-max-height option + const maxEditorHeight = qwebrOptions['editor-max-height']; + + // If editor-max-height is missing, allow infinite growth. Otherwise, threshold. + const editorHeight = !maxEditorHeight ? contentHeight : Math.min(contentHeight, maxEditorHeight); + + // We're avoiding a width change + //editorDiv.style.width = `${width}px`; + editorDiv.style.height = `${editorHeight}px`; + try { + ignoreEvent = true; + + // The key to resizing is this call + editor.layout(); + } finally { + ignoreEvent = false; + } + }; + + // Helper function to check if selected text is empty + function isEmptyCodeText(selectedCodeText) { + return (selectedCodeText === null || selectedCodeText === undefined || selectedCodeText === ""); + } + + // Registry of keyboard shortcuts that should be re-added to each editor window + // when focus changes. + const addWebRKeyboardShortCutCommands = () => { + // Add a keydown event listener for Shift+Enter to run all code in cell + editor.addCommand(monaco.KeyMod.Shift | monaco.KeyCode.Enter, () => { + + // Retrieve all text inside the editor + qwebrExecuteCode(editor.getValue(), editor.__qwebrCounter, editor.__qwebrOptions); + }); + + // Add a keydown event listener for CMD/Ctrl+Enter to run selected code + editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, () => { + + // Get the selected text from the editor + const selectedText = editor.getModel().getValueInRange(editor.getSelection()); + // Check if no code is selected + if (isEmptyCodeText(selectedText)) { + // Obtain the current cursor position + let currentPosition = editor.getPosition(); + // Retrieve the current line content + let currentLine = editor.getModel().getLineContent(currentPosition.lineNumber); + + // Propose a new position to move the cursor to + let newPosition = new monaco.Position(currentPosition.lineNumber + 1, 1); + + // Check if the new position is beyond the last line of the editor + if (newPosition.lineNumber > editor.getModel().getLineCount()) { + // Add a new line at the end of the editor + editor.executeEdits("addNewLine", [{ + range: new monaco.Range(newPosition.lineNumber, 1, newPosition.lineNumber, 1), + text: "\n", + forceMoveMarkers: true, + }]); + } + + // Run the entire line of code. + qwebrExecuteCode(currentLine, editor.__qwebrCounter, editor.__qwebrOptions); + + // Move cursor to new position + editor.setPosition(newPosition); + } else { + // Code to run when Ctrl+Enter is pressed with selected code + qwebrExecuteCode(selectedText, editor.__qwebrCounter, editor.__qwebrOptions); + } + }); + } + + // Register an on focus event handler for when a code cell is selected to update + // what keyboard shortcut commands should work. + // This is a workaround to fix a regression that happened with multiple + // editor windows since Monaco 0.32.0 + // https://github.com/microsoft/monaco-editor/issues/2947 + editor.onDidFocusEditorText(addWebRKeyboardShortCutCommands); + + // Register an on change event for when new code is added to the editor window + editor.onDidContentSizeChange(updateHeight); + + // Manually re-update height to account for the content we inserted into the call + updateHeight(); + + // Store the editor instance in the global dictionary + qwebrEditorInstances[editor.__qwebrCounter] = editor; + + }); + + // Add a click event listener to the run button + runButton.onclick = function () { + qwebrExecuteCode(editor.getValue(), editor.__qwebrCounter, editor.__qwebrOptions); + }; + + // Add a click event listener to the reset button + copyButton.onclick = function () { + // Retrieve current code data + const data = editor.getValue(); + + // Write code data onto the clipboard. + navigator.clipboard.writeText(data || ""); + }; + + // Add a click event listener to the copy button + resetButton.onclick = function () { + editor.setValue(editor.__qwebrinitialCode); + }; + +} \ No newline at end of file diff --git a/book/_extensions/coatless/webr/qwebr-monaco-editor-init.html b/book/_extensions/coatless/webr/qwebr-monaco-editor-init.html new file mode 100644 index 0000000000..af846d8ec0 --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-monaco-editor-init.html @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/book/_extensions/coatless/webr/qwebr-styling.css b/book/_extensions/coatless/webr/qwebr-styling.css new file mode 100644 index 0000000000..2ee49bd83c --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-styling.css @@ -0,0 +1,173 @@ +.monaco-editor pre { + background-color: unset !important; +} + +.qwebr-editor-toolbar { + width: 100%; + display: flex; + justify-content: space-between; + box-sizing: border-box; +} + +.qwebr-editor-toolbar-left-buttons, .qwebr-editor-toolbar-right-buttons { + display: flex; +} + +.qwebr-non-interactive-loading-container.qwebr-cell-needs-evaluation, .qwebr-non-interactive-loading-container.qwebr-cell-evaluated { + justify-content: center; + display: flex; + background-color: rgba(250, 250, 250, 0.65); + border: 1px solid rgba(233, 236, 239, 0.65); + border-radius: 0.5rem; + margin-top: 15px; + margin-bottom: 15px; +} + +.qwebr-r-project-logo { + color: #2767B0; /* R Project's blue color */ +} + +.qwebr-icon-status-spinner { + color: #7894c4; +} + +.qwebr-icon-run-code { + color: #0d9c29 +} + +body.quarto-light .qwebr-output-code-stdout { + color: #111; +} + +body.quarto-dark .qwebr-output-code-stdout { + color: #EEE; +} + +.qwebr-output-code-stderr { + color: #db4133; +} + +body.quarto-light .qwebr-editor { + border: 1px solid #EEEEEE; +} + +body.quarto-light .qwebr-editor-toolbar { + background-color: #EEEEEE; + padding: 0.2rem 0.5rem; +} + +body.quarto-dark .qwebr-editor { + border: 1px solid #111; +} + +body.quarto-dark .qwebr-editor-toolbar { + background-color: #111; + padding: 0.2rem 0.5rem; +} + +.qwebr-button { + display: inline-block; + font-weight: 400; + line-height: 1; + text-decoration: none; + text-align: center; + padding: 0.375rem 0.75rem; + font-size: .9rem; + border-radius: 0.25rem; + transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; +} + +body.quarto-light .qwebr-button { + background-color: #EEEEEE; + color: #000; + border-color: #dee2e6; + border: 1px solid rgba(0,0,0,0); +} + +body.quarto-dark .qwebr-button { + background-color: #111; + color: #EEE; + border-color: #dee2e6; + border: 1px solid rgba(0,0,0,0); +} + +body.quarto-light .qwebr-button:hover { + color: #000; + background-color: #d9dce0; + border-color: #c8ccd0; +} + +body.quarto-dark .qwebr-button:hover { + color: #d9dce0; + background-color: #323232; + border-color: #d9dce0; +} + +.qwebr-button:disabled,.qwebr-button.disabled,fieldset:disabled .qwebr-button { + pointer-events: none; + opacity: .65 +} + +.qwebr-button-reset { + color: #696969; /*#4682b4;*/ +} + +.qwebr-button-copy { + color: #696969; +} + + +/* Custom styling for RevealJS Presentations*/ + +/* Reset the style of the interactive area */ +.reveal div.qwebr-interactive-area { + display: block; + box-shadow: none; + max-width: 100%; + max-height: 100%; + margin: 0; + padding: 0; +} + +/* Provide space to entries */ +.reveal div.qwebr-output-code-area pre div { + margin: 1px 2px 1px 10px; +} + +/* Collapse the inside code tags to avoid extra space between line outputs */ +.reveal pre div code.qwebr-output-code-stdout, .reveal pre div code.qwebr-output-code-stderr { + padding: 0; + display: contents; +} + +body.reveal.quarto-light pre div code.qwebr-output-code-stdout { + color: #111; +} + +body.reveal.quarto-dark pre div code.qwebr-output-code-stdout { + color: #EEEEEE; +} + +.reveal pre div code.qwebr-output-code-stderr { + color: #db4133; +} + + +/* Create a border around console and output (does not effect graphs) */ +body.reveal.quarto-light div.qwebr-console-area { + border: 1px solid #EEEEEE; + box-shadow: 2px 2px 10px #EEEEEE; +} + +body.reveal.quarto-dark div.qwebr-console-area { + border: 1px solid #111; + box-shadow: 2px 2px 10px #111; +} + + +/* Cap output height and allow text to scroll */ +/* TODO: Is there a better way to fit contents/max it parallel to the monaco editor size? */ +.reveal div.qwebr-output-code-area pre { + max-height: 400px; + overflow: scroll; +} diff --git a/book/_extensions/coatless/webr/qwebr-theme-switch.js b/book/_extensions/coatless/webr/qwebr-theme-switch.js new file mode 100644 index 0000000000..efefc66602 --- /dev/null +++ b/book/_extensions/coatless/webr/qwebr-theme-switch.js @@ -0,0 +1,42 @@ +// Function to update Monaco Editors when body class changes +function updateMonacoEditorsOnBodyClassChange() { + // Select the body element + const body = document.querySelector('body'); + + // Options for the observer (which mutations to observe) + const observerOptions = { + attributes: true, // Observe changes to attributes + attributeFilter: ['class'] // Only observe changes to the 'class' attribute + }; + + // Callback function to execute when mutations are observed + const bodyClassChangeCallback = function(mutationsList, observer) { + for(let mutation of mutationsList) { + if (mutation.type === 'attributes' && mutation.attributeName === 'class') { + // Class attribute has changed + // Update all Monaco Editors on the page + updateMonacoEditorTheme(); + } + } + }; + + // Create an observer instance linked to the callback function + const observer = new MutationObserver(bodyClassChangeCallback); + + // Start observing the target node for configured mutations + observer.observe(body, observerOptions); +} + +// Function to update all instances of Monaco Editors on the page +function updateMonacoEditorTheme() { + // Determine what VS Theme to use + const vsThemeToUse = document.body.classList.contains("quarto-dark") ? 'vs-dark' : 'vs' ; + + // Iterate through all initialized Monaco Editors + qwebrEditorInstances.forEach( function(editorInstance) { + editorInstance.updateOptions({ theme: vsThemeToUse }); + }); +} + +// Call the function to start observing changes to body class +updateMonacoEditorsOnBodyClassChange(); \ No newline at end of file diff --git a/book/_extensions/coatless/webr/template.qmd b/book/_extensions/coatless/webr/template.qmd new file mode 100644 index 0000000000..79b63a18d8 --- /dev/null +++ b/book/_extensions/coatless/webr/template.qmd @@ -0,0 +1,36 @@ +--- +title: "WebR-enabled code cell" +format: html +engine: knitr +#webr: +# show-startup-message: false # Disable display of webR initialization state +# show-header-message: true # Display whether COOP&COEP headers are set for speed. +# packages: ['ggplot2', 'dplyr'] # Pre-install dependencies +# autoload-packages: false # Disable automatic library calls on R packages specified in packages. +# repos: # Specify repositories to check for custom packages +# - https://github-username.github.io/reponame +# - https://username.r-universe.dev +# channel-type: 'post-message' # Specify a specific communication channel type. +# home-dir: "/home/rstudio" # Customize where the working directory is +# base-url: '' # Base URL used for downloading R WebAssembly binaries +# service-worker-url: '' # URL from where to load JavaScript worker scripts when loading webR with the ServiceWorker communication channel. +filters: +- webr +--- + +## Demo + +This is a webr-enabled code cell in a Quarto HTML document. + +```{webr-r} +1 + 1 +``` + +```{webr-r} +fit = lm(mpg ~ am, data = mtcars) +summary(fit) +``` + +```{webr-r} +plot(pressure) +``` diff --git a/book/_extensions/coatless/webr/webr-serviceworker.js b/book/_extensions/coatless/webr/webr-serviceworker.js new file mode 100644 index 0000000000..ab830893d9 --- /dev/null +++ b/book/_extensions/coatless/webr/webr-serviceworker.js @@ -0,0 +1 @@ +importScripts('https://webr.r-wasm.org/v0.3.1/webr-serviceworker.js'); diff --git a/book/_extensions/coatless/webr/webr-worker.js b/book/_extensions/coatless/webr/webr-worker.js new file mode 100644 index 0000000000..a7b3d5c478 --- /dev/null +++ b/book/_extensions/coatless/webr/webr-worker.js @@ -0,0 +1 @@ +importScripts('https://webr.r-wasm.org/v0.3.1/webr-worker.js'); diff --git a/book/_extensions/coatless/webr/webr.lua b/book/_extensions/coatless/webr/webr.lua new file mode 100644 index 0000000000..6cb055999e --- /dev/null +++ b/book/_extensions/coatless/webr/webr.lua @@ -0,0 +1,636 @@ +---- +--- Setup variables for default initialization + +-- Define a variable to check if webR is present. +local missingWebRCell = true + +-- Define a variable to check if webR was initialized for the page +local hasDoneWebRSetup = false + +--- Setup default initialization values +-- Default values taken from: +-- https://docs.r-wasm.org/webr/latest/api/js/interfaces/WebR.WebROptions.html + +-- Define a base compatibile version +local baseVersionWebR = "0.3.1" + +-- Define where WebR can be found +local baseUrl = "https://webr.r-wasm.org/v".. baseVersionWebR .."/" +local serviceWorkerUrl = "" + +-- Define the webR communication protocol +local channelType = "ChannelType.Automatic" + +-- Define a variable to suppress exporting service workers if not required. +-- (e.g. skipped for PostMessage or SharedArrayBuffer) +local hasServiceWorkerFiles = true + +-- Define user directory +local homeDir = "/home/web_user" + +-- Define whether a startup message should be displayed +local showStartUpMessage = "true" + +-- Define whether header type messages should be displayed +local showHeaderMessage = "false" + +-- Define a default repository URL +local defaultRepoURL = "'https://repo.r-wasm.org/'" + +-- Define possible repo URLs +local rPackageRepoURLS = defaultRepoURL + +-- Define an empty string if no packages need to be installed. +local installRPackagesList = "''" + +-- Define whether R packages should automatically be loaded +local autoloadRPackages = "true" +---- + +--- Setup variables for tracking number of code cells + +-- Define a counter variable +local qwebrCounter = 0 + +-- Initialize a table to store the CodeBlock elements +local qwebrCapturedCodeBlocks = {} + +-- Initialize a table that contains the default cell-level options +local qwebRDefaultCellOptions = { + ["context"] = "interactive", + ["warning"] = "true", + ["message"] = "true", + ["results"] = "markup", + ["output"] = "true", + ["comment"] = "", + ["label"] = "", + ["autorun"] = "", + ["read-only"] = "false", + ["classes"] = "", + ["dpi"] = 72, + ["fig-cap"] = "", + ["fig-width"] = 7, + ["fig-height"] = 5, + ["out-width"] = "700px", + ["out-height"] = "", + ["editor-font-scale"] = 1, + ["editor-max-height"] = "", + ["editor-quick-suggestions"] = "false" +} + +---- +--- Process initialization + +-- Check if variable missing or an empty string +local function isVariableEmpty(s) + return s == nil or s == '' +end + +-- Check if variable is present +local function isVariablePopulated(s) + return not isVariableEmpty(s) +end + +-- Copy the top level value and its direct children +-- Details: http://lua-users.org/wiki/CopyTable +local function shallowcopy(original) + -- Determine if its a table + if type(original) == 'table' then + -- Copy the top level to remove references + local copy = {} + for key, value in pairs(original) do + copy[key] = value + end + -- Return the copy + return copy + else + -- If original is not a table, return it directly since it's already a copy + return original + end +end + +-- Custom method for cloning a table with a shallow copy. +function table.clone(original) + return shallowcopy(original) +end + +local function mergeCellOptions(localOptions) + -- Copy default options to the mergedOptions table + local mergedOptions = table.clone(qwebRDefaultCellOptions) + + -- Override default options with local options + for key, value in pairs(localOptions) do + if type(value) == "string" then + value = value:gsub("[\"']", "") + end + mergedOptions[key] = value + end + + -- Return the customized options + return mergedOptions +end + +-- Convert the communication channel meta option into a WebROptions.channelType option +local function convertMetaChannelTypeToWebROption(input) + -- Create a table of conditions + local conditions = { + ["automatic"] = "ChannelType.Automatic", + [0] = "ChannelType.Automatic", + ["shared-array-buffer"] = "ChannelType.SharedArrayBuffer", + [1] = "ChannelType.SharedArrayBuffer", + ["service-worker"] = "ChannelType.ServiceWorker", + [2] = "ChannelType.ServiceWorker", + ["post-message"] = "ChannelType.PostMessage", + [3] = "ChannelType.PostMessage", + } + -- Subset the table to obtain the communication channel. + -- If the option isn't found, return automatic. + return conditions[input] or "ChannelType.Automatic" +end + + +-- Parse the different webr options set in the YAML frontmatter, e.g. +-- +-- ```yaml +-- ---- +-- webr: +-- base-url: https://webr.r-wasm.org/[version] +-- service-worker-url: path/to/workers/{webr-serviceworker.js, webr-worker.js} +-- ---- +-- ``` +-- +-- +function setWebRInitializationOptions(meta) + + -- Let's explore the meta variable data! + -- quarto.log.output(meta) + + -- Retrieve the webr options from meta + local webr = meta.webr + + -- Does this exist? If not, just return meta as we'll just use the defaults. + if isVariableEmpty(webr) then + return meta + end + + -- Allow modification of code cells global defaults + if isVariablePopulated(webr["cell-options"]) then + for index, value in pairs(webr["cell-options"]) do + qwebRDefaultCellOptions[index] = pandoc.utils.stringify(value) + end + end + + + -- The base URL used for downloading R WebAssembly binaries + -- https://webr.r-wasm.org/[version]/webr.mjs + -- Documentation: + -- https://docs.r-wasm.org/webr/latest/api/js/interfaces/WebR.WebROptions.html#baseurl + if isVariablePopulated(webr["base-url"]) then + baseUrl = pandoc.utils.stringify(webr["base-url"]) + end + + -- The communication channel mode webR uses to connect R with the web browser + -- Default: "ChannelType.Automatic" + -- Documentation: + -- https://docs.r-wasm.org/webr/latest/api/js/interfaces/WebR.WebROptions.html#channeltype + if isVariablePopulated(webr["channel-type"]) then + channelType = convertMetaChannelTypeToWebROption(pandoc.utils.stringify(webr["channel-type"])) + + -- Starting from webR v0.2.2, service workers are only deployed when explicitly requested. + hasServiceWorkerFiles = (channelType == "ChannelType.ServiceWorker") + end + + -- The base URL from where to load JavaScript worker scripts when loading webR + -- with the ServiceWorker communication channel mode. + -- Documentation: + -- https://docs.r-wasm.org/webr/latest/api/js/interfaces/WebR.WebROptions.html#serviceworkerurl + if isVariablePopulated(webr["service-worker-url"]) then + serviceWorkerUrl = pandoc.utils.stringify(webr["service-worker-url"]) + end + + -- The WebAssembly user's home directory and initial working directory. Default: '/home/web_user' + -- Documentation: + -- https://docs.r-wasm.org/webr/latest/api/js/interfaces/WebR.WebROptions.html#homedir + if isVariablePopulated(webr['home-dir']) then + homeDir = pandoc.utils.stringify(webr["home-dir"]) + end + + -- Display a startup message indicating the WebR state at the top of the document. + if isVariablePopulated(webr['show-startup-message']) then + showStartUpMessage = pandoc.utils.stringify(webr["show-startup-message"]) + end + + -- Display a startup message indicating the WebR state at the top of the document. + if isVariablePopulated(webr['show-header-message']) then + showHeaderMessage = pandoc.utils.stringify(webr["show-header-message"]) + if showHeaderMessage == "true" then + showStartUpMessage = "true" + end + end + + -- Attempt to install different packages. + if isVariablePopulated(webr["repos"]) then + -- Create a custom list + local repoURLList = {} + + -- Iterate through each list item and enclose it in quotes + for _, repoURL in pairs(webr["repos"]) do + table.insert(repoURLList, "'" .. pandoc.utils.stringify(repoURL) .. "'") + end + + -- Add default repo URL + table.insert(repoURLList, defaultRepoURL) + + -- Combine URLs + rPackageRepoURLS = table.concat(repoURLList, ", ") + end + + -- Attempt to install different packages. + if isVariablePopulated(webr["packages"]) then + -- Create a custom list + local package_list = {} + + -- Iterate through each list item and enclose it in quotes + for _, package_name in pairs(webr["packages"]) do + table.insert(package_list, "'" .. pandoc.utils.stringify(package_name) .. "'") + end + + installRPackagesList = table.concat(package_list, ", ") + + if isVariablePopulated(webr['autoload-packages']) then + autoloadRPackages = pandoc.utils.stringify(webr["autoload-packages"]) + end + + end + + return meta +end + + +-- Obtain a template file +local function readTemplateFile(template) + -- Establish a hardcoded path to where the .html partial resides + -- Note, this should be at the same level as the lua filter. + -- This is crazy fragile since Lua lacks a directory representation (!?!?) + -- https://quarto.org/docs/extensions/lua-api.html#includes + local path = quarto.utils.resolve_path(template) + + -- Let's hopefully read the template file... + + -- Open the template file + local file = io.open(path, "r") + + -- Check if null pointer before grabbing content + if not file then + error("\nWe were unable to read the template file `" .. template .. "` from the extension directory.\n\n" .. + "Double check that the extension is fully available by comparing the \n" .. + "`_extensions/coatless/webr` directory with the main repository:\n" .. + "https://github.com/coatless/quarto-webr/tree/main/_extensions/webr\n\n" .. + "You may need to modify `.gitignore` to allow the extension files using:\n" .. + "!_extensions/*/*/*\n") + return nil + end + + -- *a or *all reads the whole file + local content = file:read "*a" + + -- Close the file + file:close() + + -- Return contents + return content +end + +---- + +-- Define a function to replace keywords given by {{ WORD }} +-- Is there a better lua-approach? +local function substitute_in_file(contents, substitutions) + + -- Substitute values in the contents of the file + contents = contents:gsub("{{%s*(.-)%s*}}", substitutions) + + -- Return the contents of the file with substitutions + return contents +end + +-- Define a function that escape control sequence +local function escapeControlSequences(str) + -- Perform a global replacement on the control sequence character + return str:gsub("[\\%c]", function(c) + if c == "\\" then + -- Escape backslash + return "\\\\" + end + end) +end + +---- + +-- Pass document-level data into the header to initialize the document. +local function initializationWebRDocumentSettings() + + -- Setup different WebR specific initialization variables + local substitutions = { + ["SHOWSTARTUPMESSAGE"] = showStartUpMessage, -- tostring() + ["SHOWHEADERMESSAGE"] = showHeaderMessage, + ["BASEURL"] = baseUrl, + ["CHANNELTYPE"] = channelType, + ["SERVICEWORKERURL"] = serviceWorkerUrl, + ["HOMEDIR"] = homeDir, + ["INSTALLRPACKAGESLIST"] = installRPackagesList, + ["AUTOLOADRPACKAGES"] = autoloadRPackages, + ["RPACKAGEREPOURLS"] = rPackageRepoURLS, + ["QWEBRCELLDETAILS"] = quarto.json.encode(qwebrCapturedCodeBlocks) + -- ["VERSION"] = baseVersionWebR + } + + -- Make sure we perform a copy + local initializationTemplate = readTemplateFile("qwebr-document-settings.js") + + -- Make the necessary substitutions + local initializedWebRConfiguration = substitute_in_file(initializationTemplate, substitutions) + + return initializedWebRConfiguration +end + +local function generateHTMLElement(tag) + -- Store a map containing opening and closing tabs + local tagMappings = { + js = { opening = "" }, + css = { opening = "" } + } + + -- Find the tag + local tagMapping = tagMappings[tag] + + -- If present, extract tag and return + if tagMapping then + return tagMapping.opening, tagMapping.closing + else + quarto.log.error("Invalid tag specified") + end +end + +-- Custom functions to include values into Quarto +-- https://quarto.org/docs/extensions/lua-api.html#includes + +local function includeTextInHTMLTag(location, text, tag) + + -- Obtain the HTML element opening and closing tag + local openingTag, closingTag = generateHTMLElement(tag) + + -- Insert the file into the document using the correct opening and closing tags + quarto.doc.include_text(location, openingTag .. text .. closingTag) + +end + +local function includeFileInHTMLTag(location, file, tag) + + -- Obtain the HTML element opening and closing tag + local openingTag, closingTag = generateHTMLElement(tag) + + -- Retrieve the file contents + local fileContents = readTemplateFile(file) + + -- Insert the file into the document using the correct opening and closing tags + quarto.doc.include_text(location, openingTag .. fileContents .. closingTag) + +end + +-- Setup WebR's pre-requisites once per document. +local function ensureWebRSetup() + + -- If we've included the initialization, then bail. + if hasDoneWebRSetup then + return + end + + -- Otherwise, let's include the initialization script _once_ + hasDoneWebRSetup = true + + -- Embed Support Files to Avoid Resource Registration Issues + -- Note: We're not able to use embed-resources due to the web assembly binary and the potential for additional service worker files. + quarto.doc.include_text("in-header", [[ + + + ]]) + + -- Insert the extension styling for defined elements + includeFileInHTMLTag("in-header", "qwebr-styling.css", "css") + + -- Insert the customized startup procedure + includeTextInHTMLTag("in-header", initializationWebRDocumentSettings(), "js") + + -- Insert JS routine to add document status header + includeFileInHTMLTag("in-header", "qwebr-document-status.js", "js") + + -- Insert the extension element creation scripts + includeFileInHTMLTag("in-header", "qwebr-cell-elements.js", "js") + + -- Insert JS routine to bring webR online + includeFileInHTMLTag("in-header", "qwebr-document-engine-initialization.js", "js") + + -- Insert the cell data at the end of the document + includeFileInHTMLTag("after-body", "qwebr-cell-initialization.js", "js") + + -- Insert the extension computational engine that calls webR + includeFileInHTMLTag("in-header", "qwebr-compute-engine.js", "js") + + -- Insert the monaco editor initialization + quarto.doc.include_file("before-body", "qwebr-monaco-editor-init.html") + + includeFileInHTMLTag("before-body", "qwebr-theme-switch.js", "js") + + -- Insert the extension styling for defined elements + includeFileInHTMLTag("before-body", "qwebr-monaco-editor-element.js", "js") + + -- If the ChannelType requires service workers, register and copy them into the + -- output directory. + if hasServiceWorkerFiles then + -- Copy the two web workers into the directory + -- https://quarto.org/docs/extensions/lua-api.html#dependencies + quarto.doc.add_html_dependency({ + name = "webr-worker", + version = baseVersionWebR, + seviceworkers = {"webr-worker.js"}, -- Kept to avoid error text. + serviceworkers = {"webr-worker.js"} + }) + + quarto.doc.add_html_dependency({ + name = "webr-serviceworker", + version = baseVersionWebR, + seviceworkers = {"webr-serviceworker.js"}, -- Kept to avoid error text. + serviceworkers = {"webr-serviceworker.js"} + }) + end + +end + +local function qwebrJSCellInsertionCode(counter) + local insertionLocation = '
\n' + local noscriptWarning = '' + return insertionLocation .. noscriptWarning +end + +-- Remove lines with only whitespace until the first non-whitespace character is detected. +local function removeEmptyLinesUntilContent(codeText) + -- Iterate through each line in the codeText table + for _, value in ipairs(codeText) do + -- Detect leading whitespace (newline, return character, or empty space) + local detectedWhitespace = string.match(value, "^%s*$") + + -- Check if the detectedWhitespace is either an empty string or nil + -- This indicates whitespace was detected + if isVariableEmpty(detectedWhitespace) then + -- Delete empty space + table.remove(codeText, 1) + else + -- Stop the loop as we've now have content + break + end + end + + -- Return the modified table + return codeText +end + +-- Extract Quarto code cell options from the block's text +local function extractCodeBlockOptions(block) + + -- Access the text aspect of the code block + local code = block.text + + -- Define two local tables: + -- the block's attributes + -- the block's code lines + local cellOptions = {} + local newCodeLines = {} + + -- Iterate over each line in the code block + for line in code:gmatch("([^\r\n]*)[\r\n]?") do + -- Check if the line starts with "#|" and extract the key-value pairing + -- e.g. #| key: value goes to cellOptions[key] -> value + local key, value = line:match("^#|%s*(.-):%s*(.-)%s*$") + + -- If a special comment is found, then add the key-value pairing to the cellOptions table + if key and value then + cellOptions[key] = value + else + -- Otherwise, it's not a special comment, keep the code line + table.insert(newCodeLines, line) + end + end + + -- Merge cell options with default options + cellOptions = mergeCellOptions(cellOptions) + + -- Set the codeblock text to exclude the special comments. + cellCode = table.concat(newCodeLines, '\n') + + -- Return the code alongside options + return cellCode, cellOptions +end + +-- Replace the code cell with a webR editor +local function enableWebRCodeCell(el) + + -- Let's see what's going on here: + -- quarto.log.output(el) + + -- Should display the following elements: + -- https://pandoc.org/lua-filters.html#type-codeblock + + -- Verify the element has attributes and the document type is HTML + -- not sure if this will work with an epub (may need html:js) + if not (el.attr and (quarto.doc.is_format("html") or quarto.doc.is_format("markdown"))) then + return el + end + + -- Check to see if any form of the {webr} tag is present + + -- Look for the original compute cell type `{webr}` + -- If the compute engine is: + -- - jupyter: this appears as `{webr}` + -- - knitr: this appears as `webr` + -- since the later dislikes custom engines + local originalEngine = el.attr.classes:includes("{webr}") or el.attr.classes:includes("webr") + + -- Check for the new engine syntax that allows for the cell to be + -- evaluated in VS Code or RStudio editor views, c.f. + -- https://github.com/quarto-dev/quarto-cli/discussions/4761#discussioncomment-5336636 + local newEngine = el.attr.classes:includes("{webr-r}") + + if not (originalEngine or newEngine) then + return el + end + + -- We detected a webR cell + missingWebRCell = false + + -- Modify the counter variable each time this is run to create + -- unique code cells + qwebrCounter = qwebrCounter + 1 + + -- Local code cell storage + local cellOptions = {} + local cellCode = '' + + -- Convert webr-specific option commands into attributes + cellCode, cellOptions = extractCodeBlockOptions(el) + + -- Ensure we have a label representation + if cellOptions["label"] == '' then + cellOptions["label"] = "unnamed-chunk-" .. qwebrCounter + end + -- Set autorun to false if interactive + if cellOptions["autorun"] == "" then + if cellOptions["context"] == "interactive" then + cellOptions["autorun"] = "false" + else + cellOptions["autorun"] = "true" + end + end + + -- Remove space left between options and code contents + cellCode = removeEmptyLinesUntilContent(cellCode) + + -- Create a new table for the CodeBlock + local codeBlockData = { + id = qwebrCounter, + code = cellCode, + options = cellOptions + } + + -- Store the CodeDiv in the global table + table.insert(qwebrCapturedCodeBlocks, codeBlockData) + + -- Return an insertion point inside the document + return pandoc.RawInline('html', qwebrJSCellInsertionCode(qwebrCounter)) +end + +local function stitchDocument(doc) + + -- Do not attach webR as the page lacks any active webR cells + if missingWebRCell then + return doc + end + + -- Make sure we've initialized the code block + ensureWebRSetup() + + return doc +end + +return { + { + Meta = setWebRInitializationOptions + }, + { + CodeBlock = enableWebRCodeCell + }, + { + Pandoc = stitchDocument + } +} + diff --git a/book/_extensions/insightsengineering/pattern-strip/_extension.yml b/book/_extensions/insightsengineering/pattern-strip/_extension.yml new file mode 100644 index 0000000000..31edac97ea --- /dev/null +++ b/book/_extensions/insightsengineering/pattern-strip/_extension.yml @@ -0,0 +1,8 @@ +title: Pattern-strip +author: Pawel Rucki +version: 1.0.0 +quarto-required: ">=1.4.0" +contributes: + filters: + - pattern-strip.lua + diff --git a/book/_extensions/insightsengineering/pattern-strip/pattern-strip.lua b/book/_extensions/insightsengineering/pattern-strip/pattern-strip.lua new file mode 100644 index 0000000000..90f1e0cb44 --- /dev/null +++ b/book/_extensions/insightsengineering/pattern-strip/pattern-strip.lua @@ -0,0 +1,32 @@ +local patterns = {} + +return { + { + Meta = function(meta) + if meta['pattern-strip-patterns'] ~= nil then + for _, pattern in ipairs(meta['pattern-strip-patterns']) do + table.insert(patterns, pandoc.utils.stringify(pattern)) + end + end + end + }, + { + CodeBlock = function (el) + quarto.log.debug(el) + if not el.classes:includes("cell-code") then + return el + end + + local lines = pandoc.List() + local code = el.text .. "\n" + for line in code:gmatch("([^\n]*)\n") do + for _, pattern in ipairs(patterns) do + line = line:gsub(pattern, "") + end + lines:insert(line) + end + el.text = table.concat(lines, "\n") + return el + end + } +} \ No newline at end of file diff --git a/book/_extensions/quarto-ext/fontawesome/_extension.yml b/book/_extensions/quarto-ext/fontawesome/_extension.yml new file mode 100644 index 0000000000..c0787a8c1d --- /dev/null +++ b/book/_extensions/quarto-ext/fontawesome/_extension.yml @@ -0,0 +1,7 @@ +title: Font Awesome support +author: Carlos Scheidegger +version: 1.1.0 +quarto-required: ">=1.2.269" +contributes: + shortcodes: + - fontawesome.lua diff --git a/book/_extensions/quarto-ext/fontawesome/assets/css/all.css b/book/_extensions/quarto-ext/fontawesome/assets/css/all.css new file mode 100644 index 0000000000..3e24980565 --- /dev/null +++ b/book/_extensions/quarto-ext/fontawesome/assets/css/all.css @@ -0,0 +1,7971 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fa-classic, +.fa-sharp, +.fas, +.fa-solid, +.far, +.fa-regular, +.fab, +.fa-brands, +.fal, +.fa-light, +.fat, +.fa-thin, +.fad, +.fa-duotone { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-w::before { + content: "\57"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-film::before { + content: "\f008"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-om::before { + content: "\f679"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-i::before { + content: "\49"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-v::before { + content: "\56"; } + +.fa-bangladeshi-taka-sign::before { + content: "\e2e6"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-school::before { + content: "\f549"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-q::before { + content: "\51"; } + +.fa-g::before { + content: "\47"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-user::before { + content: "\f007"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-key::before { + content: "\f084"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-c::before { + content: "\43"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-star::before { + content: "\f005"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-box::before { + content: "\f466"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-debian:before { + content: "\e60b"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-square-threads:before { + content: "\e619"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-x-twitter:before { + content: "\e61b"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-stubber:before { + content: "\e5c7"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-square-x-twitter:before { + content: "\e61a"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-display: block; + font-weight: 400; + src: url("../webfonts/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + font-weight: 900; + src: url("../webfonts/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + font-weight: 400; + src: url("../webfonts/../webfonts/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-display: block; + src: url("../webfonts/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + diff --git a/book/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css b/book/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css new file mode 100644 index 0000000000..45545ecff3 --- /dev/null +++ b/book/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css @@ -0,0 +1,30 @@ +.fa-tiny { + font-size: 0.5em; +} +.fa-scriptsize { + font-size: 0.7em; +} +.fa-footnotesize { + font-size: 0.8em; +} +.fa-small { + font-size: 0.9em; +} +.fa-normalsize { + font-size: 1em; +} +.fa-large { + font-size: 1.2em; +} +.fa-Large { + font-size: 1.5em; +} +.fa-LARGE { + font-size: 1.75em; +} +.fa-huge { + font-size: 2em; +} +.fa-Huge { + font-size: 2.5em; +} diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.ttf new file mode 100644 index 0000000000..34a1436b2c Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.woff2 new file mode 100644 index 0000000000..d1a319f3ee Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.ttf new file mode 100644 index 0000000000..d0aeac9566 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.woff2 new file mode 100644 index 0000000000..f3918d2b23 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.ttf new file mode 100644 index 0000000000..deab676ff9 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.woff2 new file mode 100644 index 0000000000..53c1987fe4 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000000..430a02edc6 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000000..4d904aab4f Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000..23e3febe0d Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000000..80e3b1247c Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000..da9082420e Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000000..360ba11557 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000000..e9545ed579 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf differ diff --git a/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 0000000000..db5b0b9973 Binary files /dev/null and b/book/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 differ diff --git a/book/_extensions/quarto-ext/fontawesome/fontawesome.lua b/book/_extensions/quarto-ext/fontawesome/fontawesome.lua new file mode 100644 index 0000000000..ff64dcaa37 --- /dev/null +++ b/book/_extensions/quarto-ext/fontawesome/fontawesome.lua @@ -0,0 +1,84 @@ +local function ensureLatexDeps() + quarto.doc.use_latex_package("fontawesome5") +end + +local function ensureHtmlDeps() + quarto.doc.add_html_dependency({ + name = 'fontawesome6', + version = '0.1.0', + stylesheets = {'assets/css/all.css', 'assets/css/latex-fontsize.css'} + }) +end + +local function isEmpty(s) + return s == nil or s == '' +end + +local function isValidSize(size) + local validSizes = { + "tiny", + "scriptsize", + "footnotesize", + "small", + "normalsize", + "large", + "Large", + "LARGE", + "huge", + "Huge" + } + for _, v in ipairs(validSizes) do + if v == size then + return size + end + end + return "" +end + +return { + ["fa"] = function(args, kwargs) + + local group = "solid" + local icon = pandoc.utils.stringify(args[1]) + if #args > 1 then + group = icon + icon = pandoc.utils.stringify(args[2]) + end + + local title = pandoc.utils.stringify(kwargs["title"]) + if not isEmpty(title) then + title = " title=\"" .. title .. "\"" + end + + local label = pandoc.utils.stringify(kwargs["label"]) + if isEmpty(label) then + label = " aria-label=\"" .. icon .. "\"" + else + label = " aria-label=\"" .. label .. "\"" + end + + local size = pandoc.utils.stringify(kwargs["size"]) + + -- detect html (excluding epub which won't handle fa) + if quarto.doc.is_format("html:js") then + ensureHtmlDeps() + if not isEmpty(size) then + size = " fa-" .. size + end + return pandoc.RawInline( + 'html', + "" + ) + -- detect pdf / beamer / latex / etc + elseif quarto.doc.is_format("pdf") then + ensureLatexDeps() + if isEmpty(isValidSize(size)) then + return pandoc.RawInline('tex', "\\faIcon{" .. icon .. "}") + else + return pandoc.RawInline('tex', "{\\" .. size .. "\\faIcon{" .. icon .. "}}") + end + else + return pandoc.Null() + end + end +} diff --git a/book/_extensions/quarto-ext/shinylive/README.md b/book/_extensions/quarto-ext/shinylive/README.md new file mode 100644 index 0000000000..55bfed2f6f --- /dev/null +++ b/book/_extensions/quarto-ext/shinylive/README.md @@ -0,0 +1,126 @@ +# Shinylive package methods + +## Methods + +### R + +Interaction: + +``` +Rscript -e 'shinylive:::quarto_ext()' [methods] [args] +``` + +### Python + +Interaction: + +``` +shinylive [methods] [args] +``` + +## CLI Methods + +* `extension info` + * Package, version, asset version, and script paths information +* `extension base-htmldeps` + * Quarto html dependencies for the base shinylive integration +* `extension language-resources` + * Language specific resource files for the quarto html dependency named `shinylive` +* `extension app-resources` + * App specific resource files for the quarto html dependency named `shinylive` + +### CLI Interface +* `extension info` + * Prints information about the extension including: + * `version`: The version of the R package + * `assets_version`: The version of the web assets + * `scripts`: A list of paths scripts that are used by the extension, + mainly `codeblock-to-json` + * Example + ``` + { + "version": "0.1.0", + "assets_version": "0.2.0", + "scripts": { + "codeblock-to-json": "//shinylive-0.2.0/scripts/codeblock-to-json.js" + } + } + ``` +* `extension base-htmldeps` + * Prints the language agnostic quarto html dependencies as a JSON array. + * The first html dependency is the `shinylive` service workers. + * The second html dependency is the `shinylive` base dependencies. This + dependency will contain the core `shinylive` asset scripts (JS files + automatically sourced), stylesheets (CSS files that are automatically + included), and resources (additional files that the JS and CSS files can + source). + * Example + ``` + [ + { + "name": "shinylive-serviceworker", + "version": "0.2.0", + "meta": { "shinylive:serviceworker_dir": "." }, + "serviceworkers": [ + { + "source": "//shinylive-0.2.0/shinylive-sw.js", + "destination": "/shinylive-sw.js" + } + ] + }, + { + "name": "shinylive", + "version": "0.2.0", + "scripts": [{ + "name": "shinylive/load-shinylive-sw.js", + "path": "//shinylive-0.2.0/shinylive/load-shinylive-sw.js", + "attribs": { "type": "module" } + }], + "stylesheets": [{ + "name": "shinylive/shinylive.css", + "path": "//shinylive-0.2.0/shinylive/shinylive.css" + }], + "resources": [ + { + "name": "shinylive/shinylive.js", + "path": "//shinylive-0.2.0/shinylive/shinylive.js" + }, + ... # [ truncated ] + ] + } + ] + ``` +* `extension language-resources` + * Prints the language-specific resource files as JSON that should be added to the quarto html dependency. + * For r-shinylive, this includes the webr resource files + * For py-shinylive, this includes the pyodide and pyright resource files. + * Example + ``` + [ + { + "name": "shinylive/webr/esbuild.d.ts", + "path": "//shinylive-0.2.0/shinylive/webr/esbuild.d.ts" + }, + { + "name": "shinylive/webr/libRblas.so", + "path": "//shinylive-0.2.0/shinylive/webr/libRblas.so" + }, + ... # [ truncated ] + ] +* `extension app-resources` + * Prints app-specific resource files as JSON that should be added to the `"shinylive"` quarto html dependency. + * Currently, r-shinylive does not return any resource files. + * Example + ``` + [ + { + "name": "shinylive/pyodide/anyio-3.7.0-py3-none-any.whl", + "path": "//shinylive-0.2.0/shinylive/pyodide/anyio-3.7.0-py3-none-any.whl" + }, + { + "name": "shinylive/pyodide/appdirs-1.4.4-py2.py3-none-any.whl", + "path": "//shinylive-0.2.0/shinylive/pyodide/appdirs-1.4.4-py2.py3-none-any.whl" + }, + ... # [ truncated ] + ] + ``` diff --git a/book/_extensions/quarto-ext/shinylive/_extension.yml b/book/_extensions/quarto-ext/shinylive/_extension.yml new file mode 100644 index 0000000000..6634416d3e --- /dev/null +++ b/book/_extensions/quarto-ext/shinylive/_extension.yml @@ -0,0 +1,8 @@ +name: shinylive +title: Embedded Shinylive applications +author: Winston Chang +version: 0.2.0 +quarto-required: ">= 1.2.198" +contributes: + filters: + - shinylive.lua diff --git a/book/_extensions/quarto-ext/shinylive/resources/css/shinylive-quarto.css b/book/_extensions/quarto-ext/shinylive/resources/css/shinylive-quarto.css new file mode 100644 index 0000000000..3b7cc3aaa2 --- /dev/null +++ b/book/_extensions/quarto-ext/shinylive/resources/css/shinylive-quarto.css @@ -0,0 +1,34 @@ +div.output-content, +div.shinylive-wrapper { + background-color: rgba(250, 250, 250, 0.65); + border: 1px solid rgba(233, 236, 239, 0.65); + border-radius: 0.5rem; + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.04), 0px 3px 7px rgba(0, 0, 0, 0.04), + 0px 12px 30px rgba(0, 0, 0, 0.07); + margin-top: 32px; + margin-bottom: 32px; +} + +div.shinylive-wrapper { + margin: 1em 0; + border-radius: 8px; +} + +.shinylive-container { + background-color: #eeeff2; + min-height: auto; +} + +.shinylive-container > div { + box-shadow: none; +} + +.editor-container .cm-editor .cm-scroller { + font-size: 13px; + line-height: 1.5; +} + +iframe.app-frame { + /* Override the default margin from Bootstrap */ + margin-bottom: 0; +} diff --git a/book/_extensions/quarto-ext/shinylive/shinylive.lua b/book/_extensions/quarto-ext/shinylive/shinylive.lua new file mode 100644 index 0000000000..6890a7a31e --- /dev/null +++ b/book/_extensions/quarto-ext/shinylive/shinylive.lua @@ -0,0 +1,464 @@ +-- Notes: +-- * 2023/10/04 - Barret: +-- Always use `callShinyLive()` to call a shinylive extension. +-- `callPythonShinyLive()` and `callRShinyLive()` should not be used directly. +-- Instead, always use `callShinyLive()`. +-- * 2023/10/04 - Barret: +-- I could not get `error(msg)` to quit the current function execution and +-- bubble up the stack and stop. Instead, I am using `assert(false, msg)` to +-- achieve the desired behavior. Multi-line error messages should start with a +-- `\n` to keep the message in the same readable area. + + +-- `table` to organize flags to have code only run once. +local hasDoneSetup = { base = false, r = false, python = false, python_version = false } +-- `table` to store `{ version, assets_version }` for each language's extension. +-- If both `r` and `python` are used in the same document, then the +-- `assets_version` for each language must be the same. +local versions = { r = nil, python = nil } +-- Global variable for the codeblock-to-json.js script file location +local codeblockScript = nil +-- Global hash table to store app specific dependencies to avoid calling +-- `quarto.doc.attach_to_dependency()` multiple times for the same dependency. +local appSpecificDeps = {} + +-- Display error message and throw error w/ short message +-- @param msg: string Error message to be displayed +-- @param short_msg: string Error message to be thrown +function throw_quarto_error(err_msg, ...) + n = select("#", ...) + if n > 0 then + -- Display any meta information about the error + -- Add blank lines after msg for line separation for better readability + quarto.log.error(...) + else + quarto.log.error(err_msg .. "\n\n") + end + -- Add blank lines after short_msg for line separation for better readability + -- Use assert(false, msg) to quit the current function execution and + -- bubble up the stack and stop. Barret: I could not get this to work with `error(msg)`. + assert(false, err_msg .. "\n") +end + +-- Python specific method to call py-shinylive +-- @param args: list of string arguments to pass to py-shinylive +-- @param input: string to pipe into to py-shinylive +function callPythonShinylive(args, input) + -- Try calling `pandoc.pipe('shinylive', ...)` and if it fails, print a message + -- about installing shinylive python package. + local res + local status, err = pcall( + function() + res = pandoc.pipe("shinylive", args, input) + end + ) + + if not status then + throw_quarto_error( + "Error running 'shinylive' command. Perhaps you need to install / update the 'shinylive' Python package?", + "Error running 'shinylive' command. Perhaps you need to install / update the 'shinylive' Python package?\n", + "Error:\n", + err + ) + end + + return res +end + +-- R specific method to call {r-shinylive} +-- @param args: list of string arguments to pass to r-shinylive +-- @param input: string to pipe into to r-shinylive +function callRShinylive(args, input) + args = { "-e", + "shinylive:::quarto_ext()", + table.unpack(args) } + + -- Try calling `pandoc.pipe('Rscript', ...)` and if it fails, print a message + -- about installing shinylive R package. + local res + local status, err = pcall( + function() + res = pandoc.pipe("Rscript", args, input) + end + ) + + if not status then + throw_quarto_error( + "Error running 'Rscript' command. Perhaps you need to install / update the 'shinylive' R package?", + "Error running 'Rscript' command. Perhaps you need to install / update the 'shinylive' R package?\n", + "Error:\n", + err + ) + end + + return res +end + +-- Returns decoded object +-- @param language: "python" or "r" +-- @param args, input: see `callPythonShinylive` and `callRShinylive` +function callShinylive(language, args, input, parseJson) + if input == nil then + input = "" + end + if parseJson == nil then + parseJson = true + end + + local res + -- print("Calling " .. language .. " shinylive with args: ", args) + if language == "python" then + res = callPythonShinylive(args, input) + elseif language == "r" then + res = callRShinylive(args, input) + else + throw_quarto_error("internal - Unknown language: " .. language) + end + + if not parseJson then + return res + end + + -- Remove any unwanted output before the first curly brace or square bracket. + -- print("res: " .. string.sub(res, 1, math.min(string.len(res), 100)) .. "...") + local curly_start = string.find(res, "{", 0, true) + local brace_start = string.find(res, "[", 0, true) + local min_start + if curly_start == nil then + min_start = brace_start + elseif brace_start == nil then + min_start = curly_start + else + min_start = math.min(curly_start, brace_start) + end + if min_start == nil then + local res_str = res + if string.len(res) > 100 then + res_str = string.sub(res, 1, 100) .. "... [truncated]" + end + throw_quarto_error( + "Could not find start curly brace or start brace in " .. + language .. " shinylive response. Is JSON being returned from the " .. language .. " `shinylive` package?", + "Could not find start curly brace or start brace in " .. language .. " shinylive response.\n", + "JSON string being parsed:\n", + res_str + ) + end + if min_start > 1 then + res = string.sub(res, min_start) + end + + + -- Decode JSON object + local result + local status, err = pcall( + function() + result = quarto.json.decode(res) + end + ) + if not status then + throw_quarto_error( + "Error decoding JSON response from `shinylive` " .. language .. " package.", + "Error decoding JSON response from `shinylive` " .. language .. " package.\n", + "JSON string being parsed:\n", + res, + "Error:\n", + err + ) + end + return result +end + +function parseVersion(versionTxt) + local versionParts = {} + for part in string.gmatch(versionTxt, "%d+") do + table.insert(versionParts, tonumber(part)) + end + local ret = { + major = nil, + minor = nil, + patch = nil, + extra = nil, + length = #versionParts, + str = versionTxt + } + + if ret.length >= 1 then + ret.major = versionParts[1] + if ret.length >= 2 then + ret.minor = versionParts[2] + if ret.length >= 3 then + ret.patch = versionParts[3] + if ret.length >= 4 then + ret.extra = versionParts[4] + end + end + end + end + + return ret +end + +-- If verA > verB, return 1 +-- If verA == verB, return 0 +-- If verA < verB, return -1 +function compareVersions(verA, verB) + if verA.major == nil or verB.major == nil then + throw_quarto_error("Trying to compare an invalid version: " .. verA.str .. " or " .. verB.str) + end + + for index, key in ipairs({ "major", "minor", "patch", "extra" }) do + local partDiff = compareVersionPart(verA[key], verB[key]) + if partDiff ~= 0 then + return partDiff + end + end + + -- Equal! + return 0 +end + +function compareVersionPart(aPart, bPart) + if aPart == nil and bPart == nil then + return 0 + end + if aPart == nil then + return -1 + end + if bPart == nil then + return 1 + end + if aPart > bPart then + return 1 + elseif aPart < bPart then + return -1 + end + + -- Equal! + return 0 +end + +function ensurePyshinyliveVersion(language) + -- Quit early if not python + if language ~= "python" then + return + end + -- Quit early if already completed check + if hasDoneSetup.python_version then + return + end + hasDoneSetup.python_version = true + + -- Verify that min python shinylive version is met + pyShinyliveVersion = callShinylive(language, { "--version" }, "", false) + -- Remove trailing whitespace + pyShinyliveVersion = pyShinyliveVersion:gsub("%s+$", "") + -- Parse version into table + parsedVersion = parseVersion(pyShinyliveVersion) + + -- Verify that the version is at least 0.1.0 + if + (parsedVersion.length < 3) or + -- Major and minor values are 0. Ex: 0.0.18 + (parsedVersion.major == 0 and parsedVersion.minor == 0) + then + assert(false, + "\nThe shinylive Python package must be at least version v0.1.0 to be used in a Quarto document." .. + "\n\nInstalled Python Shinylive package version: " .. pyShinyliveVersion .. + "\n\nPlease upgrade the Python Shinylive package by running:" .. + "\n\tpip install --upgrade shinylive" .. + "\n\n(If you are using a virtual environment, please activate it before running the command above.)" + ) + end +end + +-- Do one-time setup for language agnostic html dependencies. +-- This should only be called once per document +-- @param language: "python" or "r" +function ensureBaseSetup(language) + -- Quit early if already done + if hasDoneSetup.base then + return + end + hasDoneSetup.base = true + + -- Find the path to codeblock-to-json.ts and save it for later use. + local infoObj = callShinylive(language, { "extension", "info" }) + -- Store the path to codeblock-to-json.ts for later use + codeblockScript = infoObj.scripts['codeblock-to-json'] + -- Store the version info for later use + versions[language] = { version = infoObj.version, assets_version = infoObj.assets_version } + + -- Add language-agnostic dependencies + local baseDeps = getShinyliveBaseDeps(language) + for idx, dep in ipairs(baseDeps) do + quarto.doc.add_html_dependency(dep) + end + + -- Add ext css dependency + quarto.doc.add_html_dependency( + { + name = "shinylive-quarto-css", + stylesheets = { "resources/css/shinylive-quarto.css" } + } + ) +end + +-- Do one-time setup for language specific html dependencies. +-- This should only be called once per document +-- @param language: "python" or "r" +function ensureLanguageSetup(language) + -- Min version check must be done first + ensurePyshinyliveVersion(language) + + -- Make sure the base setup is done before the langage setup + ensureBaseSetup(language) + + if hasDoneSetup[language] then + return + end + hasDoneSetup[language] = true + + -- Only get the asset version value if it hasn't been retrieved yet. + if versions[language] == nil then + local infoObj = callShinylive(language, { "extension", "info" }) + versions[language] = { version = infoObj.version, assets_version = infoObj.assets_version } + end + -- Verify that the r-shinylive and py-shinylive supported assets versions match + if + (versions.r and versions.python) and + ---@diagnostic disable-next-line: undefined-field + versions.r.assets_version ~= versions.python.assets_version + then + local parsedRAssetsVersion = parseVersion(versions.r.assets_version) + local parsedPythonAssetsVersion = parseVersion(versions.python.assets_version) + + local verDiff = compareVersions(parsedRAssetsVersion, parsedPythonAssetsVersion) + local verDiffStr = "" + if verDiff == 1 then + -- R shinylive supports higher version of assets. Upgrade python shinylive + verDiffStr = + "The currently installed python shinylive package supports a lower assets version, " .. + "therefore we recommend updating your python shinylive package to the latest version." + elseif verDiff == -1 then + -- Python shinylive supports higher version of assets. Upgrade R shinylive + verDiffStr = + "The currently installed R shinylive package supports a lower assets version, " .. + "therefore we recommend updating your R shinylive package to the latest version." + end + + throw_quarto_error( + "The shinylive R and Python packages must support the same Shinylive Assets version to be used in the same Quarto document.", + "The shinylive R and Python packages must support the same Shinylive Assets version to be used in the same Quarto document.\n", + "\n", + "Python shinylive package version: ", + ---@diagnostic disable-next-line: undefined-field + versions.python.version .. " ; Supported assets version: " .. versions.python.assets_version .. "\n", + "R shinylive package version: " .. + ---@diagnostic disable-next-line: undefined-field + versions.r.version .. " ; Supported assets version: " .. versions.r.assets_version .. "\n", + "\n", + verDiffStr .. "\n", + "\n", + "To update your R Shinylive package, run:\n", + "\tR -e \"install.packages('shinylive')\"\n", + "\n", + "To update your Python Shinylive package, run:\n", + "\tpip install --upgrade shinylive\n", + "(If you are using a virtual environment, please activate it before running the command above.)\n", + "\n" + ) + end + + -- Add language-specific dependencies + local langResources = callShinylive(language, { "extension", "language-resources" }) + for idx, resourceDep in ipairs(langResources) do + -- No need to check for uniqueness. + -- Each resource is only be added once and should already be unique. + quarto.doc.attach_to_dependency("shinylive", resourceDep) + end +end + +function getShinyliveBaseDeps(language) + -- Relative path from the current page to the root of the site. This is needed + -- to find out where shinylive-sw.js is, relative to the current page. + if quarto.project.offset == nil then + throw_quarto_error("The `shinylive` extension must be used in a Quarto project directory (with a _quarto.yml file).") + end + local deps = callShinylive( + language, + { "extension", "base-htmldeps", "--sw-dir", quarto.project.offset }, + "" + ) + return deps +end + +-- Legacy quarto cli location +quarto_cli_path = "quarto" +if quarto.config ~= nil and quarto.config.cli_path ~= nil then + -- * 2024/05/03 - Christophe: + -- `quarto run` needs to be called using the same quarto CLI that called the extension. + -- This is done by using `quarto.config.cli_path()` from Quarto 1.5 Lua API. + -- https://github.com/quarto-dev/quarto-cli/pull/9576 + quarto_cli_path = quarto.config.cli_path() +end + +return { + { + CodeBlock = function(el) + if not el.attr then + -- Not a shinylive codeblock, return + return + end + + local language + if el.attr.classes:includes("{shinylive-r}") then + language = "r" + elseif el.attr.classes:includes("{shinylive-python}") then + language = "python" + else + -- Not a shinylive codeblock, return + return + end + -- Setup language and language-agnostic dependencies + ensureLanguageSetup(language) + + -- Convert code block to JSON string in the same format as app.json. + local parsedCodeblockJson = pandoc.pipe( + quarto_cli_path, + { "run", codeblockScript, language }, + el.text + ) + + -- This contains "files" and "quartoArgs" keys. + local parsedCodeblock = quarto.json.decode(parsedCodeblockJson) + + -- Find Python package dependencies for the current app. + local appDeps = callShinylive( + language, + { "extension", "app-resources" }, + -- Send as piped input to the shinylive command + quarto.json.encode(parsedCodeblock["files"]) + ) + + -- Add app specific dependencies + for idx, dep in ipairs(appDeps) do + if not appSpecificDeps[dep.name] then + appSpecificDeps[dep.name] = true + quarto.doc.attach_to_dependency("shinylive", dep) + end + end + + if el.attr.classes:includes("{shinylive-python}") then + el.attributes.engine = "python" + el.attr.classes = pandoc.List() + el.attr.classes:insert("shinylive-python") + elseif el.attr.classes:includes("{shinylive-r}") then + el.attributes.engine = "r" + el.attr.classes = pandoc.List() + el.attr.classes:insert("shinylive-r") + end + return el + end + } +} diff --git a/book/_quarto-development.yml b/book/_quarto-development.yml index 8b73c471a1..6de23f8708 100644 --- a/book/_quarto-development.yml +++ b/book/_quarto-development.yml @@ -1,3 +1,4 @@ +--- website: title: TLG Catalog - Dev navbar: @@ -12,3 +13,7 @@ website: - icon: github href: https://github.com/insightsengineering/tlg-catalog aria-label: Repository + +webr: + repos: + - https://pharmaverse.r-universe.dev/ \ No newline at end of file diff --git a/book/_quarto-stable.yml b/book/_quarto-stable.yml index 84d81dbe0b..9071b4db0e 100644 --- a/book/_quarto-stable.yml +++ b/book/_quarto-stable.yml @@ -1,3 +1,4 @@ +--- website: title: TLG Catalog - Stable navbar: @@ -12,3 +13,7 @@ website: - icon: github href: https://github.com/insightsengineering/tlg-catalog aria-label: Repository + +webr: + repos: + - https://insightsengineering.r-universe.dev/ \ No newline at end of file diff --git a/book/_quarto.yml b/book/_quarto.yml index 05bc62fd9e..1826945648 100644 --- a/book/_quarto.yml +++ b/book/_quarto.yml @@ -17,7 +17,7 @@ format: dark: - darkly anchor-sections: true - smooth-scroll: true + #smooth-scroll: true # https://github.com/quarto-ext/shinylive/issues/46 code-link: true code-fold: true code-overflow: scroll @@ -29,7 +29,7 @@ format: caption: none code-block-bg: true code-block-border-left: "#1482FA" - css: assets/css/style.scss + css: assets/css/style.css number-sections: false lang: en-US page-layout: full @@ -38,20 +38,31 @@ execute: freeze: auto cache: true code-line-numbers: true + echo: true -knitr: - opts_chunk: - echo: true - fig.width: 15 +engine: knitr +webr: + channel-type: "post-message" + packages: ["tern", "random.cdisc.data", "dplyr"] + show-startup-message: false + autoload-packages: false + +filters: + - insightsengineering/pattern-strip + - shinylive + - webr +pattern-strip-patterns: + - "#%s?nolint.*" + - "#%s?styler:.*" editor: visual highlight-style: github website: title: TLG Catalog - image: assets/img/logo-nest.png + image: assets/img/logo.png open-graph: true - favicon: assets/img/logo-nest.png + favicon: assets/img/logo.png search: location: navbar type: overlay @@ -60,6 +71,8 @@ website: reader-mode: true site-url: https://insightsengineering.github.io/tlg-catalog repo-url: https://github.com/insightsengineering/tlg-catalog + repo-subdir: book + repo-actions: [edit, issue] repo-branch: main google-analytics: UA-125641273-1 cookie-consent: true @@ -75,7 +88,7 @@ website: - id: sidebar style: docked collapse-level: 1 - logo: assets/img/logo-nest.png + logo: assets/img/logo.png border: true contents: - file: index.qmd @@ -101,3 +114,8 @@ website: language: en loading: lazy mapping: pathname + +profile: + group: + - [stable, development] + default: stable \ No newline at end of file diff --git a/book/_utils/envir_hook.qmd b/book/_utils/envir_hook.qmd new file mode 100644 index 0000000000..bd162f3776 --- /dev/null +++ b/book/_utils/envir_hook.qmd @@ -0,0 +1,58 @@ +```{r knitr_utils, include = FALSE} +#| renv.ignore: TRUE + +knitr::knit_hooks$set(test = function(options, envir, before = FALSE) { + if (isFALSE(options$eval)) { + return(NULL) + } + if (isFALSE(testthat::is_checking() || testthat::is_testing())) { + return(NULL) + } + if (isFALSE(before)) { + if (isFALSE(exists("tenv", envir = envir))) { + envir$tenv <- new.env() + } + for (i in seq_along(options$test)) { + new_name <- names(options$test)[i] + old_name <- options$test[[i]] + + if (isFALSE(exists(old_name, envir = envir))) { + stop(sprintf("'%s' object not found. Please check 'test' template arguments.", old_name)) + } + + expr <- substitute(tenv$id <- var, list(id = new_name, var = as.name(old_name))) + eval(expr, envir = envir) + } + } +}) + +knitr::opts_template$set( + include_if_testing = list( + eval = isTRUE(testthat::is_checking() || testthat::is_testing()), + cache = FALSE + ), + skip_if_testing = list( + eval = isFALSE(testthat::is_checking() || testthat::is_testing()) + ), + skip_test_strict = list( + R.options = list( + warn = 0L, + warnPartialMatchDollar = FALSE, + warnPartialMatchArgs = FALSE, + warnPartialMatchAttr = FALSE + ) + ), + app = list( + webshot = "webshot2", + screenshot.force = TRUE, + screenshot.opts = list(delay = 5), + dev = "png", + fig.width = 15, + cache = FALSE, + message = FALSE, + R.options = list( + teal.log_level = "OFF" + ) + ) +) +``` diff --git a/book/_utils/save_results.qmd b/book/_utils/save_results.qmd new file mode 100644 index 0000000000..3d28337a8d --- /dev/null +++ b/book/_utils/save_results.qmd @@ -0,0 +1,11 @@ +```{r save testenv, include = FALSE, opts.label = "include_if_testing"} +#| renv.ignore: TRUE +if (exists("tenv")) { + filename <- paste0(gsub("\\.rmarkdown$", "", knitr::current_input(dir = TRUE)), ".rds") + filepath <- gsub(normalizePath(Sys.getenv("QUARTO_PROJECT_DIR")), file.path(Sys.getenv("QUARTO_TESTTHAT_DATA_PATH"), Sys.getenv("QUARTO_PROFILE")), filename) + if (!dir.exists(dirname(filepath))) { + dir.create(dirname(filepath), recursive = TRUE) + } + saveRDS(tenv, filepath) +} +``` diff --git a/book/_utils/shinylive.qmd b/book/_utils/shinylive.qmd new file mode 100644 index 0000000000..5eb33529b5 --- /dev/null +++ b/book/_utils/shinylive.qmd @@ -0,0 +1,37 @@ + + +## {{< fa regular terminal sm fw >}} Try this using `shinylive` + +::: {.callout-warning appearance="simple" collapse="true"} +## Experimental use! + +[`shinylive`](https://shiny.posit.co/py/docs/shinylive.html) allow you to modify to run `shiny` application entirely in the web browser. Modify the code below and click re-run the app to see the results. +The performance is slighly worse and some of the features (e.g. downloading) might not work at all. +::: + +```{r shinylive-constructor, echo = FALSE, results = "asis", opts.label = "skip_if_testing"} +repo_url <- ifelse(identical(Sys.getenv("QUARTO_PROFILE"), "stable"), "https://insightsengineering.r-universe.dev", "https://pharmaverse.r-universe.dev") +options(webr_pkg_repos = c("r-universe" = repo_url, getOption("webr_pkg_repos"))) +text <- unlist(c( + ":::{.column-screen-inset-right}", + "```{shinylive-r}", + "#| standalone: true", + "#| viewerHeight: 800", + "#| editorHeight: 200", + "#| components: [viewer, editor]", + "#| layout: vertical", + "", + "# -- WEBR HELPERS --", + sprintf("options(webr_pkg_repos = c(\"r-universe\" = \"%s\", getOption(\"webr_pkg_repos\")))", repo_url), + "", + "# -- APP CODE --", + knitr::knit_code$get(c("teal")), + "```", + ":::" +)) +cat(text, sep = "\n") +``` diff --git a/book/_utils/webr.qmd b/book/_utils/webr.qmd new file mode 100644 index 0000000000..fbc379a1fe --- /dev/null +++ b/book/_utils/webr.qmd @@ -0,0 +1,35 @@ + + +## {{< fa regular terminal sm fw >}} Try this using `WebR` + +::: {.callout-warning appearance="simple" collapse="true"} +## Experimental use! + +[`WebR`](https://docs.r-wasm.org/webr/latest/) is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click [here](https://webr.r-wasm.org/latest/) to open `WebR` in a new tab. +::: + +```{r, echo = FALSE, results = "asis", opts.label = "skip_if_testing"} +if (!exists("webr_code_labels")) { + webr_code_labels <- character(0L) +} +if (!all(webr_code_labels %in% knitr::all_labels())) { + stop(sprintf( + "Not all of provided labels exist in the current document!\nNot found labels are: %s.", + paste0(setdiff(webr_code_labels, knitr::all_labels()), collapse = ", ") + )) +} + +text <- unlist(c( + "```{webr-r}", + "#| editor-max-height: 500", + "#| autorun: true", + lapply(webr_code_labels, knitr::knit_code$get), + "```" +)) +cat(text, sep = "\n") +``` diff --git a/book/appendix/reproducibility.qmd b/book/appendix/reproducibility.qmd index 24ccf439b8..ae3ff89c15 100644 --- a/book/appendix/reproducibility.qmd +++ b/book/appendix/reproducibility.qmd @@ -4,11 +4,11 @@ title: Reproducibility ------------------------------------------------------------------------ -{{< include ../test-utils/envir_hook.qmd >}} +{{< include ../_utils/envir_hook.qmd >}} ## Session Info -```{r sessioninfo, message=FALSE} +```{r sessioninfo, message = FALSE} #| code-fold: show sessionInfo() @@ -18,7 +18,7 @@ sessionInfo() Download the `.lock` file and use [`renv::restore()`](https://rstudio.github.io/renv/reference/restore.html) on it to recreate environment used to generate this website. -```{r snapshot, message=FALSE, opts.label='skip_if_testing'} +```{r snapshot, message = FALSE, opts.label = "skip_if_testing"} #| code-fold: true #| renv.ignore: TRUE diff --git a/book/assets/css/style.css b/book/assets/css/style.css new file mode 100644 index 0000000000..c053bc2537 --- /dev/null +++ b/book/assets/css/style.css @@ -0,0 +1,25 @@ +/* -- Tabset horizontal scroll --*/ +#quarto-document-content>div.panel-tabset>ul.nav.nav-tabs { + overflow-x: auto; + overflow-y: hidden; + flex-wrap: nowrap; + text-wrap: nowrap; + + >li.nav-item { + display: flex; + + >a.nav-link { + text-align: center; + } + } +} + +/* -- Giscus content --*/ +.giscus { + margin-left: 75px; +} + +/* -- shinylive --*/ +.shinylive-editor { + max-height: 500px !important; +} \ No newline at end of file diff --git a/book/assets/css/style.scss b/book/assets/css/style.scss deleted file mode 100644 index 2de6003211..0000000000 --- a/book/assets/css/style.scss +++ /dev/null @@ -1,47 +0,0 @@ -/*-- scss:defaults --*/ - -$primary: #0B41CD !default; -$fg: #000000 !default; -$bg: #ffffff !default; - -/*-- scss:rules --*/ - -img.quarto-cover-image { - box-shadow: 0 .5rem 1rem rgba(0,0,0,.15); -} - -pre { - background-color: rgba(233, 236, 239, 0.65); -} - -code { - color: inherit; -} - -.navbar { - height: 40px; -} - -.panel-tabset .nav-item { - font-size: 16px; - font-style: normal; -} - -#quarto-document-content { - width: 110%; - margin-left: 150px; -} -.sidebar { - margin-left: 150px; -} -.sidebar.margin-sidebar { - margin-left: 250px; - width: 250px; -} -.page-navigation.column-page-right { - margin-left: 250px; -} -/* -- Giscus content --*/ -.giscus { - margin-left: 75px; -} diff --git a/book/assets/img/article-code-copy.gif b/book/assets/img/article-code-copy.gif new file mode 100644 index 0000000000..bd08371e7b Binary files /dev/null and b/book/assets/img/article-code-copy.gif differ diff --git a/book/assets/img/article-lock-download.gif b/book/assets/img/article-lock-download.gif new file mode 100644 index 0000000000..8fb82a66f0 Binary files /dev/null and b/book/assets/img/article-lock-download.gif differ diff --git a/book/assets/img/chunk-code-copy.gif b/book/assets/img/chunk-code-copy.gif new file mode 100644 index 0000000000..830e83ddf1 Binary files /dev/null and b/book/assets/img/chunk-code-copy.gif differ diff --git a/book/assets/img/logo-nest.png b/book/assets/img/logo-nest.png deleted file mode 100755 index 63f705ef0d..0000000000 Binary files a/book/assets/img/logo-nest.png and /dev/null differ diff --git a/book/assets/img/logo.png b/book/assets/img/logo.png new file mode 100755 index 0000000000..81f03e15fd Binary files /dev/null and b/book/assets/img/logo.png differ diff --git a/book/assets/img/tlgc.png b/book/assets/img/tlgc.png deleted file mode 100755 index 5c1952b2e5..0000000000 Binary files a/book/assets/img/tlgc.png and /dev/null differ diff --git a/book/generate-index.R b/book/generate-index.R index 927a0df5c8..d0ebde07ea 100755 --- a/book/generate-index.R +++ b/book/generate-index.R @@ -1,8 +1,10 @@ -# Run file contents within TLG-C project to update the index +# Run file contents within TLG-C project, with working directory set +# to tlg-catalog/book, to update the index +# Set locale to Sys.setlocale("LC_COLLATE", "C") or different if issues with sorting of subsections occur. print_ref_templates <- function(fpath) { title <- sub("title: ", "", readLines(fpath)[2], ) - subtitle <- sub("subtitle: ", "", readLines(fpath)[3], ) + subtitle <- gsub("^'|'$", "", sub("subtitle: ", "", readLines(fpath)[3], )) temp_name <- paste(title, subtitle, sep = " -- ") cat( paste0(strrep(" ", 8), "[", temp_name, "]", "(", fpath, ")\n\n"), @@ -13,7 +15,7 @@ print_ref_templates <- function(fpath) { section_header <- function(title) { cat( - paste("", "------------------------------------------------------------------------", "", # nolint + paste("", "------------------------------------------------------------------------", "", paste0("### ", "**", title, "**"), "", sep = "\n" ), @@ -22,7 +24,7 @@ section_header <- function(title) { } create_subsection <- function(fpath, title) { - cat(paste("", paste("####", title), "", "", sep = "\n"), file = "./tlg-index.qmd", append = TRUE) # nolint + cat(paste("", paste("####", title), "", "", sep = "\n"), file = "./tlg-index.qmd", append = TRUE) all_files <- list.files(path = fpath, pattern = "*.qmd", full.names = TRUE) invisible(sapply(all_files, print_ref_templates)) } @@ -30,7 +32,7 @@ create_subsection <- function(fpath, title) { # Create Index Header cat( - paste("---", "title: Index", "toc: true", "toc-depth: 4", "---", "", sep = "\n"), # nolint + paste("---", "title: Index", "toc: true", "toc-depth: 4", "---", "", sep = "\n"), file = "./tlg-index.qmd" ) @@ -59,9 +61,9 @@ create_subsection("./tables/vital-signs", "Vital Signs") section_header("Listings") create_subsection("./listings/ADA", "ADA") create_subsection("./listings/adverse-events", "Adverse Events") -create_subsection("./listings/concomitant-medications", "Concomitant Medications") # nolint +create_subsection("./listings/concomitant-medications", "Concomitant Medications") create_subsection("./listings/disposition", "Disposition") -create_subsection("./listings/development-safety-update-report", "Development Safety Update Report") # nolint +create_subsection("./listings/development-safety-update-report", "Development Safety Update Report") create_subsection("./listings/ECG", "ECG") create_subsection("./listings/exposure", "Exposure") create_subsection("./listings/lab-results", "Lab Results") diff --git a/book/graphs/efficacy/fstg01.qmd b/book/graphs/efficacy/fstg01.qmd index fe0023f1ec..835a11d4ae 100644 --- a/book/graphs/efficacy/fstg01.qmd +++ b/book/graphs/efficacy/fstg01.qmd @@ -5,23 +5,19 @@ subtitle: Subgroup Analysis of Best Overall Response ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) library(nestcolor) -adsl_f <- synthetic_cdisc_dataset("latest", "adsl") %>% +adsl_f <- random.cdisc.data::cadsl %>% select(STUDYID, USUBJID, ARMCD, ARM, SEX, BMRKR2, STRATA1, STRATA2) -adrs_f <- synthetic_cdisc_dataset("latest", "adrs") %>% +adrs_f <- random.cdisc.data::cadrs %>% filter(PARAMCD == "INVET") %>% select(STUDYID, USUBJID, PARAMCD, AVISIT, AVALC) @@ -44,13 +40,18 @@ var_labels(anl_rsp_arms_ab) <- c(anl_labels, is_rsp = "Is Responder") ## Standard Plot -```{r plot1, test = list(plot_v1 = "plot"), fig.width = 20, fig.height = 5} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r plot1, test = list(plot_v1 = "plot"), fig.width = 20, fig.height = 5, opts.label = ifelse(packageVersion("survival") < "3.5-8" || packageVersion("tern") < "0.9.3.9018", "skip_test_strict", "")} df <- extract_rsp_subgroups( variables = list( rsp = "is_rsp", arm = "ARM", subgroups = c("SEX", "BMRKR2"), - strata_var = "STRATA2" + strata = "STRATA2" ), data = anl_rsp_arms_ab, conf_level = 0.95 @@ -63,9 +64,18 @@ plot <- g_forest(tbl = result) plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Specifying Class Variables and
Options for the Treatment Variable -```{r plot2, test = list(plot_v2 = "plot"), fig.width = 20, fig.height = 5} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r plot2, test = list(plot_v2 = "plot"), fig.width = 20, fig.height = 5, opts.label = ifelse(packageVersion("survival") < "3.5-8" || packageVersion("tern") < "0.9.3.9018", "skip_test_strict", "")} anl_rsp_comb_arms_ac <- anl %>% mutate(is_rsp = AVALC %in% c("CR", "PR")) %>% filter(ARMCD %in% c("ARM B", "ARM A", "ARM C")) %>% @@ -89,7 +99,7 @@ df <- extract_rsp_subgroups( rsp = "is_rsp", arm = "ARMCD", subgroups = c("SEX", "BMRKR2"), - strata_var = "STRATA2" + strata = "STRATA2" ), data = anl_rsp_comb_arms_ac, conf_level = 0.95 @@ -102,15 +112,24 @@ plot <- g_forest(tbl = result) plot ``` +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Selecting Columns and
Changing the Alpha Level -```{r plot3, test = list(plot_v3 = "plot"), fig.width = 10, fig.height = 4} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r plot3, test = list(plot_v3 = "plot"), fig.width = 10, fig.height = 4, opts.label = ifelse(packageVersion("survival") < "3.5-8" || packageVersion("tern") < "0.9.3.9018", "skip_test_strict", "")} df <- extract_rsp_subgroups( variables = list( rsp = "is_rsp", arm = "ARM", subgroups = c("SEX", "BMRKR2"), - strata_var = "STRATA2" + strata = "STRATA2" ), data = anl_rsp_arms_ab, conf_level = 0.90 @@ -123,15 +142,24 @@ plot <- g_forest(tbl = result) plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Fixed
Symbol Size -```{r plot4, test = list(plot_v4 = "plot"), fig.width = 20, fig.height = 5} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r plot4, test = list(plot_v4 = "plot"), fig.width = 20, fig.height = 5, opts.label = ifelse(packageVersion("survival") < "3.5-8" || packageVersion("tern") < "0.9.3.9018", "skip_test_strict", "")} df <- extract_rsp_subgroups( variables = list( rsp = "is_rsp", arm = "ARM", subgroups = c("SEX", "BMRKR2"), - strata_var = "STRATA2" + strata = "STRATA2" ), data = anl_rsp_arms_ab, conf_level = 0.95 @@ -147,9 +175,18 @@ plot <- g_forest( plot ``` +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of CR Only, Setting
Values Indicating Response -```{r plot5, test = list(plot_v5 = "plot"), fig.width = 20, fig.height = 5} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r plot5, test = list(plot_v5 = "plot"), fig.width = 20, fig.height = 5, opts.label = ifelse(packageVersion("survival") < "3.5-8" || packageVersion("tern") < "0.9.3.9018", "skip_test_strict", "")} anl_cr_arms_ab <- anl %>% mutate(is_rsp = AVALC == "CR") %>% filter(ARMCD %in% c("ARM B", "ARM A")) %>% @@ -167,7 +204,7 @@ df <- extract_rsp_subgroups( rsp = "is_rsp", arm = "ARM", subgroups = c("SEX", "BMRKR2"), - strata_var = "STRATA2" + strata = "STRATA2" ), data = anl_cr_arms_ab, conf_level = 0.95 @@ -180,24 +217,38 @@ plot <- g_forest(tbl = result) plot ``` -```{r test parameters, test = list(width = "width", height = "height"), echo=FALSE} +```{r test parameters, test = list(width = "width", height = "height"), echo = FALSE} width <- 20 height <- 5 ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot5")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADRS <- synthetic_cdisc_dataset("latest", "adrs") + ADSL <- random.cdisc.data::cadsl + ADRS <- random.cdisc.data::cadrs }) datanames <- c("ADSL", "ADRS") datanames(data) <- datanames @@ -251,5 +302,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/efficacy/fstg02.qmd b/book/graphs/efficacy/fstg02.qmd index 19a9df5078..5d84f1acf2 100644 --- a/book/graphs/efficacy/fstg02.qmd +++ b/book/graphs/efficacy/fstg02.qmd @@ -5,19 +5,15 @@ subtitle: Subgroup Analysis of Survival Duration ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) library(forcats) library(nestcolor) -library(scda) preprocess_adtte <- function(adtte) { # Save variable labels before data processing steps. @@ -50,13 +46,17 @@ preprocess_adtte <- function(adtte) { adtte } -anl <- synthetic_cdisc_dataset("latest", "adtte") %>% +anl <- random.cdisc.data::cadtte %>% preprocess_adtte() ``` ## Standard Plot -```{r plot1, test = list(plot_v1 = "plot"), fig.width = 15, fig.height = 4} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), fig.width = 15, fig.height = 4, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} anl1 <- anl df <- extract_survival_subgroups( @@ -77,9 +77,17 @@ plot <- g_forest(tbl = result) plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Specifying Class Variables and
Options for the Treatment Variable -```{r plot2, test = list(plot_v2 = "plot"), fig.width = 15, fig.height = 4} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, test = list(plot_v2 = "plot"), fig.width = 15, fig.height = 4, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} anl2 <- anl %>% mutate( # Recode levels of arm. @@ -111,9 +119,17 @@ plot <- g_forest(tbl = result) plot ``` -## Plot Selecting Columns and
Changing the Alpha Level) +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Plot Selecting Columns and
Changing the Alpha Level -```{r plot3, test = list(plot_v3 = "plot"), fig.width = 8, fig.height = 4} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot3, test = list(plot_v3 = "plot"), fig.width = 8, fig.height = 4, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} anl3 <- anl df <- extract_survival_subgroups( @@ -134,9 +150,17 @@ plot <- g_forest(tbl = result) plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Fixed
Symbol Size -```{r plot4, test = list(plot_v4 = "plot"), fig.width = 15, fig.height = 4} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot4, test = list(plot_v4 = "plot"), fig.width = 15, fig.height = 4, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} anl4 <- anl df <- extract_survival_subgroups( @@ -160,34 +184,49 @@ plot <- g_forest( plot ``` -```{r test parameters, test = list(width = "width", height = "height", plot_v3.width = "plot_v3.width"), echo=FALSE} +```{r test parameters, test = list(width = "width", height = "height", plot_v3.width = "plot_v3.width"), echo = FALSE} width <- 15 height <- 4 -plot_v3.width <- 8 +plot_v3.width <- 8 # nolint: object_name. ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) library(forcats) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") + + ADSL <- random.cdisc.data::cadsl ADSL <- ADSL %>% filter(ARM %in% c("B: Placebo", "A: Drug X")) %>% mutate(ARM = droplevels(fct_relevel(ARM, "B: Placebo"))) %>% mutate(ARMCD = droplevels(fct_relevel(ARMCD, "ARM B"))) ADSL$RACE <- droplevels(ADSL$RACE) - ADTTE <- synthetic_cdisc_dataset("latest", "adtte") - adtte_labels <- var_labels(ADTTE) + ADTTE <- random.cdisc.data::cadtte + adtte_labels <- col_labels(ADTTE) ADTTE <- ADTTE %>% filter( @@ -204,7 +243,7 @@ data <- within(data, { AVAL = day2month(AVAL), AVALU = "Months" ) %>% - var_relabel( + col_relabel( ARM = adtte_labels["ARM"], SEX = adtte_labels["SEX"], is_event = "Event Flag", @@ -240,5 +279,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/efficacy/kmg01.qmd b/book/graphs/efficacy/kmg01.qmd new file mode 100644 index 0000000000..d1dad1149d --- /dev/null +++ b/book/graphs/efficacy/kmg01.qmd @@ -0,0 +1,246 @@ +--- +title: KMG01 +subtitle: Kaplan-Meier Plot +--- + +------------------------------------------------------------------------ + +{{< include ../../_utils/envir_hook.qmd >}} + +:::: {.panel-tabset} + +```{r setup, echo = FALSE} +library(tern) +library(dplyr) +library(nestcolor) + +adtte <- random.cdisc.data::cadtte +anl <- adtte %>% + dplyr::filter(PARAMCD == "OS") %>% + dplyr::mutate(is_event = CNSR == 0) +variables <- list(tte = "AVAL", is_event = "is_event", arm = "ARMCD") +``` + +## Standard Plot + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, fig.width = 9, fig.height = 6, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} +plot <- g_km( + df = anl, + variables = variables, + xlab = "Time (Days)", + ylim = c(0, 1), + annot_coxph = TRUE +) +plot +``` + +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Plot of Failures + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, fig.width = 9, fig.height = 6, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} +plot <- g_km( + df = anl, + variables = variables, + xlab = "Time (Days)", + yval = "Failure", + ylim = c(0, 1), + font_size = 8, + annot_coxph = TRUE +) +plot +``` + +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Plot Without
Comparative Statistics + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot3, fig.width = 9, fig.height = 6, test = list(plot_v3 = "plot"), opts.label = "skip_test_strict"} +plot <- g_km( + df = anl, + variables = variables, + xlab = "Time (Days)", + ylim = c(0, 1) +) +plot +``` + +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Plot Without
Censoring Marks + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot4, fig.width = 9, fig.height = 6, test = list(plot_v4 = "plot"), opts.label = "skip_test_strict"} +plot <- g_km( + df = anl, + variables = variables, + censor_show = FALSE, + xlab = "Time (Days)", + ylim = c(0, 1), + annot_coxph = TRUE +) +plot +``` + +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Plot Modifying
Censoring Marks + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot5, fig.width = 9, fig.height = 6, test = list(plot_v5 = "plot"), opts.label = "skip_test_strict"} +plot <- g_km( + df = anl, + variables = variables, + pch = 1, + size = 2, + xlab = "Time (Days)", + ylim = c(0, 1), + annot_coxph = TRUE +) +plot +``` + +`r webr_code_labels <- c("setup", "plot5")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Plot Modifying Options for Statistics,
Tie Handling, Stratification, etc. + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot6, fig.width = 9, fig.height = 6, test = list(plot_v6 = "plot"), opts.label = "skip_test_strict"} +variables$strata <- c("STRATA1", "STRATA2") +plot <- g_km( + df = anl, + variables = variables, + control_surv = control_surv_timepoint(conf_level = 0.8), + xlab = "Time (Days)", + ylim = c(0, 1), + annot_coxph = TRUE, + control_coxph_pw = control_coxph( + pval_method = "wald", + ties = "breslow", + conf_level = 0.8 + ) +) +plot +``` + +`r webr_code_labels <- c("setup", "plot6")` +{{< include ../../_utils/webr.qmd >}} +::: + +::: {.content-visible when-profile="development"} +```{r test parameters, test = list(width = "width", height = "height"), echo=FALSE} +width <- 9 +height <- 6 +``` +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} + +## `teal` App + +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} +library(teal.modules.clinical) + +## Data reproducible code +data <- teal_data() +data <- within(data, { + ADSL <- random.cdisc.data::cadsl + ADTTE <- random.cdisc.data::cadtte +}) +datanames <- c("ADSL", "ADTTE") +datanames(data) <- datanames +join_keys(data) <- default_cdisc_join_keys[datanames] + +arm_ref_comp <- list( + ACTARMCD = list( + ref = "ARM B", + comp = c("ARM A", "ARM C") + ), + ARM = list( + ref = "B: Placebo", + comp = c("A: Drug X", "C: Combination") + ) +) + +## Reusable Configuration For Modules +ADSL <- data[["ADSL"]] +ADTTE <- data[["ADTTE"]] + +## Setup App +app <- init( + data = data, + modules = modules( + tm_g_km( + label = "KM PLOT", + plot_height = c(600, 100, 2000), + dataname = "ADTTE", + arm_var = choices_selected( + variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")), + "ARM" + ), + paramcd = choices_selected( + value_choices(ADTTE, "PARAMCD", "PARAM"), + "OS" + ), + arm_ref_comp = arm_ref_comp, + strata_var = choices_selected( + variable_choices(ADSL, c("SEX", "BMRKR2")), + "SEX" + ), + facet_var = choices_selected( + variable_choices(ADSL, c("SEX", "BMRKR2")), + NULL + ) + ) + ) +) + +shinyApp(app$ui, app$server) +``` + +{{< include ../../_utils/shinylive.qmd >}} +::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/efficacy/mmrmg01.qmd b/book/graphs/efficacy/mmrmg01.qmd index 3421f7d506..bde4f6afd8 100644 --- a/book/graphs/efficacy/mmrmg01.qmd +++ b/book/graphs/efficacy/mmrmg01.qmd @@ -5,24 +5,20 @@ subtitle: Plots for Mixed-Effect Model Repeated Measures Analysis ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} Given an MMRM fitted with `s_mmrm`, `g_mmrm_lsmeans` displays for each visit the adjusted means within group and/or difference in adjusted means between groups. `g_mmrm_diagnostic` displays marginal residual plots for evaluating model fit. -::: panel-tabset -## Data Setup and
Model Fitting - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} and
Model Fitting +```{r setup, echo = FALSE} library(dplyr) library(tern.mmrm) -library(scda) library(nestcolor) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs adqs_f <- adqs %>% dplyr::filter(PARAMCD == "FKSI-FWB" & !AVISIT %in% c("BASELINE")) %>% @@ -46,7 +42,8 @@ mmrm_results <- fit_mmrm( ### Considering the treatment variable in the model -```{r plot1, dev.args=list(pointsize=6), test = list(plot_v1 = "plot")} + +```{r plot1, dev.args = list(pointsize = 6), test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} plot <- g_mmrm_lsmeans( mmrm_results, select = "estimates", @@ -57,7 +54,8 @@ plot ### Considering the treatment variable in the model, with lines -```{r plot2, dev.args=list(pointsize=6), test = list(plot_v2 = "plot")} + +```{r plot2, dev.args = list(pointsize = 6), test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} plot <- g_mmrm_lsmeans( mmrm_results, select = "estimates", @@ -69,7 +67,8 @@ plot ### Considering the treatment variable in the model, with statistics table -```{r plot3, dev.args=list(pointsize=6), fig.height=7, test = list(plot_v3 = "plot")} + +```{r plot3, dev.args = list(pointsize = 6), fig.height = 7, test = list(plot_v3 = "plot"), opts.label = "skip_test_strict"} plot <- g_mmrm_lsmeans( mmrm_results, select = "estimates", @@ -85,7 +84,8 @@ plot Users can choose to display both estimates and contrasts together by running `g_mmrm_lsmeans(mmrm_results)`. -```{r plot4, dev.args=list(pointsize=6), test = list(plot_v4 = "plot")} + +```{r plot4, dev.args = list(pointsize = 6), test = list(plot_v4 = "plot"), opts.label = "skip_test_strict"} plot <- g_mmrm_lsmeans( mmrm_results, select = "contrasts", @@ -97,32 +97,40 @@ plot ## Model Diagnostics: Marginal
Fitted Values vs. Residuals -```{r plot5, dev.args=list(pointsize=6), test = list(plot_v5 = "plot")} +```{r plot5, dev.args = list(pointsize = 6), test = list(plot_v5 = "plot")} plot <- g_mmrm_diagnostic(mmrm_results) plot ``` ## Model Diagnostics: Normality
of Marginal Residuals -```{r plot6, dev.args=list(pointsize=6), test = list(plot_v6 = "plot")} +```{r plot6, dev.args = list(pointsize = 6), test = list(plot_v6 = "plot")} plot <- g_mmrm_diagnostic(mmrm_results, type = "q-q-residual") plot ``` -{{< include ../../test-utils/save_results.qmd >}} +## Data Setup and
Model Fitting + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADQS <- synthetic_cdisc_dataset("latest", "adqs") %>% + + ADSL <- random.cdisc.data::cadsl + ADQS <- random.cdisc.data::cadqs %>% filter(ABLFL != "Y" & ABLFL2 != "Y") %>% filter(AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22")) %>% mutate( @@ -173,4 +181,3 @@ shinyApp(app$ui, app$server) ``` {{< include ../../repro.qmd >}} -::: diff --git a/book/graphs/efficacy/mmrmg02.qmd b/book/graphs/efficacy/mmrmg02.qmd index 254ec3efd9..76d66a4f08 100644 --- a/book/graphs/efficacy/mmrmg02.qmd +++ b/book/graphs/efficacy/mmrmg02.qmd @@ -5,21 +5,17 @@ subtitle: Forest Plot for Mixed-Effect Model Repeated Measures ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern.mmrm) library(nestcolor) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs adqs_f <- adqs %>% dplyr::filter(PARAMCD == "FKSI-FWB" & !AVISIT %in% c("BASELINE")) %>% @@ -36,7 +32,7 @@ adqs_f <- adqs %>% set.seed(2) adqs_f_with_groups <- rbind( within( - adqs_f[sample(1:nrow(adqs_f), size = 1 / 2 * nrow(adqs_f)), ], + adqs_f[sample(seq_len(nrow(adqs_f)), size = 1 / 2 * nrow(adqs_f)), ], group <- "subpopulation 1" ), within( @@ -57,7 +53,7 @@ For the following part, an MMRM model is fitted for the dataset and from this re First an MMRM model is fitted for the whole dataset. -```{r} +```{r mmrm_results} #| code-fold: show mmrm_results <- fit_mmrm( @@ -130,12 +126,19 @@ plot <- g_forest( plot ``` -```{r test parameters, test = list(width = "width", width = "width"), echo=FALSE} +```{r test parameters, test = list(width = "width", width = "width"), echo = FALSE} width <- 15 height <- 4 ``` -{{< include ../../test-utils/save_results.qmd >}} +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/graphs/other/brg01.qmd b/book/graphs/other/brg01.qmd index 1e4f9ea70d..e4c98f172b 100644 --- a/book/graphs/other/brg01.qmd +++ b/book/graphs/other/brg01.qmd @@ -5,23 +5,19 @@ subtitle: Bar Chart ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(binom) library(dplyr) library(ggplot2) -library(scda) library(tidyr) library(tern) library(nestcolor) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # filtered population patpop_df <- adsl %>% @@ -30,17 +26,20 @@ patpop_df <- adsl %>% patpop <- setNames(patpop_df$patpop, patpop_df$STUDYID) denom <- patpop_df$patpop -adae <- synthetic_cdisc_dataset("latest", "adae") %>% +adae <- random.cdisc.data::cadae %>% mutate(AETOXGRC = as.character(AETOXGR)) attributes(adae$AETOXGRC)$label <- "Analysis Toxicity Grade (C)" vl_ae <- var_labels(adae) -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adlb <- random.cdisc.data::cadlb vl_lb <- var_labels(adlb) ``` ## Plot of Frequency +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot1, test = list(plot_v1 = "plot")} anl <- adae %>% filter(AESER == "Y") @@ -56,8 +55,15 @@ plot <- ggplot(anl, aes(x = .data[["ACTARM"]])) + plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Percentage +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot2, test = list(plot_v2 = "plot")} anl <- adae %>% filter(AESOC == "cl A") @@ -80,8 +86,15 @@ plot <- ggplot(anl, aes(x = .data[["ACTARM"]])) + plot ``` +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Frequency with
Total Number of Subjects +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot3, test = list(plot_v3 = "plot")} anl <- adae %>% filter(AESOC == "cl A") @@ -101,8 +114,15 @@ plot <- ggplot(anl, aes(x = .data[["xvarlabel"]])) + plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Frequency
with Horizontal Bars +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot4, test = list(plot_v4 = "plot")} anl <- adae %>% filter(AESER == "Y") @@ -118,9 +138,17 @@ plot <- ggplot(anl, aes(x = .data[["ACTARM"]])) + plot ``` +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Percentage
and Confidence Intervals -```{r plot5, test = list(plot_v5 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot5, test = list(plot_v5 = "plot"), opts.label = "skip_test_strict"} anl <- adlb %>% filter(PARAMCD == "ALT" & ANRIND == "HIGH") anl <- anl[!duplicated(anl$USUBJID), ] @@ -137,14 +165,22 @@ anlpop <- as.data.frame(table(anl$ANRIND, anl$ACTARM)) %>% select(ACTARM, EVENTCOUNT) anl <- left_join(patpop5, anlpop, by = "ACTARM") -CIs <- binom.confint(x = anl$EVENTCOUNT, n = anl$TRTPOP, methods = "exact") +CIs <- binom.confint(x = anl$EVENTCOUNT, n = anl$TRTPOP, methods = "exact") # nolint: object_name. anl <- cbind(anl, CIs[, 4:6]) plot <- ggplot(anl) + - geom_bar(aes(x = ACTARM, y = mean * 100), stat = "identity", fill = getOption("ggplot2.discrete.fill")[1], alpha = 0.7) + - geom_errorbar(aes(x = ACTARM, ymin = lower * 100, ymax = upper * 100), - width = 0.5, colour = "#20b4ff", - alpha = 0.9, linewidth = 1.0 + geom_bar( + aes(x = ACTARM, y = mean * 100), + stat = "identity", + fill = getOption("ggplot2.discrete.fill")[1], + alpha = 0.7 + ) + + geom_errorbar( + aes(x = ACTARM, ymin = lower * 100, ymax = upper * 100), + width = 0.5, + colour = "#20b4ff", + alpha = 0.9, + linewidth = 1.0 ) + theme(plot.title = element_text(hjust = 0.5)) + ggtitle("Percent of Subjects with Abnormaly High ALT: Safety-Evaluable Subjects") + @@ -153,9 +189,17 @@ plot <- ggplot(anl) + plot ``` +`r webr_code_labels <- c("setup", "plot5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Percentage by
Treatment and Covariate -```{r plot6, test = list(plot_v6 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot6, test = list(plot_v6 = "plot"), opts.label = "skip_test_strict"} anl <- adae %>% filter(AESER == "Y") @@ -178,9 +222,17 @@ plot <- ggplot(anl, aes(x = .data[["ACTARM"]], fill = .data[["SEX"]])) + plot ``` +`r webr_code_labels <- c("setup", "plot6")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Percentage by
Covariate and Treatment -```{r plot7, test = list(plot_v7 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot7, test = list(plot_v7 = "plot"), opts.label = "skip_test_strict"} anl <- adae %>% filter(AESER == "Y") @@ -202,8 +254,15 @@ plot <- ggplot(anl, aes(x = .data[["SEX"]], fill = .data[["ACTARM"]])) + plot ``` +`r webr_code_labels <- c("setup", "plot7")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Percentage
with Mean and Median +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot8, test = list(plot_v8 = "plot")} anl1 <- adlb %>% filter(AVISIT == "BASELINE", PARAMCD == "CRP" & ANRIND == "HIGH") @@ -258,16 +317,24 @@ tbl <- ggplot(sd_l, aes(x = ACTARM, y = stat_lbl, label = value)) + theme_bw() + tbl_theme -plot <- ggpubr::ggarrange(graph, tbl, - heights = c(4, 1), +plot <- cowplot::plot_grid(graph, tbl, + rel_heights = c(4, 1), ncol = 1, nrow = 2, align = "v" ) plot ``` +`r webr_code_labels <- c("setup", "plot8")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Categorical
Variable -```{r plot9, test = list(plot_v9 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot9, test = list(plot_v9 = "plot"), opts.label = "skip_test_strict"} anl <- adae anl <- anl %>% @@ -294,16 +361,18 @@ plot <- ggplot(anl, aes(x = .data[["ACTARM"]], fill = .data[["AETOXGRC"]])) + plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot9")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/other/bwg01.qmd b/book/graphs/other/bwg01.qmd index bfd7035e62..49d0577998 100644 --- a/book/graphs/other/bwg01.qmd +++ b/book/graphs/other/bwg01.qmd @@ -5,21 +5,16 @@ subtitle: Box Plot ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -# generic code for all plots -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(ggplot2) library(nestcolor) -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adlb <- random.cdisc.data::cadlb adlb <- adlb %>% filter(PARAMCD == "ALT" & AVISIT == "WEEK 2 DAY 15") # Definition of boxplot boundaries and whiskers @@ -55,7 +50,6 @@ oc <- getOption("ggplot2.discrete.fill")[1] # get plot metadata data to derive coordinates for adding annotations bp_annos <- function(bp, color, annos = 1) { bp_mdat <- ggplot_build(bp)$data[[1]] - # bp_metadata <<- bp_mdat if (annos == 1) { bp <- bp + geom_segment(data = bp_mdat, aes( @@ -87,6 +81,9 @@ bp_annos <- function(bp, color, annos = 1) { ## Standard Plot +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot1, test = list(plot_v1 = "plot")} bp_1 <- ggplot(adlb, aes(x = ARMCD, y = AVAL)) + stat_summary(geom = "boxplot", fun.data = five_num, fill = fc, color = oc) + @@ -104,8 +101,15 @@ plot <- bp_annos(bp_1, oc) plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Changing
Whiskers +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot2, test = list(plot_v2 = "plot")} bp_3 <- ggplot(adlb, aes(x = ARMCD, y = AVAL)) + stat_summary( @@ -126,8 +130,15 @@ plot <- bp_annos(bp_3, oc) plot ``` +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Adding
Outliers +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot3, test = list(plot_v3 = "plot")} bp_4 <- ggplot(adlb, aes(x = ARMCD, y = AVAL)) + stat_summary( @@ -149,8 +160,15 @@ plot <- bp_annos(bp_4, oc) plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Specifying Marker
for Outliers and
Adding Patient ID +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot4, test = list(plot_v4 = "plot")} adlb_o <- adlb %>% group_by(ARMCD) %>% @@ -183,8 +201,15 @@ plot <- bp_annos(bp_5, oc) plot ``` +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot Specifying
Marker for Mean +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot5, test = list(plot_v5 = "plot")} bp_6 <- ggplot(adlb, aes(x = ARMCD, y = AVAL)) + geom_boxplot(fill = fc, color = oc) + @@ -202,19 +227,38 @@ plot <- bp_annos(bp_6, oc) plot ``` +`r webr_code_labels <- c("setup", "plot5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot by Treatment
and Timepoint -```{r plot6, test = list(plot_v6 = "plot")} -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot6, test = list(plot_v6 = "plot"), opts.label = "skip_test_strict"} +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adlb_v <- adlb %>% - filter(PARAMCD == "ALT" & - AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22", "WEEK 4 DAY 29")) + filter(PARAMCD == "ALT" & AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22", "WEEK 4 DAY 29")) bp_7 <- ggplot(adlb_v, aes(x = AVISIT, y = AVAL)) + - stat_summary(geom = "boxplot", fun.data = five_num, position = position_dodge2(.5), aes(fill = ARMCD, color = ARMCD)) + - stat_summary(geom = "point", fun = mean, aes(group = ARMCD), size = 3, shape = 8, position = position_dodge2(1)) + + stat_summary( + geom = "boxplot", + fun.data = five_num, + position = position_dodge2(.5), + aes(fill = ARMCD, color = ARMCD) + ) + + stat_summary( + geom = "point", + fun = mean, + aes(group = ARMCD), + size = 3, + shape = 8, + position = position_dodge2(1) + ) + labs( title = "Box Plot of Laboratory Test Results", caption = "The whiskers extend to the minimum and maximum values.", @@ -227,12 +271,32 @@ plot <- bp_annos(bp_7, oc, 2) plot ``` +`r webr_code_labels <- c("setup", "plot6")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot by Timepoint
and Treatment -```{r plot7, test = list(plot_v7 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot7, test = list(plot_v7 = "plot"), opts.label = "skip_test_strict"} bp_8 <- ggplot(adlb_v, aes(x = ARMCD, y = AVAL)) + - stat_summary(geom = "boxplot", fun.data = five_num, position = position_dodge2(width = .5), aes(fill = AVISIT, color = AVISIT)) + - stat_summary(geom = "point", fun = mean, aes(group = AVISIT), size = 3, shape = 8, position = position_dodge2(1)) + + stat_summary( + geom = "boxplot", + fun.data = five_num, + position = position_dodge2(width = .5), + aes(fill = AVISIT, color = AVISIT) + ) + + stat_summary( + geom = "point", + fun = mean, + aes(group = AVISIT), + size = 3, + shape = 8, + position = position_dodge2(1) + ) + labs( title = "Box Plot of Laboratory Test Results", caption = "The whiskers extend to the minimum and maximum values.", @@ -245,8 +309,15 @@ plot <- bp_annos(bp_8, oc, 2) plot ``` +`r webr_code_labels <- c("setup", "plot7")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with
Table Section +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot8, test = list(plot_v8 = "plot")} # Make wide dataset with summary statistics adlb_wide <- adlb %>% @@ -305,15 +376,22 @@ tbl_1 <- ggplot(adlb_long, aes(x = ARMCD, y = type_lbl, label = stat), vjust = 1 labs(caption = "The whiskers extend to the minimum and maximum values.") + theme_bp -plot <- ggpubr::ggarrange(bp_annos(bp_9, oc), tbl_1, - heights = c(4, 2), +plot <- cowplot::plot_grid(bp_annos(bp_9, oc), tbl_1, + rel_heights = c(4, 2), ncol = 1, nrow = 2, align = "v" ) plot ``` +`r webr_code_labels <- c("setup", "plot8")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Number of Patients
only in Table Section +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot9, test = list(plot_v9 = "plot")} tbl_2 <- adlb_long %>% filter(type == "n") %>% @@ -325,27 +403,42 @@ tbl_2 <- adlb_long %>% labs(caption = "The whiskers extend to the minimum and maximum values.") + theme_bp -plot <- ggpubr::ggarrange(bp_annos(bp_9, oc), tbl_2, - heights = c(6, 1), +plot <- cowplot::plot_grid(bp_annos(bp_9, oc), tbl_2, + rel_heights = c(6, 1), ncol = 1, nrow = 2, align = "v" ) plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot8", "plot9")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app"), eval = packageVersion("teal.modules.general") >= "0.3.0"} library(teal.modules.general) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(tern) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") + + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb # If PARAMCD and AVISIT are not factors, convert to factors # Also fill in missing values with "" @@ -434,5 +527,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/other/cig01.qmd b/book/graphs/other/cig01.qmd index e151a6a564..c72fdd3b31 100644 --- a/book/graphs/other/cig01.qmd +++ b/book/graphs/other/cig01.qmd @@ -5,29 +5,29 @@ subtitle: Confidence Interval Plot ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(ggplot2) library(dplyr) -library(scda) library(nestcolor) -adlb <- synthetic_cdisc_dataset("latest", "adlb") %>% +adlb <- random.cdisc.data::cadlb %>% filter(PARAMCD == "ALT", AVISIT == "BASELINE") ``` ## Plot of Mean and
95% CIs for Mean +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The function `stat_mean_ci` from the `tern` package can be used with default values to draw the 95% confidence interval around the mean. -```{r plot1and2, test = list(plot_v1_and_v2 = "plot")} + +```{r plot1and2, test = list(plot_v1_and_v2 = "plot"), opts.label = "skip_test_strict"} plot <- ggplot( data = adlb, mapping = aes( @@ -55,9 +55,17 @@ plot <- ggplot( plot ``` +`r webr_code_labels <- c("setup", "plot1and2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Confidence Interval Using
a Different Stratification Variable -```{r plot3, test = list(plot_v3 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot3, test = list(plot_v3 = "plot"), opts.label = "skip_test_strict"} plot <- ggplot( data = adlb, mapping = aes( @@ -85,11 +93,19 @@ plot <- ggplot( plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Median and
95% CIs for Median +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The function `stat_median_ci` from the `tern` package works similarly to `stat_mean_ci`. -```{r plot4, test = list(plot_v4 = "plot")} + +```{r plot4, test = list(plot_v4 = "plot"), opts.label = "skip_test_strict"} plot <- ggplot( data = adlb, mapping = aes( @@ -114,13 +130,22 @@ plot <- ggplot( x = "Treatment Group", y = paste0(adlb$PARAMCD[1], " (", adlb$AVALU[1], ")") ) +plot ``` +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Median and 95% CIs for
Median Using Different Alpha Level +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + To modify the confidence level for the estimation of the confidence interval, the call to `stat_mean_ci` (or `stat_median_ci`) can be slightly modified. -```{r plot5, test = list(plot_v5 = "plot")} + +```{r plot5, test = list(plot_v5 = "plot"), opts.label = "skip_test_strict"} plot <- ggplot( data = adlb, mapping = aes( @@ -145,10 +170,18 @@ plot <- ggplot( x = "Treatment Group", y = paste0(adlb$PARAMCD[1], " (", adlb$AVALU[1], ")") ) +plot ``` +`r webr_code_labels <- c("setup", "plot5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of Mean
and Median +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The corresponding table is simply obtained using the `rtables` framework: ```{r table6, test = list(table_v6 = "table")} @@ -159,19 +192,33 @@ table <- build_table(lyt = lyt, df = adlb) table ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "table6")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb }) datanames <- c("ADSL", "ADLB") datanames(data) <- datanames @@ -242,5 +289,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/other/ippg01.qmd b/book/graphs/other/ippg01.qmd index e9c7633b20..41fa6da3f7 100644 --- a/book/graphs/other/ippg01.qmd +++ b/book/graphs/other/ippg01.qmd @@ -5,25 +5,21 @@ subtitle: Individual Patient Plot Over Time ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} For illustration purposes, we will subset the `adlb` dataset for safety population in treatment arm A and a specific lab parameter (`ALT`). -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) # use small sample size -adsl <- synthetic_cdisc_dataset("latest", "adsl") %>% slice(1:15) -adlb <- synthetic_cdisc_dataset("latest", "adlb") %>% filter(USUBJID %in% adsl$USUBJID) +adsl <- random.cdisc.data::cadsl %>% slice(1:15) +adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID) # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adlb <- df_explicit_na(adlb) @@ -40,10 +36,14 @@ adlb_f <- adlb %>% ## Standard Plot +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The user can select different `plotting_choices` depending on their preference. To demonstrate, separate plots are produced with a maximum of 3 observations each. -```{r plots1, test = list(plots_v1 = "plots")} + +```{r plots1, test = list(plots_v1 = "plots"), opts.label = "skip_test_strict"} plots <- g_ipp( df = adlb_f, xvar = "AVISIT", @@ -59,12 +59,20 @@ plots <- g_ipp( plots ``` +`r webr_code_labels <- c("setup", "plots1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Patient Baselines as Reference +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + Here, patients' individual baseline values will be shown for reference. Note that users can provide their own custom theme to the function via the `ggtheme` argument. -```{r plots2, test = list(plots_v2 = "plots")} + +```{r plots2, test = list(plots_v2 = "plots"), opts.label = "skip_test_strict"} plots <- g_ipp( df = adlb_f, xvar = "AVISIT", @@ -83,23 +91,36 @@ plots <- g_ipp( plots ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plots2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(tern) - library(scda) library(dplyr) # use small sample size - ADSL <- synthetic_cdisc_dataset("latest", "adsl") %>% slice(1:15) - ADLB <- synthetic_cdisc_dataset("latest", "adlb") %>% filter(USUBJID %in% ADSL$USUBJID) + ADSL <- random.cdisc.data::cadsl %>% slice(1:15) + ADLB <- random.cdisc.data::cadlb %>% filter(USUBJID %in% ADSL$USUBJID) # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -146,7 +167,7 @@ app <- init( variable_choices(ADLB, c("AVISIT")), "AVISIT" ), - base_var = choices_selected( + baseline_var = choices_selected( variable_choices(ADLB, c("BASE")), "BASE", fixed = TRUE @@ -160,5 +181,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/other/kmg01.qmd b/book/graphs/other/kmg01.qmd deleted file mode 100644 index 6bb0bf1866..0000000000 --- a/book/graphs/other/kmg01.qmd +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: KMG01 -subtitle: Kaplan-Meier Plot ---- - ------------------------------------------------------------------------- - -{{< include ../../test-utils/envir_hook.qmd >}} - -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show - -library(tern) -library(scda) -library(dplyr) -library(nestcolor) - -adtte <- synthetic_cdisc_dataset("latest", "adtte") -anl <- adtte %>% - dplyr::filter(PARAMCD == "OS") %>% - dplyr::mutate(is_event = CNSR == 0) -variables <- list(tte = "AVAL", is_event = "is_event", arm = "ARMCD") -``` - -## Standard Plot - -```{r plot1, fig.height=8, test = list(plot_v1 = "plot")} -plot <- g_km( - df = anl, - variables = variables, - xlab = "Time (Days)", - ylim = c(0, 1), - annot_coxph = TRUE -) -plot -``` - -## Plot of Failures - -```{r plot2, fig.height=8, test = list(plot_v2 = "plot")} -plot <- g_km( - df = anl, - variables = variables, - xlab = "Time (Days)", - yval = "Failure", - ylim = c(0, 1), - annot_surv_med = TRUE, - annot_coxph = TRUE, - font_size = 7.5, - position_coxph = c(0.3, 0), - position_surv_med = c(0.9, 0.3) -) -plot -``` - -## Plot Without
Comparative Statistics - -```{r plot3, fig.height=8, test = list(plot_v3 = "plot")} -plot <- g_km( - df = anl, - variables = variables, - xlab = "Time (Days)", - ylim = c(0, 1), - annot_surv_med = TRUE -) -plot -``` - -## Plot Without
Censoring Marks - -```{r plot4, fig.height=8, test = list(plot_v4 = "plot")} -plot <- g_km( - df = anl, - variables = variables, - censor_show = FALSE, - xlab = "Time (Days)", - ylim = c(0, 1), - annot_coxph = TRUE -) -plot -``` - -## Plot Modifying
Censoring Marks - -```{r plot5, fig.height=8, test = list(plot_v5 = "plot")} -plot <- g_km( - df = anl, - variables = variables, - pch = 1, - size = 2, - xlab = "Time (Days)", - ylim = c(0, 1), - annot_coxph = TRUE -) -plot -``` - -## Plot Modifying Options for Statistics,
Tie Handling, Stratification, etc. - -```{r plot6, test = list(plot_v6 = "plot")} -variables$strat <- c("STRATA1", "STRATA2") -plot <- g_km( - df = anl, - variables = variables, - control_surv = control_surv_timepoint(conf_level = 0.8), - xlab = "Time (Days)", - ylim = c(0, 1), - annot_coxph = TRUE, - control_coxph_pw = control_coxph( - pval_method = "wald", - ties = "breslow", - conf_level = 0.8 - ) -) -plot -``` - -{{< include ../../test-utils/save_results.qmd >}} - -## `teal` App - -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} -library(teal.modules.clinical) - -## Data reproducible code -data <- teal_data() -data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADTTE <- synthetic_cdisc_dataset("latest", "adtte") -}) -datanames <- c("ADSL", "ADTTE") -datanames(data) <- datanames -join_keys(data) <- default_cdisc_join_keys[datanames] - -arm_ref_comp <- list( - ACTARMCD = list( - ref = "ARM B", - comp = c("ARM A", "ARM C") - ), - ARM = list( - ref = "B: Placebo", - comp = c("A: Drug X", "C: Combination") - ) -) - -## Reusable Configuration For Modules -ADSL <- data[["ADSL"]] -ADTTE <- data[["ADTTE"]] - -## Setup App -app <- init( - data = data, - modules = modules( - tm_g_km( - label = "KM PLOT", - plot_height = c(600, 100, 2000), - dataname = "ADTTE", - arm_var = choices_selected( - variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")), - "ARM" - ), - paramcd = choices_selected( - value_choices(ADTTE, "PARAMCD", "PARAM"), - "OS" - ), - arm_ref_comp = arm_ref_comp, - strata_var = choices_selected( - variable_choices(ADSL, c("SEX", "BMRKR2")), - "SEX" - ), - facet_var = choices_selected( - variable_choices(ADSL, c("SEX", "BMRKR2")), - NULL - ) - ) - ) -) - -shinyApp(app$ui, app$server) -``` - -{{< include ../../repro.qmd >}} -::: diff --git a/book/graphs/other/ltg01.qmd b/book/graphs/other/ltg01.qmd index b7d3f05b76..aee3996000 100644 --- a/book/graphs/other/ltg01.qmd +++ b/book/graphs/other/ltg01.qmd @@ -5,27 +5,22 @@ subtitle: Lattice Plot of Laboratory Tests by Treatment Group Over Time ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} Lattice plots are natively handled by R, the examples below rely mostly on the package `ggplot2`. -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) -library(teal) library(teal.modules.clinical) library(ggplot2) library(dplyr) library(nestcolor) # Datasets -adsl <- synthetic_cdisc_dataset("latest", "adsl") %>% slice(1:8) -adlb <- synthetic_cdisc_dataset("latest", "adlb") %>% filter(USUBJID %in% adsl$USUBJID) +adsl <- random.cdisc.data::cadsl %>% slice(1:8) +adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID) # Pre-processing adlb$AVISIT_txt <- adlb$AVISIT @@ -52,7 +47,11 @@ pch <- c( #### Basic Plot -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} # General mapping and "lattice" ("facet" in ggplot2 nomenclature). g1 <- { ggplot( @@ -70,11 +69,19 @@ plot <- g1 plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Modifying Facets +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The units describing rows of panes and the number of patients under each arm is specified by modifying `facet_grid()`: -```{r plot2, test = list(plot_v2 = "plot")} + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} # Include the units and the sample size N. g2 <- g1 + facet_grid( paste0(LBTESTCD, "\n(", AVALU, ")") ~ ARM_N, @@ -85,12 +92,20 @@ plot <- g2 plot ``` +`r webr_code_labels <- c("setup", "plot1", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Modifying X-Axis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The graphic elements are modified through usual `ggplot2` functions. For instance, the x-axis could be improved as follows: -```{r plot3, test = list(plot_v3 = "g3")} + +```{r plot3, test = list(plot_v3 = "g3"), opts.label = "skip_test_strict"} g3 <- g2 + theme( axis.text.x = element_text(angle = 45, hjust = 1), axis.title = element_blank() @@ -100,6 +115,10 @@ plot <- g3 plot ``` +`r webr_code_labels <- c("setup", "plot1", "plot2", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Liver Function Tests
Including Mean, Median, and 95% CIs The functions `stat_mean_ci` and `stat_median_ci` from the `tern` package allow the addition of mean and/or median confidence intervals. @@ -111,8 +130,8 @@ The example below suggests a larger dataset, where the individual subject legend #| code-fold: show # Datasets -adsl <- synthetic_cdisc_dataset("latest", "adsl") %>% slice(1:40) -adlb <- synthetic_cdisc_dataset("latest", "adlb") %>% filter(USUBJID %in% adsl$USUBJID) +adsl <- random.cdisc.data::cadsl %>% slice(1:40) +adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID) # Pre-processing adlb$AVISIT_txt <- adlb$AVISIT @@ -137,6 +156,9 @@ pch <- c( #### Basic Plot +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r plot4, test = list(plot_v4 = "plot")} # General mapping and "lattice" ("facet" in ggplot2 nomenclature) g4 <- { @@ -164,9 +186,17 @@ plot <- g4 plot ``` +`r webr_code_labels <- c("setup", "pre-processing", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Adding Mean -```{r plot51, test = list(plot_v51 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot51, test = list(plot_v51 = "plot"), opts.label = "skip_test_strict"} # Add the mean along with the 95% CI at every visit. g51 <- g4 + stat_summary( fun = mean, linewidth = 1, geom = "line", @@ -180,9 +210,17 @@ plot <- g51 + guides(linetype = guide_legend(title = NULL)) plot ``` +`r webr_code_labels <- c("setup", "pre-processing", "plot4", "plot51")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Adding Median -```{r plot52, test = list(plot_v52 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot52, test = list(plot_v52 = "plot"), opts.label = "skip_test_strict"} # Instead of a mean, the median could be more relevant. g52 <- g51 + stat_summary( fun = median, linewidth = 1, geom = "line", @@ -196,9 +234,17 @@ plot <- g52 + guides(linetype = guide_legend(title = "Aggregate")) plot ``` +`r webr_code_labels <- c("setup", "pre-processing", "plot4", "plot51", "plot52")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Changing Confidence Level -```{r plot53, test = list(plot_v53 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot53, test = list(plot_v53 = "plot"), opts.label = "skip_test_strict"} # Change the confidence level of interval for the median. # Note: check `?stat_mean_ci()` and `?stat_median_ci()` for further fine tuning. g53 <- g4 + stat_summary( @@ -213,16 +259,18 @@ plot <- g53 + guides(linetype = guide_legend(title = NULL)) plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "pre-processing", "plot4", "plot53")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/other/mng01.qmd b/book/graphs/other/mng01.qmd index 61ff248f05..5e71ad7e29 100644 --- a/book/graphs/other/mng01.qmd +++ b/book/graphs/other/mng01.qmd @@ -5,22 +5,18 @@ subtitle: Mean Plot ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) library(nestcolor) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") -advs <- synthetic_cdisc_dataset("latest", "advs") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb +advs <- random.cdisc.data::cadvs adsl_f <- adsl %>% filter(SAFFL == "Y") %>% @@ -52,7 +48,11 @@ advs_f <- advs %>% ## Plot of Mean
and CI -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = adlb_f, alt_counts_df = adsl_f, @@ -61,9 +61,17 @@ plot <- g_lineplot( plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Mean and CIs of Change
from Baseline (Changing the Input
Analysis Data Set and Analysis Variable) -```{r plot2, test = list(plot_v2 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = advs_f, alt_counts_df = adsl_f, @@ -74,9 +82,17 @@ plot <- g_lineplot( plot ``` +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Mean (+/-SD)
(Changing the Statistics) -```{r plot3, test = list(plot_v3 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot3, test = list(plot_v3 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = adlb_f, alt_counts_df = adsl_f, @@ -88,9 +104,17 @@ plot <- g_lineplot( plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Mean and CI
(Modify Alpha Level) -```{r plot4, test = list(plot_v4 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot4, test = list(plot_v4 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = adlb_f, alt_counts_df = adsl_f, @@ -101,9 +125,17 @@ plot <- g_lineplot( plot ``` +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Mean and CI (with Number
of Patients only in Table Section) -```{r plot5, test = list(plot_v5 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot5, test = list(plot_v5 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = adlb_f, alt_counts_df = adsl_f, @@ -113,9 +145,17 @@ plot <- g_lineplot( plot ``` +`r webr_code_labels <- c("setup", "plot5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Mean and CI
(with Table Section) -```{r plot6, fig.height = 8, test = list(plot_v6 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot6, fig.height = 8, test = list(plot_v6 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = adlb_f, alt_counts_df = adsl_f, @@ -125,13 +165,21 @@ plot <- g_lineplot( plot ``` +`r webr_code_labels <- c("setup", "plot6")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot of Median and CI (Visits
Condensed in Table Section) This option is not supported. ## Plot of Mean and
Upper Confidence Limit -```{r plot7, test = list(plot_v7 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot7, test = list(plot_v7 = "plot"), opts.label = "skip_test_strict"} plot <- g_lineplot( df = adlb_f, alt_counts_df = adsl_f, @@ -141,22 +189,36 @@ plot <- g_lineplot( plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot7")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) library(forcats) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") %>% + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb %>% mutate(AVISIT = fct_reorder(AVISIT, AVISITN, min)) }) datanames <- c("ADSL", "ADLB") @@ -193,5 +255,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/pharmacokinetic/pkcg01.qmd b/book/graphs/pharmacokinetic/pkcg01.qmd index 16e1405b0d..9898c88252 100644 --- a/book/graphs/pharmacokinetic/pkcg01.qmd +++ b/book/graphs/pharmacokinetic/pkcg01.qmd @@ -5,26 +5,26 @@ subtitle: Plot of PK Concentration Over Time by Subject ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) -adpc <- synthetic_cdisc_dataset("latest", "adpc") +adpc <- random.cdisc.data::cadpc ``` ## Plot in Linear Scale -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} adpc_a <- adpc %>% filter( PARAM == "Plasma Drug X", @@ -43,7 +43,7 @@ result <- g_ipp( xlab = "Norminal Time from First Dose (hr)", ylab = "Concentration (ug/mL)", id_var = "Patient_ID", - add_baseline_hline = F, + add_baseline_hline = FALSE, yvar_baseline = "AVAL", # yvar_baseline cannot be NA or ignore title = use_title, subtitle = use_subtitle, @@ -54,9 +54,17 @@ plot <- result[[1]] # only show the first subject plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot in Log Scale -```{r plot2, test = list(plot_v2 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} adpc_a <- adpc %>% filter( PARAM == "Plasma Drug X", @@ -76,27 +84,29 @@ result <- g_ipp( xlab = "Norminal Time from First Dose (hr)", ylab = "Concentration (ug/mL)", id_var = "Patient_ID", - add_baseline_hline = F, + add_baseline_hline = FALSE, yvar_baseline = "AVAL", # yvar_baseline cannot be NA or ignore title = use_title2, subtitle = use_subtitle2, caption = use_footnote2, plotting_choices = "separate_by_obs" ) -plot <- result[[1]] + ggplot2::scale_y_log10(breaks = c(0.001, 0.01, 0.1, 1, 10), label = c(0.001, 0.01, 0.1, 1, 10)) +plot <- result[[1]] + ggplot2::scale_y_log10(breaks = c(0.001, 0.01, 0.1, 1, 10), labels = c(0.001, 0.01, 0.1, 1, 10)) plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/pharmacokinetic/pkcg02.qmd b/book/graphs/pharmacokinetic/pkcg02.qmd index 0d379e4e52..6616c2abfd 100644 --- a/book/graphs/pharmacokinetic/pkcg02.qmd +++ b/book/graphs/pharmacokinetic/pkcg02.qmd @@ -5,26 +5,26 @@ subtitle: Plot of PK Concentration Over Time by Cohort/Treatment Group/Dose ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) -adpc <- synthetic_cdisc_dataset("latest", "adpc") +adpc <- random.cdisc.data::cadpc ``` ## Plot in Linear Scale -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} adpc_a <- adpc %>% filter( PARAM == "Plasma Drug X", @@ -44,7 +44,7 @@ plot <- g_ipp( xlab = "Norminal Time from First Dose (hr)", ylab = "Concentration (ug/mL)", id_var = "Patient_ID", - add_baseline_hline = F, + add_baseline_hline = FALSE, yvar_baseline = "AVAL", # yvar_baseline cannot be NA or ignore title = use_title1, subtitle = use_subtitle1, @@ -54,9 +54,17 @@ plot <- g_ipp( plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot in Log Scale -```{r plot2, test = list(plot_v2 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} adpc_a <- adpc %>% filter( PARAM == "Plasma Drug X", @@ -77,27 +85,29 @@ result <- g_ipp( xlab = "Norminal Time from First Dose (hr)", ylab = "Concentration (ug/mL)", id_var = "Patient_ID", - add_baseline_hline = F, + add_baseline_hline = FALSE, yvar_baseline = "AVAL", # yvar_baseline cannot be NA or ignore title = use_title3, caption = use_footnote3, subtitle = use_subtitle3, plotting_choices = "all_in_one" ) -plot <- result + ggplot2::scale_y_log10(breaks = c(0.001, 0.01, 0.1, 1, 10), label = c(0.001, 0.01, 0.1, 1, 10)) +plot <- result + ggplot2::scale_y_log10(breaks = c(0.001, 0.01, 0.1, 1, 10), labels = c(0.001, 0.01, 0.1, 1, 10)) plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/pharmacokinetic/pkcg03.qmd b/book/graphs/pharmacokinetic/pkcg03.qmd index 628ee8b145..9d5d49a48e 100644 --- a/book/graphs/pharmacokinetic/pkcg03.qmd +++ b/book/graphs/pharmacokinetic/pkcg03.qmd @@ -5,25 +5,21 @@ subtitle: Plot of Mean PK Concentration Over Time by Cohort ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) -adsl_f <- synthetic_cdisc_dataset("latest", "adsl") %>% +adsl_f <- random.cdisc.data::cadsl %>% filter(SAFFL == "Y" & ARM != "B: Placebo") %>% df_explicit_na() -adpc <- synthetic_cdisc_dataset("latest", "adpc") %>% +adpc <- random.cdisc.data::cadpc %>% mutate(Patient_ID = sub(".*id-", "", USUBJID)) %>% filter(PARAM == "Plasma Drug X") %>% droplevels() %>% @@ -32,7 +28,11 @@ adpc <- synthetic_cdisc_dataset("latest", "adpc") %>% ## Plot in Linear Scale -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} use_title <- "Plot of Mean (+/- SD) Plasma Concentrations Over Time by Treatment, \nPK Evaluable Patients" use_subtitle <- "Analyte:" use_footnote <- "Program: \nOutput:" @@ -63,9 +63,17 @@ plot <- result + theme(plot.caption = element_text(hjust = 0)) plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot in Log Scale -```{r plot2, warning=FALSE, test = list(plot_v2 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, warning = FALSE, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} use_title <- "Plot of Mean (+/- SD) Log-Scale Plasma Concentrations Over Time by Treatment, \nPK Evaluable Patients" use_subtitle <- "Analyte:" use_footnote <- "Program: \nOutput:" @@ -96,19 +104,22 @@ result <- g_lineplot( ) plot <- result + theme(plot.caption = element_text(hjust = 0)) + - ggplot2::scale_y_log10(breaks = c(0.001, 0.01, 0.1, 1, 10), label = c(0.001, 0.01, 0.1, 1, 10)) + ggplot2::scale_y_log10(breaks = c(0.001, 0.01, 0.1, 1, 10), labels = c(0.001, 0.01, 0.1, 1, 10)) plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/graphs/pharmacokinetic/pkpg01.qmd b/book/graphs/pharmacokinetic/pkpg01.qmd index 9c10e71350..54367195a8 100644 --- a/book/graphs/pharmacokinetic/pkpg01.qmd +++ b/book/graphs/pharmacokinetic/pkpg01.qmd @@ -5,23 +5,19 @@ subtitle: Plot of Mean Cumulative Percentage (%) of Recovered Drug in Urine ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) set.seed(123) # loading in the data -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp # filtering the rows for specific data entries adpp <- adpp %>% @@ -44,8 +40,12 @@ levels(adpp$ARM) <- c( ## Plot with Two Cohorts -```{r plot1, test = list(plot_v1 = "plot")} -use_title <- "Plot of Mean (+/- SD) Cummulative Percentage (%) of Recovered Drug in Urine \nby Analyte, Visit: PK Evaluable Patients" +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} +use_title <- "Plot of Mean (+/- SD) Cummulative Percentage (%) of Recovered Drug in Urine \nby Analyte, Visit: PK Evaluable Patients" # nolint: line_length. use_subtitle <- "Analyte: Plasma Drug X \nVisit: CYCLE 1 DAY 1 \nPK Parameter:" use_footnote <- "Program: \nOutput:" @@ -79,12 +79,20 @@ plot <- result + theme(plot.caption = element_text(hjust = 0)) + plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Six Cohorts +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + In this case we need to process the data further by artificially adding more random rows. Of course this step is not necessary in the case that data already has more cohorts. -```{r plot2, test = list(plot_v2 = "plot")} + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} adpp_hck <- adpp %>% mutate(AVAL + 1 * rnorm(nrow(adpp), mean = 1, sd = 1)) %>% mutate(ARM = as.factor(sample( @@ -101,7 +109,7 @@ adpp_hck <- adpp %>% adpp <- bind_rows(adpp, adpp_hck) -use_title <- "Plot of Mean (+/- SD) Cummulative Percentage (%) of Recovered Drug in Urine \nby Analyte, Visit: PK Evaluable Patients" +use_title <- "Plot of Mean (+/- SD) Cummulative Percentage (%) of Recovered Drug in Urine \nby Analyte, Visit: PK Evaluable Patients" # nolint: line_length. use_subtitle <- "Analyte: Plasma Drug X \nVisit: CYCLE 1 DAY 1 \nPK Parameter:" use_footnote <- "Program: \nOutput:" @@ -135,15 +143,18 @@ plot <- result + theme(plot.caption = element_text(hjust = 0)) + plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/graphs/pharmacokinetic/pkpg02.qmd b/book/graphs/pharmacokinetic/pkpg02.qmd index dbf056dc55..bfa98ab7f5 100644 --- a/book/graphs/pharmacokinetic/pkpg02.qmd +++ b/book/graphs/pharmacokinetic/pkpg02.qmd @@ -5,23 +5,19 @@ subtitle: Pharmacokinetic Parameter Summary of Serum PK Parameters by Treatment ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) # need adex for dose info and adpp for AUC max info -adex <- synthetic_cdisc_dataset("latest", "adex") -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adex <- random.cdisc.data::cadex +adpp <- random.cdisc.data::cadpp adpp_a <- adpp %>% filter( @@ -51,12 +47,16 @@ y_var <- "AUCinf" ## Summary of Pharmacokinetic
Parameters -- Plasma -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} # calculate Summary Statistics (mean and sd) for each group -SummaryStat <- adpp_adex %>% +SummaryStat <- adpp_adex %>% # nolint: object_name. group_by(Dose = as.factor(Dose)) %>% summarise(AUCsd = sd(AUCinf), meanAUC = mean(AUCinf)) -SummaryStat$Dose <- as.numeric(as.character(SummaryStat$Dose)) +SummaryStat$Dose <- as.numeric(as.character(SummaryStat$Dose)) # nolint: object_name. # generate linear model mod1 <- lm(log(AUCinf) ~ log(Dose), adpp_adex) @@ -82,7 +82,7 @@ plot <- ggplot(adpp_adex, aes(x = .data[[x_var]], y = .data[[y_var]])) + ) + scale_y_continuous( name = paste(y_var, adpp_a$AVALU), - trans = "log", + transform = "log", breaks = exp(ceiling(seq( from = min(log(adpp_adex$AUCinf)), to = max(log(adpp_adex$AUCinf)), by = 1 @@ -92,10 +92,12 @@ plot <- ggplot(adpp_adex, aes(x = .data[[x_var]], y = .data[[y_var]])) + to = max(log(adpp_adex$AUCinf)), by = 1 ))) ) + - geom_smooth(method = "lm", formula = y ~ x, se = F, color = "black", linewidth = 0.5) + + geom_smooth(method = "lm", formula = y ~ x, se = FALSE, color = "black", linewidth = 0.5) + # Display error bars for each dosing group (this will only appear if the sd is less than the mean) geom_errorbar( - data = SummaryStat, aes(x = `Dose`, y = `meanAUC`, ymin = `meanAUC` - `AUCsd`, ymax = `meanAUC` + AUCsd), width = .05, + data = SummaryStat, + aes(x = `Dose`, y = `meanAUC`, ymin = `meanAUC` - `AUCsd`, ymax = `meanAUC` + AUCsd), + width = .05, position = position_dodge(.1) ) + geom_point(data = SummaryStat, aes(x = Dose, y = meanAUC, size = 1), shape = 2, show.legend = FALSE) + @@ -109,25 +111,42 @@ plot <- ggplot(adpp_adex, aes(x = .data[[x_var]], y = .data[[y_var]])) + plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Summary of Plasma Pharmacokinetic
Parameters with Median Points -```{r plot2, test = list(plot_v2 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} # calculate median for each group if preferred -SummaryStat <- adpp_adex %>% +SummaryStat <- adpp_adex %>% # nolint: object_name. group_by(Dose = as.factor(Dose)) %>% summarise(medAUC = median(AUCinf)) -SummaryStat$Dose <- as.numeric(as.character(SummaryStat$Dose)) +SummaryStat$Dose <- as.numeric(as.character(SummaryStat$Dose)) # nolint: object_name. plot <- ggplot(adpp_adex, aes(x = .data[[x_var]], y = .data[[y_var]])) + annotate(geom = "text", x = min(adpp_adex[[x_var]]), y = max(adpp_adex[[y_var]]), label = eq, hjust = 0.1) + geom_point(size = 1, aes(color = factor(`count`))) + - geom_smooth(method = "lm", formula = y ~ x, se = F, color = "black", linewidth = 0.5) + + geom_smooth(method = "lm", formula = y ~ x, se = FALSE, color = "black", linewidth = 0.5) + geom_point(data = SummaryStat, aes(x = Dose, y = medAUC, size = 1), shape = 2, show.legend = FALSE) + - ggtitle(paste("Dose-Proportionality Plot of Serum", as.character(unique(adex$TRT01P)), y_var, "in", adpp_a$AVALU), subtitle = "Summary of serum PK parameters by treatment") + + ggtitle( + paste( + "Dose-Proportionality Plot of Serum", + as.character(unique(adex$TRT01P)), + y_var, + "in", + adpp_a$AVALU + ), + subtitle = "Summary of serum PK parameters by treatment" + ) + labs(color = "Treatment Arm") + scale_y_continuous( name = paste(y_var, adpp_a$AVALU), - trans = "log", + transform = "log", breaks = exp(ceiling(seq(from = min(log(adpp_adex$AUCinf)), to = max(log(adpp_adex$AUCinf)), by = 1))), labels = as.character(ceiling(seq(from = min(log(adpp_adex$AUCinf)), to = max(log(adpp_adex$AUCinf)), by = 1))) ) + @@ -140,16 +159,18 @@ plot <- ggplot(adpp_adex, aes(x = .data[[x_var]], y = .data[[y_var]])) + plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/pharmacokinetic/pkpg03.qmd b/book/graphs/pharmacokinetic/pkpg03.qmd index 8f23a9c8c3..10afa556b1 100644 --- a/book/graphs/pharmacokinetic/pkpg03.qmd +++ b/book/graphs/pharmacokinetic/pkpg03.qmd @@ -5,31 +5,37 @@ subtitle: Box Plot of Pharmacokinetic Parameters by Visit -- Plasma ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(nestcolor) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp ``` ## Plot of CMAX by Visit -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} # filtered parameter adpp <- adpp %>% filter(PARAMCD == "CMAX", PPSPEC == "Plasma") use_title <- paste0("Boxplot of ", as.character(unique(adpp$PARAM)), " by Visit") -use_subtitle <- paste0("Analyte:\nPK Parameter: ", as.character(unique(adpp$PARAM)), " (", as.character(unique(adpp$AVALU)), ")") +use_subtitle <- paste0( + "Analyte:\nPK Parameter: ", + as.character(unique(adpp$PARAM)), + " (", + as.character(unique(adpp$AVALU)), + ")" +) use_footnote <- "Program: \nOutput:" plot <- ggplot(adpp, aes(x = AVISIT, y = AVAL, fill = ACTARM)) + @@ -54,8 +60,18 @@ plot <- ggplot(adpp, aes(x = AVISIT, y = AVAL, fill = ACTARM)) + plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: -{{< include ../../repro.qmd >}} +## Data Setup -::: +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/pharmacokinetic/pkpg04.qmd b/book/graphs/pharmacokinetic/pkpg04.qmd index dc4414bcbb..a9cc364dd9 100644 --- a/book/graphs/pharmacokinetic/pkpg04.qmd +++ b/book/graphs/pharmacokinetic/pkpg04.qmd @@ -5,32 +5,38 @@ subtitle: Box Plot of Pharmacokinetic Parameters by Visit -- Plasma ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(ggplot2) library(ggrepel) library(nestcolor) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp ``` ## Plot of CMAX by Visit -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} # filtered parameter adpp <- adpp %>% filter(toupper(PARAMCD) == "CMAX" & toupper(PPSPEC) == "PLASMA") use_title <- paste0("Boxplot of ", as.character(unique(adpp$PARAM)), " by Visit") -use_subtitle <- paste0("Analyte:\nPK Parameter: ", as.character(unique(adpp$PARAM)), " (", as.character(unique(adpp$AVALU)), ")") +use_subtitle <- paste0( + "Analyte:\nPK Parameter: ", + as.character(unique(adpp$PARAM)), + " (", + as.character(unique(adpp$AVALU)), + ")" +) use_footnote <- "Program: \nOutput:" p <- ggplot(adpp, aes(x = AVISIT, y = AVAL, fill = ACTARM)) + @@ -56,8 +62,18 @@ plot <- p + geom_point(aes(fill = ACTARM), size = 2, shape = 21, position = posi plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: -{{< include ../../repro.qmd >}} +## Data Setup -::: +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/graphs/pharmacokinetic/pkpg06.qmd b/book/graphs/pharmacokinetic/pkpg06.qmd index 36bb4bf297..150b584e24 100644 --- a/book/graphs/pharmacokinetic/pkpg06.qmd +++ b/book/graphs/pharmacokinetic/pkpg06.qmd @@ -5,22 +5,18 @@ subtitle: Boxplot of Metabolite to Parent Ratios by Treatment ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(ggplot2) library(tidyr) library(tern) library(nestcolor) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp # Filter NAs adpp <- adpp %>% @@ -64,19 +60,39 @@ outliers <- function(x) { #### Drug X Boxplot -```{r plot1, test = list(plot_v1 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot1, test = list(plot_v1 = "plot"), opts.label = "skip_test_strict"} plot <- ggplot(anl_x, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + geom_boxplot(outlier.size = 2) + stat_boxplot(geom = "errorbar") + - stat_summary(geom = "point", fun = "mean", col = "black", size = 5, shape = 8, position = position_dodge(0.75)) + + stat_summary( + geom = "point", + fun = "mean", + col = "black", + size = 5, + shape = 8, + position = position_dodge(0.75) + ) + geom_text( data = . %>% dplyr::group_by(PARAMCD, ACTARM) %>% dplyr::filter(ratio %in% boxplot.stats(ratio)$out), aes(x = PARAMCD, y = ratio, label = USUBJID, col = ACTARM), - size = 3, hjust = -0.2, position = position_dodge(0.75), show.legend = F + size = 3, + hjust = -0.2, + position = position_dodge(0.75), + show.legend = FALSE ) + labs( title = "Boxplot of Metabolite to Parent Ratios by Treatment", - subtitle = paste0("Analyte: Plasma Drug X, Metabolite Drug X ", "\nPK Parameter: ", as.character(paste(unique(anl_x$PARAMCD), collapse = ", ")), "\nVisit: ", as.character((unique(anl_x$AVISIT)))), + subtitle = paste0( + "Analyte: Plasma Drug X, Metabolite Drug X ", + "\nPK Parameter: ", + as.character(paste(unique(anl_x$PARAMCD), collapse = ", ")), + "\nVisit: ", + as.character((unique(anl_x$AVISIT))) + ), caption = "Program: \nOutput:", x = "Parameter", y = "Metabolite to Parent Ratio" @@ -88,21 +104,45 @@ plot <- ggplot(anl_x, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + plot ``` +`r webr_code_labels <- c("setup", "plot1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Drug Y Boxplot -```{r plot2, test = list(plot_v2 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot2, test = list(plot_v2 = "plot"), opts.label = "skip_test_strict"} plot <- ggplot(anl_y, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + geom_boxplot(outlier.size = 2) + stat_boxplot(geom = "errorbar") + - stat_summary(geom = "point", fun = "mean", col = "black", size = 5, shape = 8, position = position_dodge(0.75)) + + stat_summary( + geom = "point", + fun = "mean", + col = "black", + size = 5, + shape = 8, + position = position_dodge(0.75) + ) + geom_text( data = . %>% dplyr::group_by(PARAMCD, ACTARM) %>% dplyr::filter(ratio %in% boxplot.stats(ratio)$out), aes(x = PARAMCD, y = ratio, label = USUBJID, color = ACTARM), - size = 3, hjust = -0.2, position = position_dodge(0.75), show.legend = F + size = 3, + hjust = -0.2, + position = position_dodge(0.75), + show.legend = FALSE ) + labs( title = "Boxplot of Metabolite to Parent Ratios by Treatment", - subtitle = paste0("Analyte: Plasma Drug Y, Metabolite Drug Y ", "\nPK Parameter: ", as.character(paste(unique(anl_y$PARAMCD), collapse = ", ")), "\nVisit: ", as.character((unique(anl_y$AVISIT)))), + subtitle = paste0( + "Analyte: Plasma Drug Y, Metabolite Drug Y ", + "\nPK Parameter: ", + as.character(paste(unique(anl_y$PARAMCD), collapse = ", ")), + "\nVisit: ", + as.character((unique(anl_y$AVISIT))) + ), caption = "Program: \nOutput:", x = "Parameter", y = "Metabolite to Parent Ratio" @@ -114,9 +154,17 @@ plot <- ggplot(anl_y, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + plot ``` +`r webr_code_labels <- c("setup", "plot2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Whiskers at
Minimum and Maximum Values -```{r plot3, test = list(plot_v3 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot3, test = list(plot_v3 = "plot"), opts.label = "skip_test_strict"} # whiskers are formed with the minimum and maximum values plot <- ggplot(anl_x, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + geom_boxplot(outlier.size = 0) + @@ -124,7 +172,13 @@ plot <- ggplot(anl_x, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + stat_summary(geom = "point", fun = "mean", col = "black", size = 5, shape = 8, position = position_dodge(0.75)) + labs( title = "Boxplot of Metabolite to Parent Ratios by Treatment", - subtitle = paste0("Analyte: Plasma Drug X, Metabolite Drug X ", "\nPK Parameter: ", as.character(paste(unique(anl_x$PARAMCD), collapse = ", ")), "\nVisit: ", as.character((unique(anl_x$AVISIT)))), + subtitle = paste0( + "Analyte: Plasma Drug X, Metabolite Drug X ", + "\nPK Parameter: ", + as.character(paste(unique(anl_x$PARAMCD), collapse = ", ")), + "\nVisit: ", + as.character((unique(anl_x$AVISIT))) + ), caption = "Program:\nOutput:", x = "Parameter", y = "Metabolite to Parent Ratio" @@ -136,9 +190,17 @@ plot <- ggplot(anl_x, aes(x = PARAMCD, y = ratio, fill = ACTARM)) + plot ``` +`r webr_code_labels <- c("setup", "plot3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Plot with Whiskers at
5th and 95th Percentiles -```{r plot4, test = list(plot_v4 = "plot")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r plot4, test = list(plot_v4 = "plot"), opts.label = "skip_test_strict"} anl_x_without_outliers <- anl_x %>% dplyr::group_by(PARAMCD, ACTARM) %>% dplyr::mutate(outlier = ifelse(outliers(ratio), ratio, as.numeric(NA))) @@ -147,24 +209,45 @@ plot <- ggplot(anl_x, aes(PARAMCD, ratio, fill = ACTARM, label = USUBJID)) + fun.data = quantiles, geom = "boxplot", position = position_dodge(1) ) + - stat_summary(geom = "point", fun = "mean", col = "black", size = 5, shape = 8, position = position_dodge(1)) + + stat_summary( + geom = "point", + fun = "mean", + col = "black", + size = 5, + shape = 8, + position = position_dodge(1) + ) + stat_summary( fun.data = quantiles, geom = "errorbar", position = position_dodge(1) ) + geom_point( data = anl_x_without_outliers, - aes(x = PARAMCD, y = outlier), na.rm = T, - size = 2, position = position_dodge(1), show.legend = F + aes(x = PARAMCD, y = outlier), + na.rm = TRUE, + size = 2, + position = position_dodge(1), + show.legend = FALSE ) + geom_text( data = anl_x_without_outliers, - aes(x = PARAMCD, y = outlier, label = USUBJID, color = ACTARM), na.rm = T, - size = 3, hjust = -0.2, vjust = 1, position = position_dodge(1), show.legend = F + aes(x = PARAMCD, y = outlier, label = USUBJID, color = ACTARM), + na.rm = TRUE, + size = 3, + hjust = -0.2, + vjust = 1, + position = position_dodge(1), + show.legend = FALSE ) + labs( title = "Boxplot of Metabolite to Parent Ratios by Treatment", - subtitle = paste0("Analyte: Plasma Drug X, Metabolite Drug X ", "\nPK Parameter: ", as.character(paste(unique(anl_x$PARAMCD), collapse = ", ")), "\nVisit: ", as.character((unique(anl_x$AVISIT)))), + subtitle = paste0( + "Analyte: Plasma Drug X, Metabolite Drug X ", + "\nPK Parameter: ", + as.character(paste(unique(anl_x$PARAMCD), collapse = ", ")), + "\nVisit: ", + as.character((unique(anl_x$AVISIT))) + ), caption = "Program: \nOutput:", x = "Parameter", y = "Metabolite to Parent Ratio" @@ -176,16 +259,18 @@ plot <- ggplot(anl_x, aes(PARAMCD, ratio, fill = ACTARM, label = USUBJID)) + plot ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "plot4")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/index.qmd b/book/index.qmd index 9749869e12..542a1b8b2c 100644 --- a/book/index.qmd +++ b/book/index.qmd @@ -1,16 +1,9 @@ --- -title: "TLG Catalog" -subtitle: "Tables, Listings, and Graphs Catalog" +title-block-style: none +format: + html: + code-tools: + source: false --- - - -## Introduction - -A catalog of Tables, Listings, and Graphs output produced by NEST tools. - -**See the full index of available TLG templates on the [Index page](tlg-index.qmd).** - -## License - -This catalog as well as code examples are licensed under the Apache License, Version 2.0. +{{< include README.md >}} diff --git a/book/listings/ADA/adal02.qmd b/book/listings/ADA/adal02.qmd index 9ddcaf7f56..07f92b81ef 100644 --- a/book/listings/ADA/adal02.qmd +++ b/book/listings/ADA/adal02.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Anti-Drug Antibody Data for Treatment Emergent ADA Positive ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -library(scda) -adab <- synthetic_cdisc_dataset("latest", "adab") %>% +adab <- random.cdisc.data::cadab %>% filter(NFRLT %% 1 == 0 & NFRLT > 0) trt <- "A: Drug X" @@ -50,7 +46,7 @@ adab_x <- adab %>% ")" )), PTES = ifelse( - ifelse("Treatment induced ADA" %in% names(.), `Treatment induced ADA` == 1, F), + ifelse("Treatment induced ADA" %in% names(.), `Treatment induced ADA` == 1, FALSE), ifelse( "Transient ADA" %in% names(.) & `Transient ADA` == 1, "Induced (Transient)", @@ -62,10 +58,10 @@ adab_x <- adab %>% mutate( AVAL = paste0( ifelse( - ifelse("ADA interpreted per sample result" %in% names(.), `ADA interpreted per sample result` == 0, F), + ifelse("ADA interpreted per sample result" %in% names(.), `ADA interpreted per sample result` == 0, FALSE), "NEGATIVE", ifelse( - ifelse("Antibody titer units" %in% names(.), !is.na(`Antibody titer units`), F), + ifelse("Antibody titer units" %in% names(.), !is.na(`Antibody titer units`), FALSE), ifelse( `Antibody titer units` < min_titer, paste0("<", format(min_titer, nsmall = 2)), @@ -75,7 +71,7 @@ adab_x <- adab %>% ) ), ifelse( - ifelse("NAB interpreted per sample result" %in% names(.), `NAB interpreted per sample result` == 1, F), + ifelse("NAB interpreted per sample result" %in% names(.), `NAB interpreted per sample result` == 1, FALSE), "*", "" ) @@ -101,6 +97,9 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -111,6 +110,7 @@ lsting <- as_listing( "\nProtocol: ", unique(adab$PARCAT1)[1] ), subtitles = paste("\nTreatment Group:", trt), + # nolint start: line_length. main_footer = "Minimum reportable titer = 1.10 (example only) --- = No sample evaluated ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) @@ -120,12 +120,24 @@ Treatment-enhanced ADA = a patient with positive ADA result at baseline who has Transient ADA = ADA positive result detected (a) at only one post-baseline sampling timepoint (excluding last timepoint) OR (b) at 2 or more timepoints during treatment where the first and last ADA positive samples are separated by a period of < 16 weeks, irrespective of any negative samples in between. Persistent ADA = ADA positive result detected (a) at the last post-baseline sampling timepoint, OR (b) at 2 or more time points during treatment where the first and last ADA positive samples are separated by a period β‰₯ 16 weeks, irrespective of any negative samples in between. Asterisk denotes sample that tested positive for Neutralizing Antibodies." + # nolint end: line_length. ) head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/ECG/egl01.qmd b/book/listings/ECG/egl01.qmd index 09fbc0fb1e..980d0380ac 100644 --- a/book/listings/ECG/egl01.qmd +++ b/book/listings/ECG/egl01.qmd @@ -5,19 +5,15 @@ subtitle: 'Listing of ECG Data: Safety-Evaluable Patients' ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adeg <- synthetic_cdisc_dataset("latest", "adeg") +adeg <- random.cdisc.data::cadeg get_param_unit_range <- function(dataset) { u_rng <- lapply(unique(dataset$PARAMCD), function(p) { @@ -52,7 +48,19 @@ anl_eg <- adeg_sub %>% ) out <- anl_eg %>% - select(CRTNPT, AGSXRC, TRT01A, AVISIT, ADY, AVAL_ANRIND_HR, CHG_HR, AVAL_ANRIND_QT, CHG_QT, AVAL_ANRIND_RR, CHG_RR) %>% + select( + CRTNPT, + AGSXRC, + TRT01A, + AVISIT, + ADY, + AVAL_ANRIND_HR, + CHG_HR, + AVAL_ANRIND_QT, + CHG_QT, + AVAL_ANRIND_RR, + CHG_RR + ) %>% var_relabel( CRTNPT = "Center/Subject ID", AGSXRC = "Age/Sex/Race", @@ -70,20 +78,33 @@ out <- anl_eg %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "CRTNPT", "AGSXRC", "AVISIT", "ADY"), disp_cols = names(out), main_title = "Listing of ECG Data: Safety-Evaluable Patients", - main_footer = "Baseline is the patient's last observation prior to initiation of study drug. Abnormalities are flagged as high (H) or low (L) if - outside the Roche standard reference range." + main_footer = "Baseline is the patient's last observation prior to initiation of study drug. Abnormalities are flagged as high (H) or low (L) if outside the Roche standard reference range." # nolint: line_length. ) head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/adverse-events/ael01.qmd b/book/listings/adverse-events/ael01.qmd index fce76f5b38..c3598856dc 100644 --- a/book/listings/adverse-events/ael01.qmd +++ b/book/listings/adverse-events/ael01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Preferred Terms, Lowest Level Terms, and Investigator-Speci ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae out <- adae %>% select(AESOC, AEDECOD, AELLT, AETERM) %>% @@ -33,6 +29,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -44,7 +43,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/adverse-events/ael01_nollt.qmd b/book/listings/adverse-events/ael01_nollt.qmd index 3c75e89c4b..70e7c6eca8 100644 --- a/book/listings/adverse-events/ael01_nollt.qmd +++ b/book/listings/adverse-events/ael01_nollt.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Preferred Terms and Investigator-Specified Adverse Event Te ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae out <- adae %>% select(AESOC, AEDECOD, AETERM) %>% @@ -32,6 +28,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -43,7 +42,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/adverse-events/ael02.qmd b/book/listings/adverse-events/ael02.qmd index 874acd0db4..cf0b46820f 100644 --- a/book/listings/adverse-events/ael02.qmd +++ b/book/listings/adverse-events/ael02.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Adverse Events ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae out <- adae %>% mutate( @@ -67,16 +63,21 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "CPID", "ASR"), disp_cols = names(out), main_title = "Listing of Adverse Events", - main_footer = "(1) Outcome: 1 = fatal; 2 = not recovered/not resolved; 3 = recovered/resolved; 4 = recovered/resolved with sequelae; 5 = - recovering/resolving; 6 = unknown. -(2) Action taken with study drug: 1 = dose increased; 2 = dose not changed; 3 = dose reduced; 4 = drug interrupted; 5 = drug - withdrawn; 6 = not applicable; 7 = unknown. + main_footer = " +(1) Outcome: 1 = fatal; 2 = not recovered/not resolved; 3 = recovered/resolved; + 4 = recovered/resolved with sequelae; 5 = recovering/resolving; 6 = unknown. +(2) Action taken with study drug: 1 = dose increased; 2 = dose not changed; + 3 = dose reduced; 4 = drug interrupted; 5 = drug withdrawn; 6 = not applicable; + 7 = unknown. * Study day derived from imputed onset date. ** Duration derived from imputed onset date and/or end date." ) @@ -84,7 +85,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/adverse-events/ael02_ed.qmd b/book/listings/adverse-events/ael02_ed.qmd index f78fb2565b..6c18dcdebc 100644 --- a/book/listings/adverse-events/ael02_ed.qmd +++ b/book/listings/adverse-events/ael02_ed.qmd @@ -5,20 +5,16 @@ subtitle: Listing of Adverse Events (for Early Development Studies) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) library(lubridate) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae adae_anl <- adae %>% filter(SAFFL == "Y") %>% @@ -85,16 +81,21 @@ out <- out %>% var_relabel( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "cent_subj", "ASR"), disp_cols = names(out), main_title = "Listing of Adverse Events (for early development studies)", - main_footer = "(1) Outcome: 1 = fatal; 2 = not recovered/not resolved; 3 = recovered/resolved; 4 = recovered/resolved with sequelae; 5 = - recovering/resolving; 6 = unknown. -(2) Action taken with study drug: 1 = dose increased; 2 = dose not changed; 3 = dose reduced; 4 = drug interrupted; 5 = drug - withdrawn; 6 = not applicable; 7 = unknown. + main_footer = " +(1) Outcome: 1 = fatal; 2 = not recovered/not resolved; 3 = recovered/resolved; + 4 = recovered/resolved with sequelae; 5 = recovering/resolving; 6 = unknown. +(2) Action taken with study drug: 1 = dose increased; 2 = dose not changed; + 3 = dose reduced; 4 = drug interrupted; 5 = drug withdrawn; 6 = not applicable; + 7 = unknown. * Study day derived from imputed onset date. ** Duration derived from imputed onset date and/or end date." ) @@ -102,7 +103,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/adverse-events/ael03.qmd b/book/listings/adverse-events/ael03.qmd index 7df92d0311..ec6cbec0da 100644 --- a/book/listings/adverse-events/ael03.qmd +++ b/book/listings/adverse-events/ael03.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Serious Adverse Events ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae out <- adae %>% filter(AESER == "Y") %>% @@ -76,20 +72,26 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "CPID", "ASR"), disp_cols = names(out), main_title = "Listing of Serious Adverse Events", - main_footer = "(1) Outcome: 1 = fatal; 2 = not recovered/not resolved; 3 = recovered/resolved; 4 = recovered/resolved with sequelae; - 5 = recovering/resolving; 6 = unknown. -(2) Action taken with study drug: 1 = dose increased; 2 = dose not changed; 3 = dose reduced; 4 = drug interrupted; 5 = drug - withdrawn; 6 = not applicable; 7 = unknown. -(3) Reason classified as serious: 1 = resulted in death; 2 = life threatening; 3 = required prolonged in patient - hospitalization; 4 = disabling; 5 = a congenital anomaly/birth defect in offspring of study subject; 6 = does not meet any of - the above serious criteria, but may jeopardize the subject, and may require medical or surgical intervention to prevent one of - the outcomes listed above. + main_footer = " +(1) Outcome: 1 = fatal; 2 = not recovered/not resolved; 3 = recovered/resolved; + 4 = recovered/resolved with sequelae; 5 = recovering/resolving; 6 = unknown. +(2) Action taken with study drug: 1 = dose increased; 2 = dose not changed; + 3 = dose reduced; 4 = drug interrupted; 5 = drug withdrawn; 6 = not applicable; + 7 = unknown. +(3) Reason classified as serious: 1 = resulted in death; 2 = life threatening; + 3 = required prolonged in patient hospitalization; 4 = disabling; + 5 = a congenital anomaly/birth defect in offspring of study subject; + 6 = does not meet any of the above serious criteria, but may jeopardize the subject, + and may require medical or surgical intervention to prevent one of the outcomes listed above. * Study day derived from imputed onset date. ** Duration derived from imputed onset date and/or end date." ) @@ -97,7 +99,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/adverse-events/ael04.qmd b/book/listings/adverse-events/ael04.qmd index da50b8f9e8..2ecc423a60 100644 --- a/book/listings/adverse-events/ael04.qmd +++ b/book/listings/adverse-events/ael04.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Patient Deaths ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl out <- adsl %>% filter(!is.na(DTHADY)) %>% @@ -43,6 +39,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -54,7 +53,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/concomitant-medications/cml01.qmd b/book/listings/concomitant-medications/cml01.qmd index 7893dd6b78..2e628f7235 100644 --- a/book/listings/concomitant-medications/cml01.qmd +++ b/book/listings/concomitant-medications/cml01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Previous and Concomitant Medications ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adcm <- synthetic_cdisc_dataset("latest", "adcm") +adcm <- random.cdisc.data::cadcm out <- adcm %>% filter(!is.na(CMDECOD)) %>% @@ -54,6 +50,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -65,7 +64,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/concomitant-medications/cml02a_gl.qmd b/book/listings/concomitant-medications/cml02a_gl.qmd index 9c036e63db..b8b97465d3 100644 --- a/book/listings/concomitant-medications/cml02a_gl.qmd +++ b/book/listings/concomitant-medications/cml02a_gl.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Concomitant Medication Class Level 2, Preferred Name, and I ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adcm <- synthetic_cdisc_dataset("latest", "adcm") +adcm <- random.cdisc.data::cadcm out <- adcm %>% select(ATC2, CMDECOD, CMTRT) %>% @@ -32,6 +28,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -43,7 +42,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/concomitant-medications/cml02b_gl.qmd b/book/listings/concomitant-medications/cml02b_gl.qmd index 8bab7492b5..773c1735c7 100644 --- a/book/listings/concomitant-medications/cml02b_gl.qmd +++ b/book/listings/concomitant-medications/cml02b_gl.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Concomitant Medication Class, Preferred Name, and Investiga ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adcm <- synthetic_cdisc_dataset("latest", "adcm") +adcm <- random.cdisc.data::cadcm out <- adcm %>% select(ATC1, ATC2, ATC3, ATC4, CMDECOD, CMTRT) %>% @@ -35,6 +31,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -46,7 +45,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/development-safety-update-report/dsur4.qmd b/book/listings/development-safety-update-report/dsur4.qmd index 563eeff070..68fd97a91e 100644 --- a/book/listings/development-safety-update-report/dsur4.qmd +++ b/book/listings/development-safety-update-report/dsur4.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Patients Who Died During Reporting Period ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl out <- adsl %>% filter(DTHFL == "Y") %>% @@ -33,6 +29,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -45,7 +44,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/disposition/dsl01.qmd b/book/listings/disposition/dsl01.qmd index 37f6f209bf..eb3032e860 100644 --- a/book/listings/disposition/dsl01.qmd +++ b/book/listings/disposition/dsl01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Patients with Study Drug Withdrawn Due to Adverse Events ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl out <- adsl %>% filter(AEWITHFL == "Y") %>% @@ -42,6 +38,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -53,7 +52,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/disposition/dsl02.qmd b/book/listings/disposition/dsl02.qmd index 61bdf22d73..a8ef9e40c4 100644 --- a/book/listings/disposition/dsl02.qmd +++ b/book/listings/disposition/dsl02.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Patients Who Discontinued Early from Study ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl out <- adsl %>% filter(AEWITHFL == "Y") %>% @@ -50,6 +46,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -61,7 +60,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/efficacy/oncl01.qmd b/book/listings/efficacy/oncl01.qmd index 55fc35abb5..8dd8e2c6c3 100644 --- a/book/listings/efficacy/oncl01.qmd +++ b/book/listings/efficacy/oncl01.qmd @@ -5,21 +5,17 @@ subtitle: Listing of Individual Efficacy Data ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -adrs <- synthetic_cdisc_dataset("latest", "adrs") -adtte <- synthetic_cdisc_dataset("latest", "adtte") -adex <- synthetic_cdisc_dataset("latest", "adex") +adrs <- random.cdisc.data::cadrs +adtte <- random.cdisc.data::cadtte +adex <- random.cdisc.data::cadex out_ex <- adex %>% filter(PARAMCD == "TNDOSE") %>% @@ -59,14 +55,21 @@ out_tte <- adtte_flt %>% c("Overall Survival (DAYS)", "Progression Free Survival (DAYS)", "Duration of Confirmed Response (DAYS)"), function(x) format(round(x, 1), nsmall = 1) ) %>% - select(ID, TRT01A, `Overall Survival (DAYS)`, `Progression Free Survival (DAYS)`, `Duration of Confirmed Response (DAYS)`) %>% + select( + ID, + TRT01A, + `Overall Survival (DAYS)`, + `Progression Free Survival (DAYS)`, + `Duration of Confirmed Response (DAYS)` + ) %>% right_join(out_trg, ., by = "ID", multiple = "all") out <- out_tte %>% right_join(out_rs, ., by = "ID", multiple = "all") %>% select( - "ID", "TRT01A", "AVAL", "Best Confirmed Overall Response by Investigator", "Investigator End Of Induction Response", "Overall Survival (DAYS)", - "Progression Free Survival (DAYS)", "trigeventpfs", "Duration of Confirmed Response (DAYS)" + "ID", "TRT01A", "AVAL", "Best Confirmed Overall Response by Investigator", + "Investigator End Of Induction Response", "Overall Survival (DAYS)", "Progression Free Survival (DAYS)", + "trigeventpfs", "Duration of Confirmed Response (DAYS)" ) var_labels(out) <- names(out) @@ -86,6 +89,9 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -98,7 +104,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/exposure/exl01.qmd b/book/listings/exposure/exl01.qmd index 2b393dc277..efafdb13a2 100644 --- a/book/listings/exposure/exl01.qmd +++ b/book/listings/exposure/exl01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Exposure to Study Drug ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adex <- synthetic_cdisc_dataset("latest", "adex") +adex <- random.cdisc.data::cadex out <- adex %>% filter(PARAMCD == "DOSE" & !is.na(AVAL) & SAFFL == "Y") %>% @@ -42,6 +38,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -53,7 +52,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/lab-results/lbl01.qmd b/book/listings/lab-results/lbl01.qmd index 8eeb6ba4ce..0725eff14b 100644 --- a/book/listings/lab-results/lbl01.qmd +++ b/book/listings/lab-results/lbl01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Laboratory Test Results ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adlb <- random.cdisc.data::cadlb adlb_x <- adlb %>% filter(!is.na(AVAL) & !is.na(LBSEQ) & !is.na(ADY) & ANRIND != "") %>% @@ -66,6 +62,9 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -78,7 +77,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/lab-results/lbl01_rls.qmd b/book/listings/lab-results/lbl01_rls.qmd index cad556d1df..a779e9863b 100644 --- a/book/listings/lab-results/lbl01_rls.qmd +++ b/book/listings/lab-results/lbl01_rls.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Laboratory Test Results Using Roche Safety Lab Standardizat ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adlb <- synthetic_cdisc_dataset("latest", "adlb") %>% +adlb <- random.cdisc.data::cadlb %>% filter(!is.na(AVAL)) adlb_x <- adlb %>% @@ -71,20 +67,33 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "CPID"), disp_cols = names(out), main_title = "Listing of Laboratory Test Results Using Roche Safety Lab Standardization", - main_footer = "Abnormalities are flagged as high (H) or low (L) if outside the Roche standard reference range; high high (HH) or low low (LL) if - outside the Roche marked reference range with a clinically relevant change from baseline. " + main_footer = "Abnormalities are flagged as high (H) or low (L) if outside the Roche standard reference range; high high (HH) or low low (LL) if outside the Roche marked reference range with a clinically relevant change from baseline. " # nolint: line_length. ) head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/lab-results/lbl02a.qmd b/book/listings/lab-results/lbl02a.qmd index 1b43e4910d..681fde0a51 100644 --- a/book/listings/lab-results/lbl02a.qmd +++ b/book/listings/lab-results/lbl02a.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Laboratory Abnormalities (constant units) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adlb <- random.cdisc.data::cadlb adlb_x <- adlb %>% filter( @@ -66,6 +62,9 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -78,7 +77,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/lab-results/lbl02a_rls.qmd b/book/listings/lab-results/lbl02a_rls.qmd index 0784e3979a..690955f890 100644 --- a/book/listings/lab-results/lbl02a_rls.qmd +++ b/book/listings/lab-results/lbl02a_rls.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Laboratory Abnormalities Defined by Roche Safety Lab Standa ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adlb <- random.cdisc.data::cadlb adlb_x <- adlb %>% filter( @@ -86,21 +82,33 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "LBTEST_U", "CPID"), disp_cols = names(out), main_title = "Listing of Laboratory Abnormalities Defined by Roche Safety Lab Standardization", - main_footer = "Standard reference range, marked reference range and clinically relevant change from baseline are from the Roche Safety Lab -Standardization guideline. Abnormalities are flagged as high (H) or low (L) if outside the standard reference range; high high (HH) -or low low (LL) if outside the marked reference range with a clinically relevant change from baseline." + main_footer = "Standard reference range, marked reference range and clinically relevant change from baseline are from the Roche Safety Lab Standardization guideline. Abnormalities are flagged as high (H) or low (L) if outside the standard reference range; high high (HH) or low low (LL) if outside the marked reference range with a clinically relevant change from baseline." # nolint: line_length. ) head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/lab-results/lbl02b.qmd b/book/listings/lab-results/lbl02b.qmd index 893c71162e..e51b9408f6 100644 --- a/book/listings/lab-results/lbl02b.qmd +++ b/book/listings/lab-results/lbl02b.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Laboratory Abnormalities (variable units) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adlb <- random.cdisc.data::cadlb adlb_x <- adlb %>% filter( @@ -67,6 +63,9 @@ out <- out %>% ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -79,7 +78,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/medical-history/mhl01.qmd b/book/listings/medical-history/mhl01.qmd index ba30b1f86a..570a9f2b44 100644 --- a/book/listings/medical-history/mhl01.qmd +++ b/book/listings/medical-history/mhl01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Medical History and Concurrent Diseases ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -admh <- synthetic_cdisc_dataset("latest", "admh") +admh <- random.cdisc.data::cadmh out <- admh %>% mutate( @@ -46,6 +42,9 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -57,7 +56,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/pharmacokinetic/pkcl01.qmd b/book/listings/pharmacokinetic/pkcl01.qmd index 2b1a11d3e1..2217e7a466 100644 --- a/book/listings/pharmacokinetic/pkcl01.qmd +++ b/book/listings/pharmacokinetic/pkcl01.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Drug A Concentration by Treatment Group, Patient and Nomina ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(rlistings) -library(scda) library(dplyr) -adpc <- synthetic_cdisc_dataset("latest", "adpc") +adpc <- random.cdisc.data::cadpc analyte <- "Plasma Drug X" @@ -37,19 +33,37 @@ var_labels(out) <- c( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("ARM", "USUBJID", "VISIT"), disp_cols = names(out), - main_title = paste("Listing of", analyte, "Concentration by Treatment Group, Subject and Nominal Time, PK Population\nProtocol: xxnnnnn"), + main_title = paste( + "Listing of", + analyte, + "Concentration by Treatment Group, Subject and Nominal Time, PK Population\nProtocol: xxnnnnn" + ), subtitles = paste("Analyte:", analyte) ) head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/pharmacokinetic/pkcl02.qmd b/book/listings/pharmacokinetic/pkcl02.qmd index cf5d5d2e8c..10582c9a8d 100644 --- a/book/listings/pharmacokinetic/pkcl02.qmd +++ b/book/listings/pharmacokinetic/pkcl02.qmd @@ -5,22 +5,18 @@ subtitle: Listing of Drug A Urine Concentration and Volumes ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -library(scda) drug_a <- "Drug X" spec <- "URINE" -adpc <- synthetic_cdisc_dataset("latest", "adpc") +adpc <- random.cdisc.data::cadpc adpc_x <- adpc %>% mutate(REGIMEN = ifelse("REGIMEN" %in% names(adpc), REGIMEN, "BID")) %>% filter( @@ -71,6 +67,9 @@ out <- out %>% var_relabel( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -86,7 +85,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/pharmacokinetic/pkpl01.qmd b/book/listings/pharmacokinetic/pkpl01.qmd index ac47b0053c..40e5173690 100644 --- a/book/listings/pharmacokinetic/pkpl01.qmd +++ b/book/listings/pharmacokinetic/pkpl01.qmd @@ -5,22 +5,18 @@ subtitle: Listing of Drug A Plasma PK Parameters ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -library(scda) drug_a <- "Plasma Drug X" spec <- "Plasma" -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp_x <- adpp %>% filter( PPCAT == drug_a, PPSPEC == spec @@ -45,6 +41,9 @@ out <- out %>% var_relabel( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -57,7 +56,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/pharmacokinetic/pkpl02.qmd b/book/listings/pharmacokinetic/pkpl02.qmd index 1d2144ffbc..f55073430b 100644 --- a/book/listings/pharmacokinetic/pkpl02.qmd +++ b/book/listings/pharmacokinetic/pkpl02.qmd @@ -5,22 +5,18 @@ subtitle: Listing of Drug A Urine PK Parameters ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -library(scda) drug_a <- "Plasma Drug X" spec <- "Urine" -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp_x <- adpp %>% filter( PPCAT == drug_a, PPSPEC == spec @@ -46,6 +42,9 @@ out <- out %>% var_relabel( ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -58,7 +57,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/pharmacokinetic/pkpl04.qmd b/book/listings/pharmacokinetic/pkpl04.qmd index a2a75c9a46..36be382a6e 100644 --- a/book/listings/pharmacokinetic/pkpl04.qmd +++ b/book/listings/pharmacokinetic/pkpl04.qmd @@ -5,19 +5,15 @@ subtitle: Listing of Individual Drug A AUCIFO and CMAX Ratios Following Drug A o ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(rlistings) -library(scda) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp visit <- "CYCLE 1 DAY 1" drug_a <- "Plasma Drug X" # numerator drug @@ -57,6 +53,9 @@ out <- out %>% var_relabel(USUBJID = "Subject ID") ## Standard Listing - CYCLE 1 DAY 1 +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, @@ -73,7 +72,18 @@ lsting <- as_listing( head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/listings/vital-signs/vsl01.qmd b/book/listings/vital-signs/vsl01.qmd index dd2c6c4f51..d0d9fbcbe1 100644 --- a/book/listings/vital-signs/vsl01.qmd +++ b/book/listings/vital-signs/vsl01.qmd @@ -5,19 +5,15 @@ subtitle: 'Listing of Vital Signs: Safety-Evaluable Patients' ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(rlistings) -advs <- synthetic_cdisc_dataset("latest", "advs") +advs <- random.cdisc.data::cadvs get_param_unit_range <- function(dataset) { u_rng <- lapply(unique(dataset$PARAMCD), function(p) { @@ -62,37 +58,86 @@ out <- anl_vs %>% TRT01A = "Treatment", AVISIT = "Visit", ADY = "Study\nDay", - AVAL_ANRIND_WEIGHT = paste0("Weight\nResult\n(", vs_u_rng$WEIGHT$unit, ");\nRange:(", vs_u_rng$WEIGHT$range, ")"), + AVAL_ANRIND_WEIGHT = paste0( + "Weight\nResult\n(", + vs_u_rng$WEIGHT$unit, + ");\nRange:(", + vs_u_rng$WEIGHT$range, + ")" + ), CHG_WEIGHT = "Weight\nChange from BL", - AVAL_ANRIND_TEMP = paste0("Temperature Result\n(", vs_u_rng$TEMP$unit, ");\nRange:(", vs_u_rng$TEMP$range, ")"), + AVAL_ANRIND_TEMP = paste0( + "Temperature Result\n(", + vs_u_rng$TEMP$unit, + ");\nRange:(", + vs_u_rng$TEMP$range, + ")" + ), CHG_TEMP = "Temperature Rate\nChange from BL", - AVAL_ANRIND_DIABP = paste0("Diastolic Blood\nPressure,\nSitting\nResult\n(", vs_u_rng$DIABP$unit, ");\nRange:(", vs_u_rng$DIABP$range, ")"), + AVAL_ANRIND_DIABP = paste0( + "Diastolic Blood\nPressure,\nSitting\nResult\n(", + vs_u_rng$DIABP$unit, + ");\nRange:(", + vs_u_rng$DIABP$range, + ")" + ), CHG_DIABP = "Diastolic Blood\nPressure,\nSitting\nChange from BL", - AVAL_ANRIND_SYSBP = paste0("Systolic Blood\nPressure,\nSitting\n(", vs_u_rng$SYSBP$unit, ");\nRange:(", vs_u_rng$SYSBP$range, ")"), + AVAL_ANRIND_SYSBP = paste0( + "Systolic Blood\nPressure,\nSitting\n(", + vs_u_rng$SYSBP$unit, + ");\nRange:(", + vs_u_rng$SYSBP$range, + ")" + ), CHG_SYSBP = "Systolic Blood\nPressure,\nSitting\nChange from BL", - AVAL_ANRIND_PULSE = paste0("Pulse Rate Result\n(", vs_u_rng$PULSE$unit, ");\nRange:(", vs_u_rng$PULSE$range, ")"), + AVAL_ANRIND_PULSE = paste0( + "Pulse Rate Result\n(", + vs_u_rng$PULSE$unit, + ");\nRange:(", + vs_u_rng$PULSE$range, + ")" + ), CHG_PULSE = "Pulse Rate\nChange from BL", - AVAL_ANRIND_RESP = paste0("Respiratory Rate\nResult\n(", vs_u_rng$RESP$unit, ");\nRange:(", vs_u_rng$RESP$range, ")"), + AVAL_ANRIND_RESP = paste0( + "Respiratory Rate\nResult\n(", + vs_u_rng$RESP$unit, + ");\nRange:(", + vs_u_rng$RESP$range, + ")" + ), CHG_RESP = "Respiratory Rate\nChange from BL" ) ``` ## Standard Listing +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r lsting, test = list(lsting = "lsting")} lsting <- as_listing( out, key_cols = c("TRT01A", "CRTNPT", "AGSXRC", "AVISIT"), disp_cols = names(out), main_title = "Listing of Vital Signs: Safety-Evaluable Patients", - main_footer = "Baseline is the patient's last observation prior to initiation of study drug. Abnormalities are flagged as high (H) or low (L) if - outside the Roche standard reference range." + main_footer = "Baseline is the patient's last observation prior to initiation of study drug. Abnormalities are flagged as high (H) or low (L) if outside the Roche standard reference range." # nolint: line_length. ) head(lsting, 20) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lsting")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/repro.qmd b/book/repro.qmd index e3e4a14edd..bb332e9aed 100644 --- a/book/repro.qmd +++ b/book/repro.qmd @@ -2,28 +2,27 @@ ### Timestamp -```{r systime, message=FALSE} -#| code-fold: show -#| renv.ignore: TRUE +```{r systime} +#| echo: FALSE Sys.time() ``` ### Session Info -```{r sessioninfo, message=FALSE} -#| code-fold: show +```{r sessioninfo} +#| echo: FALSE #| renv.ignore: TRUE -sessionInfo() +sessioninfo::session_info() ``` ### `.lock` file Download the `.lock` file and use [`renv::restore()`](https://rstudio.github.io/renv/reference/restore.html) on it to recreate environment used to generate this website. -```{r snapshot, message=FALSE, opts.label='skip_if_testing'} -#| code-fold: true +```{r snapshot, opts.label = "skip_if_testing"} +#| echo: FALSE #| renv.ignore: TRUE parent_file_path <- knitr::current_input(dir = TRUE) @@ -31,7 +30,21 @@ parent_file_path <- knitr::current_input(dir = TRUE) book_root_dir <- parent_file_path while (!file.exists(file.path(book_root_dir, "_quarto.yml"))) book_root_dir <- dirname(book_root_dir) -lock_path <- file.path("../../assets/www/lock", paste0(gsub(file.path(book_root_dir, ""), "", gsub("\\.rmarkdown$", "", knitr::current_input(dir = TRUE))), ".lock")) +lock_path <- file.path( + "../../assets/www/lock", + paste0( + gsub( + file.path(book_root_dir, ""), + "", + gsub( + "\\.rmarkdown$", + "", + knitr::current_input(dir = TRUE) + ) + ), + ".lock" + ) +) withr::with_options( list(renv.verbose = FALSE), diff --git a/book/tables/ADA/adat01.qmd b/book/tables/ADA/adat01.qmd index 0efc9511c4..9f3f549b2d 100644 --- a/book/tables/ADA/adat01.qmd +++ b/book/tables/ADA/adat01.qmd @@ -5,28 +5,43 @@ subtitle: Baseline Prevalence and Incidence of Treatment Emergent ADA ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} - -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +{{< include ../../_utils/envir_hook.qmd >}} +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) library(tibble) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adab <- synthetic_cdisc_dataset("latest", "adab") +adsl <- random.cdisc.data::cadsl +adab <- random.cdisc.data::cadab -combodf <- tribble( - ~valname, ~label, ~levelcombo, ~exargs, - "all_X", "All Drug X", c("A: Drug X", "C: Combination"), list(), - "all_pt", "All Patients", c("A: Drug X", "B: Placebo", "C: Combination"), list() +# Order needed for the columns is c(1, 3, 4, 2, 5) +reorder_facets <- function(splret, spl, fulldf, ...) { + ord <- c(1, 3, 4, 2, 5) + make_split_result( + splret$values[ord], + splret$datasplit[ord], + splret$labels[ord] + ) +} + +# Create a custom split function for adding the new columns (facets) and sorting them +custom_column_split_fun <- make_split_fun( + post = list( + add_combo_facet("all_X", + label = "All Drug X", + levels = c("A: Drug X", "C: Combination") + ), + add_combo_facet("all_pt", + label = "All Patients", + levels = c("A: Drug X", "B: Placebo", "C: Combination") + ), + reorder_facets + ) ) + # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) adab <- adab %>% @@ -92,11 +107,31 @@ adab_pb <- df_explicit_na(adab) %>% ) %>% mutate( ADPBLPFL = ADPBLPFL == "Y", - PTEFL = if (exists("Treatment Emergent - Positive", where = .)) `Treatment Emergent - Positive` == "TRUE" else FALSE, - TIFL = if (exists("Treatment induced ADA", where = .)) `Treatment induced ADA` == "TRUE" else FALSE, - TEFL = if (exists("Treatment enhanced ADA", where = .)) `Treatment enhanced ADA` == "TRUE" else FALSE, - NTEFL = if (exists("Treatment Emergent - Negative", where = .)) `Treatment Emergent - Negative` == "TRUE" else FALSE, - TUFL = if (exists("Treatment unaffected", where = .)) `Treatment unaffected` == "TRUE" else FALSE + PTEFL = if (exists("Treatment Emergent - Positive", where = .)) { + `Treatment Emergent - Positive` == "TRUE" + } else { + FALSE + }, + TIFL = if (exists("Treatment induced ADA", where = .)) { + `Treatment induced ADA` == "TRUE" + } else { + FALSE + }, + TEFL = if (exists("Treatment enhanced ADA", where = .)) { + `Treatment enhanced ADA` == "TRUE" + } else { + FALSE + }, + NTEFL = if (exists("Treatment Emergent - Negative", where = .)) { + `Treatment Emergent - Negative` == "TRUE" + } else { + FALSE + }, + TUFL = if (exists("Treatment unaffected", where = .)) { + `Treatment unaffected` == "TRUE" + } else { + FALSE + } ) %>% var_relabel( ADPBLPFL = "Post-baseline evaluable patients", @@ -110,12 +145,17 @@ adab_pb <- df_explicit_na(adab) %>% ## Standard Table -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} # Layout for Baseline Prevalence of NAbs lyt_bl <- basic_table(show_colcounts = TRUE) %>% split_cols_by( "ACTARM", - split_fun = add_combo_levels(combodf) + split_fun = custom_column_split_fun ) %>% count_patients_with_flags( "USUBJID", @@ -146,7 +186,7 @@ lyt_bl <- basic_table(show_colcounts = TRUE) %>% lyt_pb <- basic_table(show_colcounts = TRUE) %>% split_cols_by( "ACTARM", - split_fun = add_combo_levels(combodf) + split_fun = custom_column_split_fun ) %>% count_patients_with_flags( "USUBJID", @@ -194,17 +234,11 @@ result_2 <- build_table(lyt_pb, df = adab_pb, alt_counts_df = adsl) result_1@col_info <- result_2@col_info result <- rbind(result_1, result_2) -# Change the column order. -result <- cbind_rtables(result[, 1], result[, 3]) %>% - cbind_rtables(result[, 4]) %>% - cbind_rtables(result[, 2]) %>% - cbind_rtables(result[, 5]) - main_title(result) <- paste( "Baseline Prevalence and Incidence of Treatment Emergent ADA" ) -main_footer(result) <- paste( - "ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient = a patient with an ADA assay result from a baseline sample(s) +# nolint start: line_length. +main_footer(result) <- "ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient = a patient with an ADA assay result from a baseline sample(s) Post-baseline evaluable patient = a patient with an ADA assay result from at least one post-baseline sample Number of patients positive for Treatment Emergent ADA = the number (and percentage) of post-baseline evaluable patients determined to have treatment-induced ADA or treatment-enhanced ADA during the study period. Treatment-induced ADA = a patient with negative or missing baseline ADA result(s) and at least one positive post-baseline ADA result. @@ -212,19 +246,22 @@ main_footer(result) <- paste( Number of patients negative for Treatment Emergent ADA = number of post-baseline evaluable patients with negative or missing baseline ADA result(s) and all negative post-baseline results, or a patient who is treatment unaffected. Treatment unaffected = A post-baseline evaluable patient with a positive ADA result at baseline and (a) where all post-baseline titer results are less than 0.60 t.u. greater than the baseline titer result, OR (b) where all post-baseline results are negative or missing. For any positive sample with titer result less than the minimum reportable titer or any positive sample where a titer cannot be obtained, titer value is imputed as equal to the minimum reportable titer." -) +# nolint end: line_length. result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/ADA/adat02.qmd b/book/tables/ADA/adat02.qmd index cea03e9742..8cd90776f4 100644 --- a/book/tables/ADA/adat02.qmd +++ b/book/tables/ADA/adat02.qmd @@ -5,20 +5,16 @@ subtitle: Summary of Patients with Treatment-Induced ADA ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adab <- synthetic_cdisc_dataset("latest", "adab") +adsl <- random.cdisc.data::cadsl +adab <- random.cdisc.data::cadab # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -63,6 +59,9 @@ adab_ti <- adab %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Layout for post-baseline evaluable patient variables from adab dataset. lyt_adab <- basic_table(show_colcounts = TRUE) %>% @@ -137,15 +136,18 @@ main_footer(result) <- paste( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/ADA/adat03.qmd b/book/tables/ADA/adat03.qmd index 09a11aa867..a26c67006e 100644 --- a/book/tables/ADA/adat03.qmd +++ b/book/tables/ADA/adat03.qmd @@ -5,21 +5,17 @@ subtitle: Summary of Serum Concentrations at Timepoints Where ADA Samples Were C ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adab <- synthetic_cdisc_dataset("latest", "adab") -adpc <- synthetic_cdisc_dataset("latest", "adpc") +adsl <- random.cdisc.data::cadsl +adab <- random.cdisc.data::cadab +adpc <- random.cdisc.data::cadpc # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -41,6 +37,9 @@ anl <- merge(anl, adpc, by = c("USUBJID", "NFRLT")) %>% ## Standard Table (ΞΌg/mL) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # parameters in columns adat03_stats <- c("n", "mean", "sd", "median", "min", "max", "cv", "geom_mean", "count_fraction") @@ -108,24 +107,24 @@ main_title(result) <- paste( Protocol:", unique(adab$PARCAT1)[1] ) subtitles(result) <- paste("Analyte:", unique(adab$PARAMCD)[1]) -fnotes_at_path(result, rowpath = NULL, colpath = c("multivars", "AVAL")) <- "Refers to the total no. of measurable ADA samples that have a corresponding measurable drug concentration sample (i.e. results with -valid numeric values and LTRs). LTR results on post-dose samples are replaced by aaa Β΅g/mL i.e. half of MQC value." -fnotes_at_path(result, rowpath = NULL, colpath = c("multivars", "AVAL_LT")) <- "In validation, the assay was able to detect yyy ng/mL of surrogate ADA in the presence of zzz Β΅g/mL of [drug]. BLQ = Below Limit of -Quantitation, LTR = Lower than Reportable, MQC = Minimum Quantifiable Concentration, ADA = Anti-Drug Antibodies (is also referred to as ATA, -or Anti-Therapeutic Antibodies). RXXXXXXX is also known as [drug]" +fnotes_at_path(result, rowpath = NULL, colpath = c("multivars", "AVAL")) <- "Refers to the total no. of measurable ADA samples that have a corresponding measurable drug concentration sample (i.e. results with valid numeric values and LTRs). LTR results on post-dose samples are replaced by aaa Β΅g/mL i.e. half of MQC value." # nolint: line_length. +fnotes_at_path(result, rowpath = NULL, colpath = c("multivars", "AVAL_LT")) <- "In validation, the assay was able to detect yyy ng/mL of surrogate ADA in the presence of zzz Β΅g/mL of [drug]. BLQ = Below Limit of Quantitation, LTR = Lower than Reportable, MQC = Minimum Quantifiable Concentration, ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies). RXXXXXXX is also known as [drug]" # nolint: line_length. result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/ADA/adat04a.qmd b/book/tables/ADA/adat04a.qmd index 48bc0a0b45..21ba43bbc3 100644 --- a/book/tables/ADA/adat04a.qmd +++ b/book/tables/ADA/adat04a.qmd @@ -5,26 +5,42 @@ subtitle: Baseline Prevalence and Incidence of Treatment Emergent NAbs ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) library(tibble) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adab <- synthetic_cdisc_dataset("latest", "adab") +adsl <- random.cdisc.data::cadsl +adab <- random.cdisc.data::cadab -combodf <- tribble( - ~valname, ~label, ~levelcombo, ~exargs, - "all_X", "All Drug X", c("A: Drug X", "C: Combination"), list(), - "all_pt", "All Patients", c("A: Drug X", "B: Placebo", "C: Combination"), list() + +# Order needed for the columns is c(1, 3, 4, 2, 5) +reorder_facets <- function(splret, spl, fulldf, ...) { + ord <- c(1, 3, 4, 2, 5) + make_split_result( + splret$values[ord], + splret$datasplit[ord], + splret$labels[ord] + ) +} + +# Create a custom split function for adding the new columns (facets) and sorting them +custom_column_split_fun <- make_split_fun( + post = list( + add_combo_facet("all_X", + label = "All Drug X", + levels = c("A: Drug X", "C: Combination") + ), + add_combo_facet("all_pt", + label = "All Patients", + levels = c("A: Drug X", "B: Placebo", "C: Combination") + ), + reorder_facets + ) ) # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. @@ -56,9 +72,21 @@ adab_b <- df_explicit_na(adab) %>% ) %>% mutate( ADABLPFL = ADABLPFL == "Y", - PADABLPFL = if (exists("ADA interpreted per sample result", where = .)) `ADA interpreted per sample result` == "TRUE" else FALSE, - PNABBLFL = if (exists("NAB interpreted per sample result", where = .)) `NAB interpreted per sample result` == "TRUE" else FALSE, - NNABBLFL = if (exists("NAB interpreted per sample result", where = .)) `NAB interpreted per sample result` == "FALSE" else FALSE + PADABLPFL = if (exists("ADA interpreted per sample result", where = .)) { + `ADA interpreted per sample result` == "TRUE" + } else { + FALSE + }, + PNABBLFL = if (exists("NAB interpreted per sample result", where = .)) { + `NAB interpreted per sample result` == "TRUE" + } else { + FALSE + }, + NNABBLFL = if (exists("NAB interpreted per sample result", where = .)) { + `NAB interpreted per sample result` == "FALSE" + } else { + FALSE + } ) %>% var_relabel( ADABLPFL = "Baseline evaluable patients for ADA", @@ -101,12 +129,36 @@ adab_pb <- df_explicit_na(adab) %>% ) %>% mutate( ADPBLPFL = ADPBLPFL == "Y", - ADAPFL = if (exists("ADA interpreted per sample result", where = .)) `ADA interpreted per sample result` == "TRUE" else FALSE, - TENABPFL = if (exists("Treatment Emergent - Positive, Neutralizing Antibody", where = .)) `Treatment Emergent - Positive, Neutralizing Antibody` == "TRUE" else FALSE, - TINPBFL = if (exists("Treatment induced ADA, Neutralizing Antibody", where = .)) `Treatment induced ADA, Neutralizing Antibody` == "TRUE" else FALSE, - TENPBFL = if (exists("Treatment enhanced ADA, Neutralizing Antibody", where = .)) `Treatment enhanced ADA, Neutralizing Antibody` == "TRUE" else FALSE, - NABNFL = if (exists("NAB interpreted per sample result", where = .)) `NAB interpreted per sample result` == "FALSE" else FALSE, - TUNPBFL = if (exists("Treatment unaffected, Neutralizing Antibody", where = .)) `Treatment unaffected, Neutralizing Antibody` == "TRUE" else FALSE + ADAPFL = if (exists("ADA interpreted per sample result", where = .)) { + `ADA interpreted per sample result` == "TRUE" + } else { + FALSE + }, + TENABPFL = if (exists("Treatment Emergent - Positive, Neutralizing Antibody", where = .)) { + `Treatment Emergent - Positive, Neutralizing Antibody` == "TRUE" + } else { + FALSE + }, + TINPBFL = if (exists("Treatment induced ADA, Neutralizing Antibody", where = .)) { + `Treatment induced ADA, Neutralizing Antibody` == "TRUE" + } else { + FALSE + }, + TENPBFL = if (exists("Treatment enhanced ADA, Neutralizing Antibody", where = .)) { + `Treatment enhanced ADA, Neutralizing Antibody` == "TRUE" + } else { + FALSE + }, + NABNFL = if (exists("NAB interpreted per sample result", where = .)) { + `NAB interpreted per sample result` == "FALSE" + } else { + FALSE + }, + TUNPBFL = if (exists("Treatment unaffected, Neutralizing Antibody", where = .)) { + `Treatment unaffected, Neutralizing Antibody` == "TRUE" + } else { + FALSE + } ) %>% var_relabel( ADPBLPFL = "Post-baseline evaluable patients for ADA", @@ -121,12 +173,17 @@ adab_pb <- df_explicit_na(adab) %>% ## Summary of Treatment Emergent NAbs -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} # Layout for Baseline Prevalence of NAbs lyt_bl <- basic_table(show_colcounts = TRUE) %>% split_cols_by( "ACTARM", - split_fun = add_combo_levels(combodf) + split_fun = custom_column_split_fun ) %>% count_patients_with_flags( "USUBJID", @@ -155,7 +212,7 @@ lyt_bl <- basic_table(show_colcounts = TRUE) %>% lyt_pb <- basic_table(show_colcounts = TRUE) %>% split_cols_by( "ACTARM", - split_fun = add_combo_levels(combodf) + split_fun = custom_column_split_fun ) %>% count_patients_with_flags( "USUBJID", @@ -202,18 +259,12 @@ result_2 <- build_table(lyt_pb, df = adab_pb, alt_counts_df = adsl) # Combine tables result <- rbind(result_1, result_2) -# Change the column order -result <- cbind_rtables(result[, 1], result[, 3]) %>% - cbind_rtables(result[, 4]) %>% - cbind_rtables(result[, 2]) %>% - cbind_rtables(result[, 5]) - main_title(result) <- paste( "Baseline Prevalence and Incidence of Treatment Emergent NAbs" ) subtitles(result) <- paste("Protocol:", unique(adab$PARCAT1)[1]) -main_footer(result) <- paste( - "NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) +# nolint start: line_length. +main_footer(result) <- "NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) Post-baseline evaluable patient for ADA = a patient with an ADA assay result from at least one post-baseline sample Post-baseline evaluable patient for NAb = a patient with a NAb assay result from at least one post-baseline sample @@ -222,19 +273,22 @@ Number of patients positive for Treatment Emergent NAb = the number (and percent Treatment-induced = a patient with negative or missing baseline result(s) and at least one positive post-baseline result. Treatment-enhanced = a patient with positive result at baseline who has one or more post-baseline titer results that are at least 0.60 t.u. greater than the baseline titer result. Number of patients negative for Treatment Emergent NAb = number of post-baseline evaluable patients with negative or missing baseline NAb result(s) and all negative post-baseline NAb results, or a patient who is NAb treatment unaffected. Treatment unaffected = A post-baseline evaluable patient with a positive result at baseline and (a) where all post-baseline titer results are less than 0.60 t.u. greater than the baseline titer result, OR (b) where all post-baseline results are negative or missing. For any positive sample with titer result less than the minimum reportable titer or any positive sample where a titer cannot be obtained, titer value is imputed as equal to the minimum reportable titer." -) +# nolint end: line_length. result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/ADA/adat04b.qmd b/book/tables/ADA/adat04b.qmd index 170714f485..841e3b06c9 100644 --- a/book/tables/ADA/adat04b.qmd +++ b/book/tables/ADA/adat04b.qmd @@ -5,26 +5,41 @@ subtitle: Baseline Prevalence and Incidence of NAbs ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) library(tibble) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adab <- synthetic_cdisc_dataset("latest", "adab") +adsl <- random.cdisc.data::cadsl +adab <- random.cdisc.data::cadab -combodf <- tribble( - ~valname, ~label, ~levelcombo, ~exargs, - "all_X", "All Drug X", c("A: Drug X", "C: Combination"), list(), - "all_pt", "All Patients", c("A: Drug X", "B: Placebo", "C: Combination"), list() +# Order needed for the columns is c(1, 3, 4, 2, 5) +reorder_facets <- function(splret, spl, fulldf, ...) { + ord <- c(1, 3, 4, 2, 5) + make_split_result( + splret$values[ord], + splret$datasplit[ord], + splret$labels[ord] + ) +} + +# Create a custom split function for adding the new columns (facets) and sorting them +custom_column_split_fun <- make_split_fun( + post = list( + add_combo_facet("all_X", + label = "All Drug X", + levels = c("A: Drug X", "C: Combination") + ), + add_combo_facet("all_pt", + label = "All Patients", + levels = c("A: Drug X", "B: Placebo", "C: Combination") + ), + reorder_facets + ) ) # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. @@ -56,9 +71,21 @@ adab_b <- df_explicit_na(adab) %>% ) %>% mutate( ADABLPFL = ADABLPFL == "Y", - PADABLPFL = if (exists("ADA interpreted per sample result", where = .)) `ADA interpreted per sample result` == "TRUE" else FALSE, - PNABBLFL = if (exists("NAB interpreted per sample result", where = .)) `NAB interpreted per sample result` == "TRUE" else FALSE, - NNABBLFL = if (exists("NAB interpreted per sample result", where = .)) `NAB interpreted per sample result` == "FALSE" else FALSE + PADABLPFL = if (exists("ADA interpreted per sample result", where = .)) { + `ADA interpreted per sample result` == "TRUE" + } else { + FALSE + }, + PNABBLFL = if (exists("NAB interpreted per sample result", where = .)) { + `NAB interpreted per sample result` == "TRUE" + } else { + FALSE + }, + NNABBLFL = if (exists("NAB interpreted per sample result", where = .)) { + `NAB interpreted per sample result` == "FALSE" + } else { + FALSE + } ) %>% var_relabel( ADABLPFL = "Baseline evaluable patients for ADA", @@ -125,12 +152,17 @@ adab_pb <- left_join(adab_pb_ada, adab_pb_adap, by = mergecol) %>% ## Standard Table -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} # Layout for Baseline Prevalence of NAbs lyt_bl <- basic_table(show_colcounts = TRUE) %>% split_cols_by( "ACTARM", - split_fun = add_combo_levels(combodf) + split_fun = custom_column_split_fun ) %>% count_patients_with_flags( "USUBJID", @@ -160,7 +192,7 @@ lyt_bl <- basic_table(show_colcounts = TRUE) %>% lyt_pb <- basic_table(show_colcounts = TRUE) %>% split_cols_by( "ACTARM", - split_fun = add_combo_levels(combodf) + split_fun = custom_column_split_fun ) %>% count_patients_with_flags( "USUBJID", @@ -192,32 +224,29 @@ result_2 <- build_table(lyt_pb, df = adab_pb, alt_counts_df = adsl) # Combine tables. result <- rbind(result_1, result_2) -# Change the column order. -result <- cbind_rtables(result[, 1], result[, 3]) %>% - cbind_rtables(result[, 4]) %>% - cbind_rtables(result[, 2]) %>% - cbind_rtables(result[, 5]) - main_title(result) <- paste( "Baseline Prevalence and Incidence of Neutralizing Antibodies (NAbs)" ) subtitles(result) <- paste("Protocol:", unique(adab$PARCAT1)[1]) -main_footer(result) <- paste( - "NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) Post-baseline evaluable patient for ADA = a patient with an ADA assay result from at least one post-baseline sample Post-baseline evaluable patient for NAb = a patient with a NAb assay result from at least one post-baseline sample Number of patients positive for ADA = the number of post-baseline evaluable patients for ADA determined to have Treatment Emergent ADA during the study period. +# nolint start: line_length. +main_footer(result) <- "NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) Post-baseline evaluable patient for ADA = a patient with an ADA assay result from at least one post-baseline sample Post-baseline evaluable patient for NAb = a patient with a NAb assay result from at least one post-baseline sample Number of patients positive for ADA = the number of post-baseline evaluable patients for ADA determined to have Treatment Emergent ADA during the study period. Number of patients positive for NAb = the number (and percentage) of post-baseline evaluable patients for ADA determined to have at least one positive post-baseline NAb result during the study period. Number of patients negative for NAb = number of post-baseline evaluable patients with all negative post-baseline NAb results." -) +# nolint end: line_length. result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/ECG/egt01.qmd b/book/tables/ECG/egt01.qmd index 2594585548..795d971d98 100644 --- a/book/tables/ECG/egt01.qmd +++ b/book/tables/ECG/egt01.qmd @@ -5,25 +5,21 @@ subtitle: ECG Results and Change from Baseline by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) # Data should be filtered for the studied Parameter (`PARAM`) and the # Analysis Visit (`AVISIT`). According to the GDSR template, the values for # the `AVISIT` reported in the EGT01 standard may be: # 'POST-BASELINE MAXIMUM', 'POST-BASELINE MINIMUM', 'POST-BASELINE LAST'. -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adeg <- synthetic_cdisc_dataset("latest", "adeg") +adsl <- random.cdisc.data::cadsl +adeg <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -36,6 +32,9 @@ adeg_f <- adeg %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -79,20 +78,35 @@ result <- build_table(lyt, adeg_f, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + + + +```{r teal, opts.label = c("skip_if_testing", "app"), eval = packageVersion("teal.modules.clinical") >= "0.9.0.9007"} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEG <- synthetic_cdisc_dataset("latest", "adeg") + ADSL <- random.cdisc.data::cadsl + ADEG <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -139,5 +153,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/ECG/egt02.qmd b/book/tables/ECG/egt02.qmd index c18e19eabd..83cdbf7ab0 100644 --- a/book/tables/ECG/egt02.qmd +++ b/book/tables/ECG/egt02.qmd @@ -5,20 +5,16 @@ subtitle: ECG Abnormalities (EGT02_1 & EGT02_2) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adeg <- synthetic_cdisc_dataset("latest", "adeg") +adsl <- random.cdisc.data::cadsl +adeg <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -37,6 +33,9 @@ adeg_f <- adeg %>% ## ECG Abnormalities Regardless
of Abnormality at Baseline +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -55,8 +54,15 @@ result <- build_table(lyt = lyt, df = adeg_f, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## ECG Abnormalities Among Subjects
Without Abnormality at Baseline +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} split_fun <- drop_split_levels @@ -75,19 +81,33 @@ result <- build_table(lyt = lyt, df = adeg_f, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEG <- synthetic_cdisc_dataset("latest", "adeg") + ADSL <- random.cdisc.data::cadsl + ADEG <- random.cdisc.data::cadeg }) datanames <- c("ADSL", "ADEG") datanames(data) <- datanames @@ -127,5 +147,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/ECG/egt03.qmd b/book/tables/ECG/egt03.qmd index e1b6c679e5..1750494620 100644 --- a/book/tables/ECG/egt03.qmd +++ b/book/tables/ECG/egt03.qmd @@ -5,19 +5,15 @@ subtitle: Shift Table of ECG Interval Data -- Baseline Versus Minimum/Maximum Po ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adeg <- synthetic_cdisc_dataset("latest", "adeg") +adeg <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adeg <- df_explicit_na(adeg) @@ -49,6 +45,9 @@ var_labels(adeg_f_pbmax) <- adeg_labels For the EGT03 template, data imputation should be avoided, and missing data explicit and accounted for, so the contingency table sum adds up to the group N. For illustration purposes, missing data are added to the example dataset. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} set.seed(123, kind = "Mersenne-Twister") @@ -63,8 +62,8 @@ adeg_f_pbmin$ANRIND <- factor( labels = c("LOW", "NORMAL", "HIGH", "Missing") ) -adeg_f_pbmin$BNRIND[sample(1:nrow(adeg_f_pbmin), size = 5)] <- "Missing" -adeg_f_pbmin$ANRIND[sample(1:nrow(adeg_f_pbmin), size = 5)] <- "Missing" +adeg_f_pbmin$BNRIND[sample(seq_len(nrow(adeg_f_pbmin)), size = 5)] <- "Missing" +adeg_f_pbmin$ANRIND[sample(seq_len(nrow(adeg_f_pbmin)), size = 5)] <- "Missing" attr(adeg_f_pbmin$ANRIND, "label") <- "Analysis Reference Range Indicator" attr(adeg_f_pbmin$BNRIND, "label") <- "Baseline Reference Range Indicator" @@ -91,11 +90,18 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of Baseline Versus
Maximum Post-Baseline For the EGT03 template, data imputation should be avoided, and missing data explicit and accounted for, so the contingency table sum adds up to the group N. For illustration purpose, missing data are added to the example dataset. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} set.seed(123, kind = "Mersenne-Twister") @@ -110,8 +116,8 @@ adeg_f_pbmax$ANRIND <- factor( labels = c("LOW", "NORMAL", "HIGH", "Missing") ) -adeg_f_pbmax$BNRIND[sample(1:nrow(adeg_f_pbmax), size = 5)] <- "Missing" -adeg_f_pbmax$ANRIND[sample(1:nrow(adeg_f_pbmax), size = 5)] <- "Missing" +adeg_f_pbmax$BNRIND[sample(seq_len(nrow(adeg_f_pbmax)), size = 5)] <- "Missing" +adeg_f_pbmax$ANRIND[sample(seq_len(nrow(adeg_f_pbmax)), size = 5)] <- "Missing" attr(adeg_f_pbmax$ANRIND, "label") <- "Analysis Reference Range Indicator" attr(adeg_f_pbmax$BNRIND, "label") <- "Baseline Reference Range Indicator" @@ -138,21 +144,33 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(dplyr) - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEG <- synthetic_cdisc_dataset("latest", "adeg") + ADSL <- random.cdisc.data::cadsl + ADEG <- random.cdisc.data::cadeg }) datanames <- c("ADSL", "ADEG") datanames(data) <- datanames @@ -185,7 +203,7 @@ app <- init( variable_choices(ADEG, subset = "ANRIND"), selected = "ANRIND", fixed = TRUE ), - base_var = choices_selected( + baseline_var = choices_selected( variable_choices(ADEG, subset = "BNRIND"), selected = "BNRIND", fixed = TRUE ), @@ -205,5 +223,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/ECG/egt04.qmd b/book/tables/ECG/egt04.qmd index 9c1dc28c9f..7e1e744021 100644 --- a/book/tables/ECG/egt04.qmd +++ b/book/tables/ECG/egt04.qmd @@ -5,24 +5,17 @@ subtitle: Shift Table of Qualitative ECG Assessments ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup +:::: {.panel-tabset} -For the EGT04 template, data imputation should be avoided, and missing data explicit and accounted for, so the contingency table sum adds up to the group N. -For illustration purposes, missing data are added to the example dataset. - -```{r setup, message=FALSE} -#| code-fold: show - -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) set.seed(123) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adeg <- synthetic_cdisc_dataset("latest", "adeg") +adsl <- random.cdisc.data::cadsl +adeg <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -38,8 +31,8 @@ adeg_f <- subset( WORS02FL == "Y" # "Worst Post-Baseline Observation" ) -adeg_f$AVALC[sample(1:nrow(adeg_f), size = 5)] <- "Missing" -adeg_f$BASEC[sample(1:nrow(adeg_f), size = 5)] <- "Missing" +adeg_f$AVALC[sample(seq_len(nrow(adeg_f)), size = 5)] <- "Missing" +adeg_f$BASEC[sample(seq_len(nrow(adeg_f)), size = 5)] <- "Missing" adeg_f$AVALC <- factor( adeg_f$AVALC, levels = c("NORMAL", "ABNORMAL", "Missing"), @@ -64,6 +57,9 @@ adeg_f <- adeg_f %>% mutate(postbaseline_label = "Post-Baseline") The EGT04 template consists of a stacked list of contingency tables, one per group. For each group, the n's across all cells must add up to the group N in the analysis, and percentages are calculated using N as the denominator. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -85,16 +81,21 @@ result <- build_table(lyt, adeg_f) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} -#| code-fold: show +For the EGT04 template, data imputation should be avoided, and missing data explicit and accounted for, so the contingency table sum adds up to the group N. +For illustration purposes, missing data are added to the example dataset. -# In progress +```{r setup} +#| code-fold: show ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/ECG/egt05_qtcat.qmd b/book/tables/ECG/egt05_qtcat.qmd index 5faf237c03..66b3873150 100644 --- a/book/tables/ECG/egt05_qtcat.qmd +++ b/book/tables/ECG/egt05_qtcat.qmd @@ -5,20 +5,16 @@ subtitle: ECG Actual Values and Changes from Baseline by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adeg <- synthetic_cdisc_dataset("latest", "adeg") +adsl <- random.cdisc.data::cadsl +adeg <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -74,6 +70,9 @@ adeg_f <- adeg %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -103,26 +102,40 @@ result <- build_table(lyt = lyt, df = adeg_f, alt_counts_df = adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEG <- synthetic_cdisc_dataset("latest", "adeg") + ADSL <- random.cdisc.data::cadsl + ADEG <- random.cdisc.data::cadeg # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) ADEG <- df_explicit_na(ADEG) - adeg_labels <- var_labels(ADEG) + adeg_labels <- col_labels(ADEG) ADEG <- ADEG %>% filter( @@ -164,7 +177,7 @@ data <- within(data, { ) ) ) - var_labels(ADEG) <- c( + col_labels(ADEG) <- c( adeg_labels, "AVALCAT1" = "Value at Visit", "CHGCAT1" = "Change from Baseline" @@ -209,5 +222,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet01.qmd b/book/tables/adverse-events/aet01.qmd index 6c5df5b856..7caada42fa 100644 --- a/book/tables/adverse-events/aet01.qmd +++ b/book/tables/adverse-events/aet01.qmd @@ -5,22 +5,16 @@ subtitle: Safety Summary ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -To illustrate, additional variables such as flags (TRUE/FALSE) for select AEs of interest and select AE baskets are added to the `adae` dataset. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -34,12 +28,18 @@ set.seed(99) adae <- adae %>% mutate( AEDECOD = with_label(as.character(AEDECOD), "Dictionary-Derived Term"), - AESDTH = with_label(sample(c("N", "Y"), size = nrow(adae), replace = TRUE, prob = c(0.99, 0.01)), "Results in Death"), - AEACN = with_label(sample( - c("DOSE NOT CHANGED", "DOSE INCREASED", "DRUG INTERRUPTED", "DRUG WITHDRAWN"), - size = nrow(adae), - replace = TRUE, prob = c(0.68, 0.02, 0.25, 0.05) - ), "Action Taken with Study Treatment"), + AESDTH = with_label( + sample(c("N", "Y"), size = nrow(adae), replace = TRUE, prob = c(0.99, 0.01)), + "Results in Death" + ), + AEACN = with_label( + sample( + c("DOSE NOT CHANGED", "DOSE INCREASED", "DRUG INTERRUPTED", "DRUG WITHDRAWN"), + size = nrow(adae), + replace = TRUE, prob = c(0.68, 0.02, 0.25, 0.05) + ), + "Action Taken with Study Treatment" + ), FATAL = with_label(AESDTH == "Y", "AE with fatal outcome"), SEV = with_label(AESEV == "SEVERE", "Severe AE (at greatest intensity)"), SER = with_label(AESER == "Y", "Serious AE"), @@ -71,7 +71,11 @@ adae <- adae %>% ## Standard Table -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} aesi_vars <- c("FATAL", "SER", "SERWD", "SERDSM", "RELSER", "WD", "DSM", "REL", "RELWD", "RELDSM", "SEV") # Layout for variables from adsl dataset. @@ -127,8 +131,15 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Medical
Concepts Section +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} aesi_vars <- c("FATAL", "SER", "SERWD", "SERDSM", "RELSER", "WD", "DSM", "REL", "RELWD", "RELDSM", "CTC35") basket_vars <- c("SMQ01", "SMQ02", "CQ01") @@ -194,8 +205,15 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
Modified Rows +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} aesi_vars <- c("FATAL", "SER", "WD", "REL", "CTC35", "CTC45") # Layout for variables from adsl dataset. @@ -256,8 +274,15 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Rows Counting
Events & Additional Sections +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} count_subj_vars <- c("FATAL", "SER", "WD", "DSM", "REL", "CTC35") count_term_vars <- c("SER", "DSM", "REL", "CTC35", "CTC45") @@ -334,20 +359,44 @@ result <- rbind( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +To illustrate, additional variables such as flags (TRUE/FALSE) for select AEs of interest and select AE baskets are added to the `adae` dataset. + +```{r setup} +#| code-fold: show +``` + + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae add_event_flags <- function(dat) { dat %>% @@ -359,7 +408,7 @@ data <- within(data, { TMP_SMQ02 = !is.na(SMQ02NAM), TMP_CQ01 = !is.na(CQ01NAM) ) %>% - var_relabel( + col_relabel( TMPFL_SER = "Serious AE", TMPFL_REL = "Related AE", TMPFL_GR5 = "Grade 5 AE", @@ -413,5 +462,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet01_aesi.qmd b/book/tables/adverse-events/aet01_aesi.qmd index 8797369b95..55304e8bf8 100644 --- a/book/tables/adverse-events/aet01_aesi.qmd +++ b/book/tables/adverse-events/aet01_aesi.qmd @@ -5,23 +5,16 @@ subtitle: Safety Summary (Adverse Events of Special Interest) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -To illustrate, additional variables such as flags (TRUE/FALSE) for selected AEs of interest. -Please consult your SAP on how to handle missing AE grades. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae adsl <- filter(adsl, SAFFL == "Y") adae <- filter(adae, ANL01FL == "Y" & SAFFL == "Y") @@ -37,38 +30,91 @@ not_resolved <- adae %>% adae <- adae %>% left_join(not_resolved, by = c("USUBJID")) %>% mutate( - ALL_RESOLVED = with_label(is.na(NOT_RESOLVED), "Total number of patients with all non-fatal AEs resolved"), - NOT_RESOLVED = with_label(!is.na(NOT_RESOLVED), "Total number of patients with at least one unresolved or ongoing non-fatal AE") + ALL_RESOLVED = with_label( + is.na(NOT_RESOLVED), + "Total number of patients with all non-fatal AEs resolved" + ), + NOT_RESOLVED = with_label( + !is.na(NOT_RESOLVED), + "Total number of patients with at least one unresolved or ongoing non-fatal AE" + ) ) adae <- adae %>% mutate( AEDECOD = as.character(AEDECOD), - WD = with_label(AEACN == "DRUG WITHDRAWN", "Total number of patients with study drug withdrawn due to AE"), + WD = with_label( + AEACN == "DRUG WITHDRAWN", + "Total number of patients with study drug withdrawn due to AE" + ), DSM = with_label( - AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "Total number of patients with dose modified/interrupted due to AE" - ), - CONTRT = with_label(AECONTRT == "Y", "Total number of patients with treatment received for AE"), - SER = with_label(AESER == "Y", "Total number of patients with at least one serious AE"), - REL = with_label(AEREL == "Y", "Total number of patients with at least one related AE"), - ALL_RESOLVED_WD = with_label(WD == TRUE & ALL_RESOLVED == TRUE, "No. of patients with study drug withdrawn due to resolved AE"), - ALL_RESOLVED_DSM = with_label(DSM == TRUE & ALL_RESOLVED == TRUE, "No. of patients with dose modified/interrupted due to resolved AE"), - ALL_RESOLVED_CONTRT = with_label(CONTRT == TRUE & ALL_RESOLVED == TRUE, "No. of patients with treatment received for resolved AE"), - NOT_RESOLVED_WD = with_label(WD == TRUE & NOT_RESOLVED == TRUE, "No. of patients with study drug withdrawn due to unresolved or ongoing AE"), - NOT_RESOLVED_DSM = with_label(DSM == TRUE & NOT_RESOLVED == TRUE, "No. of patients with dose modified/interrupted due to unresolved or ongoing AE"), - NOT_RESOLVED_CONTRT = with_label(CONTRT == TRUE & NOT_RESOLVED == TRUE, "No. of patients with treatment received for unresolved or ongoing AE"), - SERWD = with_label(AESER == "Y" & AEACN == "DRUG WITHDRAWN", "No. of patients with study drug withdrawn due to serious AE"), - SERCONTRT = with_label(AECONTRT == "Y" & AESER == "Y", "No. of patients with dose modified/interrupted due to serious AE"), + AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), + "Total number of patients with dose modified/interrupted due to AE" + ), + CONTRT = with_label( + AECONTRT == "Y", + "Total number of patients with treatment received for AE" + ), + SER = with_label( + AESER == "Y", + "Total number of patients with at least one serious AE" + ), + REL = with_label( + AEREL == "Y", + "Total number of patients with at least one related AE" + ), + ALL_RESOLVED_WD = with_label( + WD == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with study drug withdrawn due to resolved AE" + ), + ALL_RESOLVED_DSM = with_label( + DSM == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with dose modified/interrupted due to resolved AE" + ), + ALL_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with treatment received for resolved AE" + ), + NOT_RESOLVED_WD = with_label( + WD == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with study drug withdrawn due to unresolved or ongoing AE" + ), + NOT_RESOLVED_DSM = with_label( + DSM == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with dose modified/interrupted due to unresolved or ongoing AE" + ), + NOT_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with treatment received for unresolved or ongoing AE" + ), + SERWD = with_label( + AESER == "Y" & AEACN == "DRUG WITHDRAWN", + "No. of patients with study drug withdrawn due to serious AE" + ), + SERCONTRT = with_label( + AECONTRT == "Y" & AESER == "Y", + "No. of patients with dose modified/interrupted due to serious AE" + ), SERDSM = with_label( - AESER == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with treatment received for serious AE" + AESER == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), + "No. of patients with treatment received for serious AE" + ), + RELWD = with_label( + AEREL == "Y" & AEACN == "DRUG WITHDRAWN", + "No. of patients with study drug withdrawn due to related AE" ), - RELWD = with_label(AEREL == "Y" & AEACN == "DRUG WITHDRAWN", "No. of patients with study drug withdrawn due to related AE"), RELDSM = with_label( AEREL == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose modified/interrupted due to related AE" ), - RELCONTRT = with_label(AECONTRT == "Y" & AEREL == "Y", "No. of patients with treatment received for related AE"), - RELSER = with_label(AESER == "Y" & AEREL == "Y", "No. of patients with serious, related AE") + RELCONTRT = with_label( + AECONTRT == "Y" & AEREL == "Y", + "No. of patients with treatment received for related AE" + ), + RELSER = with_label( + AESER == "Y" & AEREL == "Y", + "No. of patients with serious, related AE" + ) ) adae <- adae %>% @@ -85,6 +131,9 @@ adae <- adae %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} aesi_vars <- c("WD", "DSM", "CONTRT", "ALL_RESOLVED", "NOT_RESOLVED", "SER", "REL") @@ -114,8 +163,15 @@ result <- build_table(lyt_adae, df = adae, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
Optional Lines +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} aesi_vars <- c("WD", "DSM", "CONTRT") aesi_resolved <- c("ALL_RESOLVED", "ALL_RESOLVED_WD", "ALL_RESOLVED_DSM", "ALL_RESOLVED_CONTRT") @@ -180,11 +236,18 @@ result <- build_table(lyt_adae, df = adae, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table For Studies
with Multiple Drugs +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae_mult <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae_mult <- random.cdisc.data::cadae adsl <- filter(adsl, SAFFL == "Y") adae_mult <- filter(adae_mult, ANL01FL == "Y" & SAFFL == "Y") @@ -209,15 +272,27 @@ not_resolved <- adae_mult %>% adae_mult <- adae_mult %>% left_join(not_resolved, by = c("USUBJID")) %>% mutate( - ALL_RESOLVED = with_label(is.na(NOT_RESOLVED), "Total number of patients with all non-fatal AEs resolved"), - NOT_RESOLVED = with_label(!is.na(NOT_RESOLVED), "Total number of patients with at least one non-fatal unresolved or ongoing AE") + ALL_RESOLVED = with_label( + is.na(NOT_RESOLVED), + "Total number of patients with all non-fatal AEs resolved" + ), + NOT_RESOLVED = with_label( + !is.na(NOT_RESOLVED), + "Total number of patients with at least one non-fatal unresolved or ongoing AE" + ) ) adae_mult <- adae_mult %>% mutate( AEDECOD = as.character(AEDECOD), - WD1 = with_label(AEACN1 == "DRUG WITHDRAWN", "Total number of patients with study drug 1 withdrawn due to AE"), - WD2 = with_label(AEACN2 == "DRUG WITHDRAWN", "Total number of patients with study drug 2 withdrawn due to AE"), + WD1 = with_label( + AEACN1 == "DRUG WITHDRAWN", + "Total number of patients with study drug 1 withdrawn due to AE" + ), + WD2 = with_label( + AEACN2 == "DRUG WITHDRAWN", + "Total number of patients with study drug 2 withdrawn due to AE" + ), DSM1 = with_label( AEACN1 %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "Total number of patients with dose of study drug 1 modified/interrupted due to AE" @@ -226,31 +301,74 @@ adae_mult <- adae_mult %>% AEACN2 %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "Total number of patients with dose of study drug 2 modified/interrupted due to AE" ), - CONTRT = with_label(AECONTRT == "Y", "Total number of patients with treatment received for AE"), - SER = with_label(AESER == "Y", "Total number of patients with at least one serious AE"), - REL1 = with_label(AEREL1 == "Y", "Total number of patients with at least one AE related to study drug 1"), - REL2 = with_label(AEREL2 == "Y", "Total number of patients with at least one AE related to study drug 2"), - ALL_RESOLVED_WD1 = with_label(WD1 == TRUE & ALL_RESOLVED == TRUE, "No. of patients with study drug 1 withdrawn due to resolved AE"), + CONTRT = with_label( + AECONTRT == "Y", + "Total number of patients with treatment received for AE" + ), + SER = with_label( + AESER == "Y", + "Total number of patients with at least one serious AE" + ), + REL1 = with_label( + AEREL1 == "Y", + "Total number of patients with at least one AE related to study drug 1" + ), + REL2 = with_label( + AEREL2 == "Y", + "Total number of patients with at least one AE related to study drug 2" + ), + ALL_RESOLVED_WD1 = with_label( + WD1 == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with study drug 1 withdrawn due to resolved AE" + ), ALL_RESOLVED_DSM1 = with_label( - DSM1 == TRUE & ALL_RESOLVED == TRUE, "No. of patients with dose of study drug 1 modified/interrupted due to resolved AE" + DSM1 == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with dose of study drug 1 modified/interrupted due to resolved AE" + ), + ALL_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with treatment received for resolved AE" + ), + ALL_RESOLVED_WD2 = with_label( + WD2 == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with study drug 2 withdrawn due to resolved AE" ), - ALL_RESOLVED_CONTRT = with_label(CONTRT == TRUE & ALL_RESOLVED == TRUE, "No. of patients with treatment received for resolved AE"), - ALL_RESOLVED_WD2 = with_label(WD2 == TRUE & ALL_RESOLVED == TRUE, "No. of patients with study drug 2 withdrawn due to resolved AE"), ALL_RESOLVED_DSM2 = with_label( - DSM2 == TRUE & ALL_RESOLVED == TRUE, "No. of patients with dose of study drug 2 modified/interrupted due to resolved AE" + DSM2 == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with dose of study drug 2 modified/interrupted due to resolved AE" + ), + NOT_RESOLVED_WD1 = with_label( + WD1 == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with study drug 1 withdrawn due to unresolved or ongoing AE" ), - NOT_RESOLVED_WD1 = with_label(WD1 == TRUE & NOT_RESOLVED == TRUE, "No. of patients with study drug 1 withdrawn due to unresolved or ongoing AE"), NOT_RESOLVED_DSM1 = with_label( - DSM1 == TRUE & NOT_RESOLVED == TRUE, "No. of patients with dose of study drug 1 modified/interrupted due to unresolved or ongoing AE" + DSM1 == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with dose of study drug 1 modified/interrupted due to unresolved or ongoing AE" + ), + NOT_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with treatment received for unresolved or ongoing AE" + ), + NOT_RESOLVED_WD2 = with_label( + WD2 == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with study drug 2 withdrawn due to unresolved or ongoing AE" ), - NOT_RESOLVED_CONTRT = with_label(CONTRT == TRUE & NOT_RESOLVED == TRUE, "No. of patients with treatment received for unresolved or ongoing AE"), - NOT_RESOLVED_WD2 = with_label(WD2 == TRUE & NOT_RESOLVED == TRUE, "No. of patients with study drug 2 withdrawn due to unresolved or ongoing AE"), NOT_RESOLVED_DSM2 = with_label( - DSM2 == TRUE & NOT_RESOLVED == TRUE, "No. of patients with dose of study drug 2 modified/interrupted due to unresolved or ongoing AE" + DSM2 == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with dose of study drug 2 modified/interrupted due to unresolved or ongoing AE" + ), + SERWD1 = with_label( + AESER == "Y" & AEACN1 == "DRUG WITHDRAWN", + "No. of patients with study drug 1 withdrawn due to serious AE" + ), + SERWD2 = with_label( + AESER == "Y" & AEACN2 == "DRUG WITHDRAWN", + "No. of patients with study drug 2 withdrawn due to serious AE" + ), + SERCONTRT = with_label( + AECONTRT == "Y" & AESER == "Y", + "No. of patients with treatment received for serious AE" ), - SERWD1 = with_label(AESER == "Y" & AEACN1 == "DRUG WITHDRAWN", "No. of patients with study drug 1 withdrawn due to serious AE"), - SERWD2 = with_label(AESER == "Y" & AEACN2 == "DRUG WITHDRAWN", "No. of patients with study drug 2 withdrawn due to serious AE"), - SERCONTRT = with_label(AECONTRT == "Y" & AESER == "Y", "No. of patients with treatment received for serious AE"), SERDSM1 = with_label( AESER == "Y" & AEACN1 %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose of study drug 1 modified/interrupted due to serious AE" @@ -259,10 +377,22 @@ adae_mult <- adae_mult %>% AESER == "Y" & AEACN2 %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose of study drug 2 modified/interrupted due to serious AE" ), - REL1WD1 = with_label(AEREL1 == "Y" & AEACN1 == "DRUG WITHDRAWN", "No. of patients with study drug 1 withdrawn due to AE related to study drug 1"), - REL1WD2 = with_label(AEREL1 == "Y" & AEACN2 == "DRUG WITHDRAWN", "No. of patients with study drug 1 withdrawn due to AE related to study drug 2"), - REL2WD1 = with_label(AEREL1 == "Y" & AEACN1 == "DRUG WITHDRAWN", "No. of patients with study drug 2 withdrawn due to AE related to study drug 1"), - REL2WD2 = with_label(AEREL1 == "Y" & AEACN2 == "DRUG WITHDRAWN", "No. of patients with study drug 2 withdrawn due to AE related to study drug 2"), + REL1WD1 = with_label( + AEREL1 == "Y" & AEACN1 == "DRUG WITHDRAWN", + "No. of patients with study drug 1 withdrawn due to AE related to study drug 1" + ), + REL1WD2 = with_label( + AEREL1 == "Y" & AEACN2 == "DRUG WITHDRAWN", + "No. of patients with study drug 1 withdrawn due to AE related to study drug 2" + ), + REL2WD1 = with_label( + AEREL1 == "Y" & AEACN1 == "DRUG WITHDRAWN", + "No. of patients with study drug 2 withdrawn due to AE related to study drug 1" + ), + REL2WD2 = with_label( + AEREL1 == "Y" & AEACN2 == "DRUG WITHDRAWN", + "No. of patients with study drug 2 withdrawn due to AE related to study drug 2" + ), REL1DSM1 = with_label( AEREL1 == "Y" & AEACN1 %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose of study drug 1 modified/interrupted due to AE related to study drug 1" @@ -279,10 +409,22 @@ adae_mult <- adae_mult %>% AEREL2 == "Y" & AEACN2 %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose of study drug 2 modified/interrupted due to AE related to study drug 2" ), - REL1CONTRT = with_label(AECONTRT == "Y" & AEREL1 == "Y", "No. of patients with treatment received for AE related to study drug 1"), - REL2CONTRT = with_label(AECONTRT == "Y" & AEREL2 == "Y", "No. of patients with treatment received for AE related to study drug 2"), - REL1SER = with_label(AESER == "Y" & AEREL1 == "Y", "No. of patients with serious AE related to study drug 1"), - REL2SER = with_label(AESER == "Y" & AEREL2 == "Y", "No. of patients with serious AE related to study drug 2") + REL1CONTRT = with_label( + AECONTRT == "Y" & AEREL1 == "Y", + "No. of patients with treatment received for AE related to study drug 1" + ), + REL2CONTRT = with_label( + AECONTRT == "Y" & AEREL2 == "Y", + "No. of patients with treatment received for AE related to study drug 2" + ), + REL1SER = with_label( + AESER == "Y" & AEREL1 == "Y", + "No. of patients with serious AE related to study drug 1" + ), + REL2SER = with_label( + AESER == "Y" & AEREL2 == "Y", + "No. of patients with serious AE related to study drug 2" + ) ) adae_mult <- adae_mult %>% @@ -296,8 +438,22 @@ adae_mult <- adae_mult %>% )) aesi_vars <- c("WD1", "WD2", "DSM1", "DSM2", "CONTRT") -aesi_res <- c("ALL_RESOLVED", "ALL_RESOLVED_WD1", "ALL_RESOLVED_WD2", "ALL_RESOLVED_DSM1", "ALL_RESOLVED_DSM2", "ALL_RESOLVED_CONTRT") -aesi_not_res <- c("NOT_RESOLVED", "NOT_RESOLVED_WD1", "NOT_RESOLVED_WD2", "NOT_RESOLVED_DSM1", "NOT_RESOLVED_DSM2", "NOT_RESOLVED_CONTRT") +aesi_res <- c( + "ALL_RESOLVED", + "ALL_RESOLVED_WD1", + "ALL_RESOLVED_WD2", + "ALL_RESOLVED_DSM1", + "ALL_RESOLVED_DSM2", + "ALL_RESOLVED_CONTRT" +) +aesi_not_res <- c( + "NOT_RESOLVED", + "NOT_RESOLVED_WD1", + "NOT_RESOLVED_WD2", + "NOT_RESOLVED_DSM1", + "NOT_RESOLVED_DSM2", + "NOT_RESOLVED_CONTRT" +) aesi_ser <- c("SER", "SERWD1", "SERWD2", "SERDSM1", "SERDSM2", "SERCONTRT") aesi_rel1 <- c("REL1", "REL1WD1", "REL1WD2", "REL1DSM1", "REL1DSM2", "REL1CONTRT", "REL1SER") aesi_rel2 <- c("REL2", "REL2WD1", "REL2WD2", "REL2DSM1", "REL2DSM2", "REL2CONTRT", "REL2SER") @@ -367,11 +523,20 @@ result <- build_table(lyt_adae_mult, df = adae_mult, alt_counts_df = adsl) result ``` + + +`r webr_code_labels <- c("variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs
by SMQ +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae adsl <- filter(adsl, SAFFL == "Y") adae <- filter(adae, ANL01FL == "Y" & SAFFL == "Y") @@ -407,39 +572,91 @@ not_resolved <- adae_smq %>% adae_smq <- adae_smq %>% left_join(not_resolved, by = c("USUBJID")) %>% mutate( - ALL_RESOLVED = with_label(is.na(NOT_RESOLVED), "Total number of patients with all non-fatal AEs resolved"), - NOT_RESOLVED = with_label(!is.na(NOT_RESOLVED), "Total number of patients with at least one non-fatal unresolved or ongoing AE") + ALL_RESOLVED = with_label( + is.na(NOT_RESOLVED), + "Total number of patients with all non-fatal AEs resolved" + ), + NOT_RESOLVED = with_label( + !is.na(NOT_RESOLVED), + "Total number of patients with at least one non-fatal unresolved or ongoing AE" + ) ) adae_smq <- adae_smq %>% mutate( AEDECOD = as.character(AEDECOD), - WD = with_label(AEACN == "DRUG WITHDRAWN", "Total number of patients with study drug withdrawn due to AE"), + WD = with_label( + AEACN == "DRUG WITHDRAWN", + "Total number of patients with study drug withdrawn due to AE" + ), DSM = with_label( - AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "Total number of patients with dose modified/interrupted due to AE" - ), - CONTRT = with_label(AECONTRT == "Y", "Total number of patients with treatment received for AE"), - SER = with_label(AESER == "Y", "Total number of patients with at least one serious AE"), - REL = with_label(AEREL == "Y", "Total number of patients with at least one related AE"), - ALL_RESOLVED_WD = with_label(WD == TRUE & ALL_RESOLVED == TRUE, "No. of patients with study drug withdrawn due to resolved AE"), - ALL_RESOLVED_DSM = with_label(DSM == TRUE & ALL_RESOLVED == TRUE, "No. of patients with dose modified/interrupted due to resolved AE"), - ALL_RESOLVED_CONTRT = with_label(CONTRT == TRUE & ALL_RESOLVED == TRUE, "No. of patients with treatment received for resolved AE"), - NOT_RESOLVED_WD = with_label(WD == TRUE & NOT_RESOLVED == TRUE, "No. of patients with study drug withdrawn due to unresolved or ongoing AE"), - NOT_RESOLVED_DSM = with_label(DSM == TRUE & NOT_RESOLVED == TRUE, "No. of patients with dose modified/interrupted due to unresolved or ongoing AE"), - NOT_RESOLVED_CONTRT = with_label(CONTRT == TRUE & NOT_RESOLVED == TRUE, "No. of patients with treatment received for unresolved or ongoing AE"), - SERWD = with_label(AESER == "Y" & AEACN == "DRUG WITHDRAWN", "No. of patients with study drug withdrawn due to serious AE"), - SERCONTRT = with_label(AECONTRT == "Y" & AESER == "Y", "No. of patients with treatment received for serious AE"), + AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), + "Total number of patients with dose modified/interrupted due to AE" + ), + CONTRT = with_label( + AECONTRT == "Y", + "Total number of patients with treatment received for AE" + ), + SER = with_label( + AESER == "Y", + "Total number of patients with at least one serious AE" + ), + REL = with_label( + AEREL == "Y", + "Total number of patients with at least one related AE" + ), + ALL_RESOLVED_WD = with_label( + WD == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with study drug withdrawn due to resolved AE" + ), + ALL_RESOLVED_DSM = with_label( + DSM == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with dose modified/interrupted due to resolved AE" + ), + ALL_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & ALL_RESOLVED == TRUE, + "No. of patients with treatment received for resolved AE" + ), + NOT_RESOLVED_WD = with_label( + WD == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with study drug withdrawn due to unresolved or ongoing AE" + ), + NOT_RESOLVED_DSM = with_label( + DSM == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with dose modified/interrupted due to unresolved or ongoing AE" + ), + NOT_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & NOT_RESOLVED == TRUE, + "No. of patients with treatment received for unresolved or ongoing AE" + ), + SERWD = with_label( + AESER == "Y" & AEACN == "DRUG WITHDRAWN", + "No. of patients with study drug withdrawn due to serious AE" + ), + SERCONTRT = with_label( + AECONTRT == "Y" & AESER == "Y", + "No. of patients with treatment received for serious AE" + ), SERDSM = with_label( AESER == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose modified/interrupted due to serious AE" ), - RELWD = with_label(AEREL == "Y" & AEACN == "DRUG WITHDRAWN", "No. of patients with study drug withdrawn due to related AE"), + RELWD = with_label( + AEREL == "Y" & AEACN == "DRUG WITHDRAWN", + "No. of patients with study drug withdrawn due to related AE" + ), RELDSM = with_label( AEREL == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "No. of patients with dose modified/interrupted due to related AE" ), - RELCONTRT = with_label(AECONTRT == "Y" & AEREL == "Y", "No. of patients with treatment received for related AE"), - RELSER = with_label(AESER == "Y" & AEREL == "Y", "No. of patients with serious, related AE") + RELCONTRT = with_label( + AECONTRT == "Y" & AEREL == "Y", + "No. of patients with treatment received for related AE" + ), + RELSER = with_label( + AESER == "Y" & AEREL == "Y", + "No. of patients with serious, related AE" + ) ) adae_smq <- adae_smq %>% @@ -489,20 +706,38 @@ result <- build_table(lyt_adae, df = adae_smq, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +To illustrate, additional variables such as flags (TRUE/FALSE) for selected AEs of interest. +Please consult your SAP on how to handle missing AE grades. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae ADAE <- filter(ADAE, ANL01FL == "Y" & SAFFL == "Y") not_resolved <- ADAE %>% @@ -521,26 +756,55 @@ data <- within(data, { mutate( AEDECOD = as.character(AEDECOD), WD = with_label(AEACN == "DRUG WITHDRAWN", "AE that led to study drug withdrawal"), - DSM = with_label(AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "AE that led to study drug dose modified/interrupted"), + DSM = with_label( + AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), + "AE that led to study drug dose modified/interrupted" + ), CONTRT = with_label(AECONTRT == "Y", "AE that required treatment"), SER = with_label(AESER == "Y", "Serious AE"), REL = with_label(AEREL == "Y", "Related AE"), - ALL_RESOLVED_WD = with_label(WD == TRUE & ALL_RESOLVED == TRUE, "Resolved AE that led to study drug withdrawal"), - ALL_RESOLVED_DSM = with_label(DSM == TRUE & ALL_RESOLVED == TRUE, "Resolved AE that led to study drug dose modified/interrupted"), - ALL_RESOLVED_CONTRT = with_label(CONTRT == TRUE & ALL_RESOLVED == TRUE, "Resolved AE that required treatment"), - NOT_RESOLVED_WD = with_label(WD == TRUE & NOT_RESOLVED == TRUE, "Unresolved AE that led to study drug withdrawal"), - NOT_RESOLVED_DSM = with_label(DSM == TRUE & NOT_RESOLVED == TRUE, "Unresolved AE that led to study drug dose modified/interrupted"), - NOT_RESOLVED_CONTRT = with_label(CONTRT == TRUE & NOT_RESOLVED == TRUE, "Unresolved AE that required treatment"), - SERWD = with_label(AESER == "Y" & AEACN == "DRUG WITHDRAWN", "Serious AE that led to study drug withdrawal"), - SERCONTRT = with_label(AECONTRT == "Y" & AESER == "Y", "Serious AE that required treatment"), + ALL_RESOLVED_WD = with_label( + WD == TRUE & ALL_RESOLVED == TRUE, + "Resolved AE that led to study drug withdrawal" + ), + ALL_RESOLVED_DSM = with_label( + DSM == TRUE & ALL_RESOLVED == TRUE, + "Resolved AE that led to study drug dose modified/interrupted" + ), + ALL_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & ALL_RESOLVED == TRUE, + "Resolved AE that required treatment" + ), + NOT_RESOLVED_WD = with_label( + WD == TRUE & NOT_RESOLVED == TRUE, + "Unresolved AE that led to study drug withdrawal" + ), + NOT_RESOLVED_DSM = with_label( + DSM == TRUE & NOT_RESOLVED == TRUE, + "Unresolved AE that led to study drug dose modified/interrupted" + ), + NOT_RESOLVED_CONTRT = with_label( + CONTRT == TRUE & NOT_RESOLVED == TRUE, + "Unresolved AE that required treatment" + ), + SERWD = with_label( + AESER == "Y" & AEACN == "DRUG WITHDRAWN", + "Serious AE that led to study drug withdrawal" + ), + SERCONTRT = with_label( + AECONTRT == "Y" & AESER == "Y", + "Serious AE that required treatment" + ), SERDSM = with_label( - AESER == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "Serious AE that led to study drug dose modified/interrupted" + AESER == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), + "Serious AE that led to study drug dose modified/interrupted" ), RELWD = with_label( AEREL == "Y" & AEACN == "DRUG WITHDRAWN", "Related AE that led to study drug withdrawal" ), RELDSM = with_label( - AEREL == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), "Related AE that led to study drug dose modified/interrupted" + AEREL == "Y" & AEACN %in% c("DRUG INTERRUPTED", "DOSE INCREASED", "DOSE REDUCED"), + "Related AE that led to study drug dose modified/interrupted" ), RELCONTRT = with_label(AECONTRT == "Y" & AEREL == "Y", "Related AE that required treatment"), RELSER = with_label(AESER == "Y" & AEREL == "Y", "Serious related AE") @@ -581,5 +845,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet02.qmd b/book/tables/adverse-events/aet02.qmd index 899b695422..dc60575841 100644 --- a/book/tables/adverse-events/aet02.qmd +++ b/book/tables/adverse-events/aet02.qmd @@ -5,20 +5,16 @@ subtitle: Adverse Events ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -35,6 +31,9 @@ split_fun <- drop_split_levels ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -70,12 +69,20 @@ lyt <- basic_table(show_colcounts = TRUE) %>% append_varlabels(adae, "AEDECOD", indent = 1L) result <- build_table(lyt, df = adae, alt_counts_df = adsl) +result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + The variable `result` corresponds to the adverse events table. However, it includes many empty rows accounting for events which were not reported. The table can be post-processed to prune empty rows and to sort rows, for example by occurrence. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} result <- result %>% prune_table() %>% @@ -91,8 +98,15 @@ result <- result %>% result ``` +`r webr_code_labels <- c("setup", "variant1", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
Event Totals +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -130,7 +144,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% .indent_mods = c(count = -1L) ) -result <- build_table(lyt, df = adae, alt_counts_df = adsl) %>% # col_count = c(table(adsl$ACTARM), sum(table(adsl$ACTARM))) +result <- build_table(lyt, df = adae, alt_counts_df = adsl) %>% prune_table() %>% sort_at_path( path = c("AEBODSYS", "*", "AEDECOD"), @@ -144,8 +158,15 @@ result <- build_table(lyt, df = adae, alt_counts_df = adsl) %>% # col_count = c( result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
High-Level Term +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -211,8 +232,15 @@ result <- build_table(lyt, df = adae, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Preferred
Terms Only +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -237,8 +265,15 @@ result <- build_table(lyt, df = adae, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Fill-In of
Treatment Groups +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant6, test = list(result_v6 = "result")} adae_5 <- adae %>% dplyr::filter(ACTARM != "C: Combination") @@ -285,8 +320,15 @@ result <- build_table(lyt, df = adae_5, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant6")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with an Incidence Rate
$\geq$ 5% in Any Treatment Group (subsetting
preferred terms based on frequency) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant7, test = list(result_v7 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -333,8 +375,15 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` +`r webr_code_labels <- c("setup", "variant7")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with an Incidence Rate $\geq$ 5% in
Any Treatment Group (subsetting preferred terms
based on frequency with high-level terms) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant8, test = list(result_v8 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -397,8 +446,15 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` +`r webr_code_labels <- c("setup", "variant8")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with an Incidence Rate $\geq$ 10%
in Any Treatment Group (subsetting
preferred terms based on frequency) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant9, test = list(result_v9 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -445,8 +501,15 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` +`r webr_code_labels <- c("setup", "variant9")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with an Incidence Rate $\geq$ 3
Patients in Any Treatment Group (subsetting
preferred terms based on number of patients) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant10, test = list(result_v10 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -493,8 +556,15 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` +`r webr_code_labels <- c("setup", "variant10")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with a Difference in Incidence Rate $\geq$ 5%
Between Any Treatment (subsetting preferred terms based
on difference in percentage between treatment groups) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant11, test = list(result_v11 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -541,8 +611,15 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` +`r webr_code_labels <- c("setup", "variant11")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with an Incidence Rate $\geq$ 5%
in B: Placebo (subsetting preferred terms based
on frequency for a particular treatment group) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant12, test = list(result_v12 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -589,8 +666,15 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` +`r webr_code_labels <- c("setup", "variant12")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of AEs with a Difference in Incidence Rate $\geq$ 5% Between
Arm A and Arm B or Arm C (displaying preferred terms with a
difference of at least x% between selected treatment groups) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant13, test = list(result_v13 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -636,19 +720,33 @@ result <- prune_table(result, keep_rows(row_condition)) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant13")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -686,5 +784,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet02_smq.qmd b/book/tables/adverse-events/aet02_smq.qmd index ac36f7297d..5c89750535 100644 --- a/book/tables/adverse-events/aet02_smq.qmd +++ b/book/tables/adverse-events/aet02_smq.qmd @@ -5,21 +5,17 @@ subtitle: Adverse Events by Standardized MedDRA Query ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) library(stringr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -50,7 +46,11 @@ aag_summary <- aag %>% select(basket, basket_name) # Make a summary of the full ADAE based on AAG by using h_stack_by_baskets helper function -adae_smq_all <- h_stack_by_baskets(df = adae, aag_summary = aag_summary, keys = c("STUDYID", "USUBJID", "ACTARMCD", "AEDECOD")) +adae_smq_all <- h_stack_by_baskets( + df = adae, + aag_summary = aag_summary, + keys = c("STUDYID", "USUBJID", "ACTARMCD", "AEDECOD") +) # Post-process adae_smq_all to keep only certain baskets of interest for variant 1 # Not need to drop baskets for variant 2 as all baskets will be considered. @@ -66,6 +66,9 @@ adae_smq_1 <- adae_smq_all %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} criteria_fun <- function(tr) !is(tr, "ContentRow") && all_zero_or_na(tr) @@ -113,8 +116,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Customized Queries +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} criteria_fun <- function(tr) { !is(tr, "ContentRow") && all_zero_or_na(tr) && !grepl("Total number of", obj_label(tr)) @@ -138,7 +148,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% split_label = "Standardized MedDRA Query" ) %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique", "nonunique"), .labels = c( unique = "Total number of patients with at least one adverse event", @@ -169,19 +179,33 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae }) datanames <- c("ADSL", "ADAE") datanames(data) <- datanames @@ -228,5 +252,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet03.qmd b/book/tables/adverse-events/aet03.qmd index fd1e80a590..259c0c2bd8 100644 --- a/book/tables/adverse-events/aet03.qmd +++ b/book/tables/adverse-events/aet03.qmd @@ -5,20 +5,16 @@ subtitle: Adverse Events by Greatest Intensity ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -33,6 +29,7 @@ adae <- df_explicit_na(adae) %>% For illustrative purposes, we will create a new factor variable in ADAE, `ASEV`, with all intensity levels including `"LIFE THREATENING"`. ```{r pre-processing} +#| code-fold: show adae <- adae %>% mutate(ASEV = as.character(AESEV)) adae$ASEV[1:15] <- "LIFE THREATENING" adae <- adae %>% mutate(ASEV = factor(ASEV, levels = c("MILD", "MODERATE", "SEVERE", "LIFE THREATENING"))) @@ -40,6 +37,9 @@ adae <- adae %>% mutate(ASEV = factor(ASEV, levels = c("MILD", "MODERATE", "SEVE ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} grade_groups <- list("- Any Intensity -" = c("MILD", "MODERATE", "SEVERE", "LIFE THREATENING")) @@ -102,19 +102,35 @@ result <- lyt %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} + + +`r webr_code_labels <- c("setup", "pre-processing", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae }) datanames <- c("ADSL", "ADAE") datanames(data) <- datanames @@ -150,5 +166,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet04.qmd b/book/tables/adverse-events/aet04.qmd index 3be9f34b8f..f38082d6ef 100644 --- a/book/tables/adverse-events/aet04.qmd +++ b/book/tables/adverse-events/aet04.qmd @@ -5,20 +5,16 @@ subtitle: Adverse Events by Highest NCI CTCAE Grade ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) %>% filter(TRT01A != "") @@ -123,6 +119,9 @@ raw_table <- basic_table(show_colcounts = TRUE) %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -188,8 +187,15 @@ result <- lyt %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Fill-In
of Treatment Groups +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} adae2 <- adae %>% filter(ACTARM == "A: Drug X") @@ -257,8 +263,15 @@ result <- lyt %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Fill-In
of Grades +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -323,8 +336,15 @@ result <- lyt %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Collapsing
of Grades +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} grade_groups_1 <- list( "Grade 1-2" = c("1", "2"), @@ -395,6 +415,10 @@ result <- lyt %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Using Worst Grade
Flags from ADAE ```{r variant5} @@ -405,6 +429,9 @@ result ## Table with an Incidence Rate
$\geq$ 40%, Totals Restricted +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant6, test = list(result_v6 = "result")} # Simple wrapper to return subset ADAE to a threshold of xx%. get_adae_trimmed <- function(adsl, adae, cutoff_rate) { @@ -505,17 +532,20 @@ result <- lyt %>% result ``` -## Table with an Incidence Rate
$\geq$ X%, Totals Unrestricted +`r webr_code_labels <- c("setup", "variant6")` +{{< include ../../_utils/webr.qmd >}} +::: -```{r variant7} -#| code-fold: show +## Table with an Incidence Rate
$\geq$ X%, Totals Unrestricted -# Variant 7 was not created. -# With this variant, the SOC level is not trimmed (even if there are no terms left). -``` +Variant 7 was not created. +With this variant, the SOC level is not trimmed (even if there are no terms left). ## Table with an Incidence
Rate $\geq$ 58 Patients +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant8, test = list(result_v8 = "result")} cutoff <- 58L row_condition <- has_count_in_any_col(atleast = cutoff, col_names = levels(adsl$ACTARM)) @@ -525,8 +555,15 @@ result <- prune_table(raw_table, keep_content_rows(my_row_condition(row_conditio result ``` +`r webr_code_labels <- c("setup", "variant8")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with a Difference in
Incidence Rate $\geq$ 10% +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant9, test = list(result_v9 = "result")} cutoff <- 0.1 row_condition <- has_fractions_difference(atleast = cutoff, col_names = levels(adsl$ACTARM)) @@ -536,18 +573,19 @@ result <- prune_table(raw_table, keep_content_rows(my_row_condition(row_conditio result ``` -## Table with an Incidence Rate
$\geq$ 5%, SOCs \< 5% Removed +`r webr_code_labels <- c("setup", "variant9")` +{{< include ../../_utils/webr.qmd >}} +::: -```{r variant10} -#| code-fold: show +## Table with an Incidence Rate
$\geq$ 5%, SOCs \< 5% Removed -# Variant 10 was not done -# With this variant, SOC levels above the threshold are still in the table even if -# there are no terms left. -``` +Variant 10 was not done With this variant, SOC levels above the threshold are still in the table even if there are no terms left. ## Table with an Incidence Rate $\geq$ 40%,
All SOCs w/o Preferred Terms Removed +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant11, test = list(result_v11 = "result")} cutoff <- 0.4 row_condition <- has_fraction_in_any_col(atleast = cutoff, col_names = levels(adsl$ACTARM)) @@ -557,19 +595,33 @@ result <- prune_table(raw_table, keep_content_rows(my_row_condition(row_conditio result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant11")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae }) datanames <- c("ADSL", "ADAE") datanames(data) <- datanames @@ -605,5 +657,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet04_pi.qmd b/book/tables/adverse-events/aet04_pi.qmd index 75801a906a..26103c7e0c 100644 --- a/book/tables/adverse-events/aet04_pi.qmd +++ b/book/tables/adverse-events/aet04_pi.qmd @@ -5,15 +5,11 @@ subtitle: Adverse Events Reported in $\geq$ 10% of Patients by Highest NCI CTCAE ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) @@ -41,7 +37,7 @@ full_table_aet04_pi <- function(adsl, adae_max) { col_counts <- rep(table(adsl$ACTARM), each = length(grade_groups)) basic_table() %>% split_cols_by("ACTARM") %>% - split_cols_by_groups("MAXAETOXGR", groups = grade_groups) %>% + split_cols_by_groups("MAXAETOXGR", groups_list = grade_groups) %>% split_rows_by("AEBODSYS", child_labels = "visible", nested = FALSE, indent_mod = -1L, split_fun = trim_levels_in_group("AEDECOD") @@ -67,14 +63,17 @@ criteria_fun <- function(tr) { is(tr, "ContentRow") } -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae_max <- synthetic_cdisc_dataset("latest", "adae") %>% +adsl <- random.cdisc.data::cadsl +adae_max <- random.cdisc.data::cadae %>% preprocess_adae() %>% df_explicit_na() ``` ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} full_table <- full_table_aet04_pi(adsl, adae_max) %>% sort_at_path( @@ -97,12 +96,19 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Patients Treated with a Particular Treatment by Highest NCI
CTCAE Grade (specifying a treatment for selecting preferred terms) Note: User needs to specify the column index for filtering the table. The current example uses the "Any Grade" column for treatment A: Drug X with a filtering threshold at 0.37; AEs reported in greater than 37% of patients in treatment A: Drug X are shown. This can be changed by varying the parameter values in the `has_fraction_in_cols` function. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} full_table <- full_table_aet04_pi(adsl, adae_max) %>% sort_at_path( @@ -125,12 +131,19 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events Reported in $\geq$ 5% of Patients by
Highest NCI CTCAE Grade (changing the threshold) Note: User needs to specify the column index for filtering the table. The current example uses column indices 1, 4, and 7 with a filtering threshold at 0.40 to demonstrate the filtering ability; AEs reported in greater than 40% of patients are shown. This can be changed by varying the parameter values in the `has_fraction_in_any_col` function. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} full_table <- full_table_aet04_pi(adsl, adae_max) %>% sort_at_path( @@ -153,11 +166,18 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events Reported in $\geq$ 5% of Patients and
$\geq$ 2% Difference Between Treatments by Highest
NCI CTCAE Grade (using more than one condition) Note: User needs to specify the column index for filtering the table. The current example uses column indices 1, 4, and 7 to filter for AEs reported in $\geq$ 30% of patients and AEs reported with a $\geq$ 15% difference between treatments to demonstrate the filtering ability; this can be changed by varying the parameter values in the `has_fraction_in_any_col` and `has_fractions_difference` functions. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} full_table <- full_table_aet04_pi(adsl, adae_max) %>% sort_at_path( @@ -182,12 +202,19 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events Reported in $\geq$ 10% of Patients for Any Grade
or $\geq$ 5% of Patients for Grade 3-4 by Highest NCI CTCAE
Grade (using different condition depending on the grade) Note: User needs to specify the column index for filtering the table. The current example filters using column indices 1, 4, and 7 to include AEs reported in $\geq$ 40% of patients and using column indices 2, 5, and 8 to include grade 3-4 AEs reported in $\geq$ 20% of patients. These thresholds are chosen to demonstrate the filtering ability; they can be changed by varying parameter values in the `has_fraction_in_any_col` function. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} full_table <- full_table_aet04_pi(adsl, adae_max) %>% sort_at_path( @@ -212,12 +239,19 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Standard Table with
Modified Grade Grouping Note: User can specify/modify the grouping of grades, as shown in this example. In addition, the user needs to specify the column index for filtering the table. The current example uses the "Any Grade" columns with a filtering threshold at 0.40; this can be changed by varying the parameter values in the `has_fraction_in_any_col` function. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant6, test = list(result_v6 = "result")} grade_groups <- list( "Any Grade (%)" = c("1", "2", "3", "4", "5"), @@ -230,7 +264,7 @@ col_counts <- rep(table(adsl$ACTARM), each = length(grade_groups)) full_table <- basic_table() %>% split_cols_by("ACTARM") %>% - split_cols_by_groups("MAXAETOXGR", groups = grade_groups) %>% + split_cols_by_groups("MAXAETOXGR", groups_list = grade_groups) %>% split_rows_by("AEBODSYS", child_labels = "visible", nested = FALSE, indent_mod = -1L, split_fun = trim_levels_in_group("AEDECOD") @@ -270,12 +304,19 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant6")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Standard Table with
Overlapping Grade Groupings Note: User needs to specify the column index for filtering the table. The current example uses column indices 1, 5, and 9 with a filtering threshold at 0.40 to demonstrate the filtering ability; any grade AEs reported in greater than 40% of patients are shown. This can be changed by varying the parameter values in the `has_fraction_in_any_col` function. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant7, test = list(result_v7 = "result")} grade_groups <- list( "Any Grade (%)" = c("1", "2", "3", "4", "5"), @@ -287,7 +328,7 @@ grade_groups <- list( col_counts <- rep(table(adsl$ACTARM), each = length(grade_groups)) full_table <- basic_table() %>% split_cols_by("ACTARM") %>% - split_cols_by_groups("MAXAETOXGR", groups = grade_groups) %>% + split_cols_by_groups("MAXAETOXGR", groups_list = grade_groups) %>% split_rows_by("AEBODSYS", child_labels = "visible", nested = FALSE, indent_mod = -1L, split_fun = trim_levels_in_group("AEDECOD") @@ -327,12 +368,19 @@ result <- full_table %>% result ``` +`r webr_code_labels <- c("setup", "variant7")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Standard Table without SOCs Note: User needs to specify the column index for filtering the table. The current example uses column indices 1, 4, and 7 with a filtering threshold at 0.20 to demonstrate the filtering ability; any grade AEs (Preferred Terms Only) reported in greater than 20% of patients are shown. This can be changed by varying the parameter values in the `has_fraction_in_any_col` function. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant8, test = list(result_v8 = "result")} grade_groups <- list( "Any Grade (%)" = c("1", "2", "3", "4", "5"), @@ -344,7 +392,7 @@ col_counts <- rep(table(adsl$ACTARM), each = length(grade_groups)) full_table <- basic_table() %>% split_cols_by("ACTARM") %>% - split_cols_by_groups("MAXAETOXGR", groups = grade_groups) %>% + split_cols_by_groups("MAXAETOXGR", groups_list = grade_groups) %>% analyze_vars( "AEDECOD", na.rm = FALSE, @@ -368,19 +416,33 @@ result <- full_table %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant8")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae }) datanames <- c("ADSL", "ADAE") datanames(data) <- datanames @@ -423,5 +485,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet05.qmd b/book/tables/adverse-events/aet05.qmd index cba8ce303d..486d9e19b4 100644 --- a/book/tables/adverse-events/aet05.qmd +++ b/book/tables/adverse-events/aet05.qmd @@ -5,20 +5,16 @@ subtitle: Adverse Event Rate Adjusted for Patient-Years at Risk -- First Occurre ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adaette <- synthetic_cdisc_dataset("latest", "adaette") +adsl <- random.cdisc.data::cadsl +adaette <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -32,6 +28,9 @@ anl <- adaette %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -46,10 +45,17 @@ result <- build_table(lyt, anl, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Setting Type of Confidence Interval The type of confidence interval can be specified through the `conf_type` argument. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -68,20 +74,35 @@ result <- build_table(lyt, anl, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAETTE <- synthetic_cdisc_dataset("latest", "adaette") + + ADSL <- random.cdisc.data::cadsl + ADAETTE <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -127,5 +148,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet05_all.qmd b/book/tables/adverse-events/aet05_all.qmd index 3df59442f8..d57bca053a 100644 --- a/book/tables/adverse-events/aet05_all.qmd +++ b/book/tables/adverse-events/aet05_all.qmd @@ -5,20 +5,16 @@ subtitle: Adverse Event Rate Adjusted for Patient-Years at Risk -- All Occurrenc ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adaette <- synthetic_cdisc_dataset("latest", "adaette") +adsl <- random.cdisc.data::cadsl +adaette <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -39,6 +35,9 @@ anl <- full_join(anl_tte, anl_events, by = c("USUBJID", "ARM", "ARMCD")) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -52,10 +51,17 @@ result <- build_table(lyt, anl, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Setting Type of Confidence Interval The type of confidence interval can be specified through the `conf_type` argument. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -69,20 +75,35 @@ result <- build_table(lyt, anl, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAETTE <- synthetic_cdisc_dataset("latest", "adaette") + + ADSL <- random.cdisc.data::cadsl + ADAETTE <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -135,5 +156,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet06.qmd b/book/tables/adverse-events/aet06.qmd index 551074d94a..c2d0bc3676 100644 --- a/book/tables/adverse-events/aet06.qmd +++ b/book/tables/adverse-events/aet06.qmd @@ -5,21 +5,17 @@ subtitle: Adverse Events by Baseline Characteristic ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") -adsub <- synthetic_cdisc_dataset("latest", "adsub") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae +adsub <- random.cdisc.data::cadsub adsub_bmi <- adsub %>% filter(PARAMCD == "BBMISI") %>% @@ -72,6 +68,9 @@ adsub_bmi <- df_explicit_na(adsub_bmi) ## Adverse Events by Sex +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -124,8 +123,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events by Other Baseline
Characteristics (e.g. Biomarker Group) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} split_fun <- drop_split_levels @@ -133,7 +139,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% split_cols_by("BMRKR2") %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique", "nonunique"), .labels = c( unique = "Total number of patients with at least one adverse event", @@ -178,8 +184,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events by Baseline Characteristic
from ADSUB (e.g. BMI Category) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} split_fun <- drop_split_levels @@ -232,8 +245,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events by Regrouped Baseline
Characteristics (e.g. Race) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} split_fun <- drop_split_levels @@ -287,8 +307,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events by Baseline Characteristics
(e.g. Sex) Including High-Level Terms +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} split_fun <- drop_split_levels @@ -361,19 +388,33 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -411,5 +452,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet06_smq.qmd b/book/tables/adverse-events/aet06_smq.qmd index 30af5f3aa8..59d1cf956f 100644 --- a/book/tables/adverse-events/aet06_smq.qmd +++ b/book/tables/adverse-events/aet06_smq.qmd @@ -5,21 +5,17 @@ subtitle: Adverse Events by Baseline Characteristic, by SMQ and Preferred Term ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) library(stringr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae adsl_labels <- var_labels(adsl) adae_labels <- var_labels(adae) @@ -97,6 +93,9 @@ adae_smq_1 <- adae_smq_all %>% ## Adverse Events by Sex,
by SMQ and Preferred Term +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} criteria_fun <- function(tr) !is(tr, "ContentRow") && all_zero_or_na(tr) @@ -139,8 +138,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events by Sex, by SMQ and
Preferred Term (with Customized Queries) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} criteria_fun <- function(tr) { !is(tr, "ContentRow") && all_zero_or_na(tr) && !grepl("Total number of", obj_label(tr)) @@ -163,7 +169,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% split_label = "Standardized MedDRA Query" ) %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique", "nonunique"), .labels = c( unique = "Total number of patients with at least one adverse event", @@ -191,8 +197,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Adverse Events by Other Baseline
Characteristics (e.g. Age Group) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} criteria_fun <- function(tr) !is(tr, "ContentRow") && all_zero_or_na(tr) @@ -235,19 +248,34 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") %>% + + ADSL <- random.cdisc.data::cadsl %>% mutate( AGE65 = case_when( AGE >= 65 ~ ">= 65", @@ -258,7 +286,7 @@ data <- within(data, { levels = c("< 65", ">= 65") ) ) - ADAE <- synthetic_cdisc_dataset("latest", "adae") %>% + ADAE <- random.cdisc.data::cadae %>% mutate( AGE65 = case_when( AGE >= 65 ~ ">= 65", @@ -316,5 +344,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet07.qmd b/book/tables/adverse-events/aet07.qmd index d7b33346a4..313e0cb2ca 100644 --- a/book/tables/adverse-events/aet07.qmd +++ b/book/tables/adverse-events/aet07.qmd @@ -5,22 +5,16 @@ subtitle: Adverse Events Resulting in Death ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -For illustrative purposes, we will pre-process `AESDTH` in ADAE so there are no deaths in arm A and concatenate `AEBODSYS` and `AEDECOD` as per GDSR output standards for AET07. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -42,6 +36,9 @@ adae_f <- adae %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -49,7 +46,7 @@ split_fun <- drop_split_levels lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM", split_fun = drop_split_levels) %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = "unique", .labels = c(unique = "Total number of deaths"), show_labels = "hidden" @@ -74,13 +71,20 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Fill-In of Treatment Groups without Deaths +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = "unique", .labels = c(unique = "Total number of deaths"), show_labels = "hidden" @@ -105,20 +109,37 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +For illustrative purposes, we will pre-process `AESDTH` in ADAE so there are no deaths in arm A and concatenate `AEBODSYS` and `AEDECOD` as per GDSR output standards for AET07. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { library(dplyr) - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -131,7 +152,7 @@ data <- within(data, { TRUE ~ "" ) ) %>% - var_relabel( + col_relabel( DTHFL = "Subject Death Flag" ) @@ -147,7 +168,7 @@ data <- within(data, { ) %>% filter(AESDTH == "Y") %>% mutate(ARM = droplevels(ARM)) %>% - var_relabel(SOC_PT = "MedDRA SOC and Preferred Term") + col_relabel(SOC_PT = "MedDRA SOC and Preferred Term") }) datanames <- c("ADSL", "ADAE") datanames(data) <- datanames @@ -181,5 +202,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet09.qmd b/book/tables/adverse-events/aet09.qmd index 9117b38516..fbfa1ec8c9 100644 --- a/book/tables/adverse-events/aet09.qmd +++ b/book/tables/adverse-events/aet09.qmd @@ -5,20 +5,16 @@ subtitle: Adverse Events Related to Study Drug ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -34,6 +30,9 @@ var_labels(adae_f) <- adae_labels ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -92,8 +91,15 @@ result <- tbl1 %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Including High-Level Terms +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM") %>% @@ -169,19 +175,33 @@ result <- tbl2 %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -220,5 +240,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet09_smq.qmd b/book/tables/adverse-events/aet09_smq.qmd index 53f3a5ac93..36726a591f 100644 --- a/book/tables/adverse-events/aet09_smq.qmd +++ b/book/tables/adverse-events/aet09_smq.qmd @@ -5,21 +5,17 @@ subtitle: Adverse Events Related to Study Drug by Standardized MedDRA Query ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) library(stringr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing # levels. For details, refer to Teal and Study Data article. @@ -54,7 +50,11 @@ aag_summary <- aag %>% select(basket, basket_name) # Make a summary of the full ADAE based on AAG by using h_stack_by_baskets helper function -adae_smq_all <- h_stack_by_baskets(df = adae_rel, aag_summary = aag_summary, keys = c("STUDYID", "USUBJID", "ACTARMCD", "AEDECOD")) +adae_smq_all <- h_stack_by_baskets( + df = adae_rel, + aag_summary = aag_summary, + keys = c("STUDYID", "USUBJID", "ACTARMCD", "AEDECOD") +) # Post-process adae_smq_all to keep only certain baskets of interest for variant 1 # Not need to drop baskets for variant 2 as all baskets will be considered. @@ -70,6 +70,9 @@ adae_smq_1 <- adae_smq_all %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} criteria_fun <- function(tr) !is(tr, "ContentRow") && all_zero_or_na(tr) @@ -117,8 +120,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Customized Queries +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} criteria_fun <- function(tr) { !is(tr, "ContentRow") && all_zero_or_na(tr) && !grepl("Total number of", obj_label(tr)) @@ -142,7 +152,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% split_label = "Standardized MedDRA Query" ) %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique", "nonunique"), .labels = c( unique = "Total number of patients with at least one adverse event", @@ -173,23 +183,37 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + Note that filtering AEs for relatedness to study drug is not a necessary data pre-processing step for the module. It can be achieved using the `teal` module filter panel. The example here pre-sets the filters using `AEREL = "Y"` in `adae`. -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae }) datanames <- c("ADSL", "ADAE") datanames(data) <- datanames @@ -238,5 +262,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/adverse-events/aet10.qmd b/book/tables/adverse-events/aet10.qmd index c61fc615d1..3c2b6f29c8 100644 --- a/book/tables/adverse-events/aet10.qmd +++ b/book/tables/adverse-events/aet10.qmd @@ -5,20 +5,16 @@ subtitle: Most Common ($\geq$ 5%) Adverse Events ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -29,6 +25,9 @@ adae <- df_explicit_na(adae) The "All Patients" column is not required in this table but for illustrative purposes we include it to show correct sorting. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by( @@ -62,8 +61,15 @@ result <- sort_at_path( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Most Common ($\geq$ 35%) Adverse Events (setting threshold) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by( @@ -97,22 +103,36 @@ result <- sort_at_path( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + The desired frequency is specified in `prune_freq`. For illustration, frequency is set to $\geq$ 35%. -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAE <- synthetic_cdisc_dataset("latest", "adae") + ADSL <- random.cdisc.data::cadsl + ADAE <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -151,5 +171,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/concomitant-medications/cmt01.qmd b/book/tables/concomitant-medications/cmt01.qmd index 13d7c87832..cd67b6d3c0 100644 --- a/book/tables/concomitant-medications/cmt01.qmd +++ b/book/tables/concomitant-medications/cmt01.qmd @@ -5,21 +5,18 @@ subtitle: Concomitant Medications (GNEDrug Legacy Coding) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -# The following tables require ADCM data structure that follows the legacy concomitant medication coding. WHO coding is not used. -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adcm <- synthetic_cdisc_dataset("latest", "adcm") +# The following tables require ADCM data structure that follows the legacy concomitant medication coding. +# WHO coding is not used. +adsl <- random.cdisc.data::cadsl +adcm <- random.cdisc.data::cadcm # Below step is to set up example data based on legacy standard. adcm <- adcm %>% @@ -39,6 +36,9 @@ adcm_prior <- adcm %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -86,8 +86,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Showing Medications Prior
to the Start of the Study +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM") %>% @@ -131,13 +138,20 @@ result <- build_table( result ``` -Table with Subtotal Per
Medication Class Suppressed +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Table with Subtotal Per
Medication Class Suppressed + +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM") %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique", "nonunique"), .labels = c( unique = "Total number of patients with at least one treatment", @@ -172,8 +186,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Sorted by Total Column Showing
Additional "All Patients" Column +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM") %>% @@ -225,23 +246,37 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + Here, `adcm` is processed to keep only one path per treatment. -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADCM <- synthetic_cdisc_dataset("latest", "adcm") + ADSL <- random.cdisc.data::cadsl + ADCM <- random.cdisc.data::cadcm # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -284,5 +319,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/concomitant-medications/cmt01a.qmd b/book/tables/concomitant-medications/cmt01a.qmd index 4a6a223490..7b57d4d00a 100644 --- a/book/tables/concomitant-medications/cmt01a.qmd +++ b/book/tables/concomitant-medications/cmt01a.qmd @@ -5,27 +5,19 @@ subtitle: Concomitant Medications by Medication Class and Preferred Name ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adcm <- synthetic_cdisc_dataset("latest", "adcm") +adsl <- random.cdisc.data::cadsl +adcm <- random.cdisc.data::cadcm adcm$CMSEQ <- as.factor(adcm$CMSEQ) -# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. -# If you want your missing levels to show as "No Coding Available", please use -# adsl <- df_explicit_na(adsl, na_level = "No Coding Available") -# adcm <- df_explicit_na(adcm, na_level = "No Coding Available") adsl <- df_explicit_na(adsl) adcm <- df_explicit_na(adcm) @@ -40,6 +32,9 @@ adcm <- adcm %>% ## Standard Table,
Safety-Evaluable Patients +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -85,8 +80,15 @@ result <- build_table(lyt = lyt, df = adcm, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Changing
ATC Class Level +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} split_fun <- drop_split_levels @@ -132,8 +134,15 @@ result <- build_table(lyt = lyt, df = adcm, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Classes
Sorted by Frequency +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} split_fun <- drop_split_levels @@ -176,8 +185,15 @@ result <- build_table(lyt = lyt, df = adcm, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Total Number of Treatments
per Medication Class Suppressed +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} split_fun <- drop_split_levels @@ -222,11 +238,26 @@ result <- build_table(lyt = lyt, df = adcm, alt_counts_df = adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", "ATC4") @@ -234,16 +265,10 @@ adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", ## Data reproducible code data <- teal_data() data <- within(data, { - library(dplyr) - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADCM <- synthetic_cdisc_dataset("latest", "adcm") + ADSL <- random.cdisc.data::cadsl + ADCM <- random.cdisc.data::cadcm ADCM$CMSEQ <- as.integer(ADCM$CMSEQ) - # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. - # If you want your missing levels to show as "No Coding Available", please use - # adsl <- df_explicit_na(adsl, na_level = "No Coding Available") - # adcm <- df_explicit_na(adcm, na_level = "No Coding Available") + ADSL <- df_explicit_na(ADSL) ADCM <- df_explicit_na(ADCM) }) @@ -285,5 +310,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/concomitant-medications/cmt01b.qmd b/book/tables/concomitant-medications/cmt01b.qmd index 1bf1deee3e..5bf303781a 100644 --- a/book/tables/concomitant-medications/cmt01b.qmd +++ b/book/tables/concomitant-medications/cmt01b.qmd @@ -5,27 +5,19 @@ subtitle: Concomitant Medications by Medication Class and Preferred Name ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adcm <- synthetic_cdisc_dataset("latest", "adcm") +adsl <- random.cdisc.data::cadsl +adcm <- random.cdisc.data::cadcm adcm$CMSEQ <- as.factor(adcm$CMSEQ) -# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. -# If you want your missing levels to show as "No Coding Available", please use -# adsl <- df_explicit_na(adsl, na_level = "No Coding Available") -# adcm <- df_explicit_na(adcm, na_level = "No Coding Available") adsl <- df_explicit_na(adsl) adcm <- df_explicit_na(adcm) @@ -39,6 +31,9 @@ adcm <- adcm %>% ## Standard Table with
\> 1 ATC Class Level +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -112,15 +107,22 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Changing
Class Levels +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} split_fun <- drop_split_levels lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", count_by = "CMSEQ", .stats = c("unique", "nonunique"), .labels = c( @@ -171,6 +173,10 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Classes
Sorted by Frequency ```{r variant3} @@ -181,6 +187,9 @@ result ## Table with Total Number of
Treatments per Medication
Class Suppressed +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} split_fun <- drop_split_levels @@ -253,11 +262,26 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", "ATC4") @@ -265,16 +289,10 @@ adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", ## Data reproducible code data <- teal_data() data <- within(data, { - library(dplyr) - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADCM <- synthetic_cdisc_dataset("latest", "adcm") + ADSL <- random.cdisc.data::cadsl + ADCM <- random.cdisc.data::cadcm ADCM$CMSEQ <- as.integer(ADCM$CMSEQ) - # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. - # If you want your missing levels to show as "No Coding Available", please use - # adsl <- df_explicit_na(adsl, na_level = "No Coding Available") - # adcm <- df_explicit_na(adcm, na_level = "No Coding Available") + ADSL <- df_explicit_na(ADSL) ADCM <- df_explicit_na(ADCM) }) @@ -315,5 +333,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/concomitant-medications/cmt02_pt.qmd b/book/tables/concomitant-medications/cmt02_pt.qmd index 62e4f39b2e..b2dc1e73e0 100644 --- a/book/tables/concomitant-medications/cmt02_pt.qmd +++ b/book/tables/concomitant-medications/cmt02_pt.qmd @@ -5,20 +5,16 @@ subtitle: Concomitant Medications by Preferred Name (WHODrug Coding) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adcm <- synthetic_cdisc_dataset("latest", "adcm") +adsl <- random.cdisc.data::cadsl +adcm <- random.cdisc.data::cadcm adcm$CMSEQ <- as.factor(adcm$CMSEQ) @@ -37,6 +33,9 @@ adcm <- adcm %>% filter(ATIREL == "CONCOMITANT") ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -65,11 +64,26 @@ result <- build_table(lyt = lyt, df = adcm, alt_counts_df = adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", "ATC4") @@ -77,16 +91,10 @@ adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", ## Data reproducible code data <- teal_data() data <- within(data, { - library(dplyr) - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADCM <- synthetic_cdisc_dataset("latest", "adcm") + ADSL <- random.cdisc.data::cadsl + ADCM <- random.cdisc.data::cadcm ADCM$CMSEQ <- as.integer(ADCM$CMSEQ) - # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. - # If you want your missing levels to show as "No Coding Available", please use - # adsl <- df_explicit_na(adsl, na_level = "No Coding Available") - # adcm <- df_explicit_na(adcm, na_level = "No Coding Available") + ADSL <- df_explicit_na(ADSL) ADCM <- df_explicit_na(ADCM) }) @@ -128,5 +136,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/deaths/dtht01.qmd b/book/tables/deaths/dtht01.qmd index 90fe424868..3fc1e690fb 100644 --- a/book/tables/deaths/dtht01.qmd +++ b/book/tables/deaths/dtht01.qmd @@ -5,19 +5,15 @@ subtitle: Deaths ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) %>% filter(SAFFL == "Y") @@ -28,6 +24,9 @@ adsl$DTHCAT <- factor(adsl$DTHCAT, levels = c("ADVERSE EVENT", "PROGRESSIVE DISE ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM", split_fun = add_overall_level("All Patients", first = FALSE)) %>% @@ -43,8 +42,15 @@ result <- build_table(lyt, df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting
Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM", split_fun = add_overall_level("All Patients", first = FALSE)) %>% @@ -81,8 +87,15 @@ result <- build_table(lyt, df = adsl) %>% prune_table() result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table for Studies Collecting Death
Information from Public Records +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} dthcaus_levels <- levels(adsl[adsl$DTHCAT == "OTHER", ]$DTHCAUS) @@ -126,8 +139,15 @@ result <- build_table(lyt, df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Adding Details for "All other causes"
Category for Studies Collecting Death
Information from Public Records +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} dthcaus_levels <- levels(adsl[adsl$DTHCAT == "OTHER", ]$DTHCAUS) @@ -181,15 +201,18 @@ result <- build_table(lyt, df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/demography/dmt01.qmd b/book/tables/demography/dmt01.qmd index 0297f7368d..74ac32d306 100644 --- a/book/tables/demography/dmt01.qmd +++ b/book/tables/demography/dmt01.qmd @@ -5,22 +5,18 @@ subtitle: Demographics and Baseline Characteristics ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) library(tidyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -advs <- synthetic_cdisc_dataset("latest", "advs") -adsub <- synthetic_cdisc_dataset("latest", "adsub") +adsl <- random.cdisc.data::cadsl +advs <- random.cdisc.data::cadvs +adsub <- random.cdisc.data::cadsub # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -87,6 +83,9 @@ adsl <- adsl %>% ## Table with an Additional
Study-Specific Continuous Variable +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} vars <- c("AGE", "AGEGR1", "SEX", "ETHNIC", "RACE", "BMRKR1") var_labels <- c( @@ -110,8 +109,15 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with an Additional
Study-Specific Categorical Variable +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} vars <- c("AGE", "AGEGR1", "SEX", "ETHNIC", "RACE", "BMRKR1_CAT") var_labels <- c( @@ -134,8 +140,15 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Subgrouping
for Some Analyses +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} split_fun <- drop_split_levels @@ -154,8 +167,15 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Additional Vital
Signs Baseline Values +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} result <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -174,8 +194,15 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Additional
Values from ADSUB +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} result <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -193,18 +220,32 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") + ADSL <- random.cdisc.data::cadsl # Include `EOSDY` and `DCSREAS` variables below because they contain missing data. stopifnot( @@ -236,5 +277,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/disclosures/disclosurest01.qmd b/book/tables/disclosures/disclosurest01.qmd index aa095a6804..6643615e08 100644 --- a/book/tables/disclosures/disclosurest01.qmd +++ b/book/tables/disclosures/disclosurest01.qmd @@ -5,19 +5,18 @@ subtitle: Disclosures Outputs ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset +:::: {.panel-tabset} ## Patient Disposition Table
(CTgov & EudraCT) #### Data Setup -```{r setup, message=FALSE} +```{r setup1, message = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -91,6 +90,9 @@ adsl0 <- adsl %>% #### Patient Disposition Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- keep_split_levels("Y") @@ -123,16 +125,19 @@ result <- build_table(lyt = lyt, df = adsl0) result ``` +`r webr_code_labels <- c("setup1", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Demographic Table
(CTgov & EudraCT) #### Data Setup -```{r} +```{r setup2, message = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -159,6 +164,9 @@ adsl <- adsl %>% #### Demographic Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} vars <- c("AGE", "AGEGRP", "SEX", "RACE", "ETHNIC") var_labels <- c("Age (yr)", "Age group", "Sex", "Race", "Ethnicity") @@ -175,16 +183,19 @@ result <- build_table(lyt = lyt, df = adsl) result ``` +`r webr_code_labels <- c("setup2", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Enrollment by Country
Table (EudraCT only) #### Data Setup -```{r} +```{r setup3, message = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl adsl_labels <- var_labels(adsl) # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. @@ -199,6 +210,9 @@ var_labels(adsl) <- c(adsl_labels) #### Enrollment by Country Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -210,19 +224,22 @@ result <- build_table(lyt, adsl) result ``` +`r webr_code_labels <- c("setup3", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Non-Serious Adverse Events
Reported in $\geq$ 5% of Patients in Any
Treatment Group (CTgov & EudraCT) #### Data Setup Trimming function `get_adae_trimmed` is defined to filter AEs with greater than 5% incidence rate. -```{r} +```{r setup4, message = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -267,6 +284,9 @@ adae_trim <- get_adae_trimmed(adsl, adae_nonser, cutoff_rate = 0.05) #### Non-Serious Adverse Events Report in $\geq$ 5% of Patients in Any Treatment Group +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} # Define the split function split_fun <- drop_split_levels @@ -274,7 +294,7 @@ split_fun <- drop_split_levels lyt <- basic_table() %>% split_cols_by("ARM") %>% summarize_patients_events_in_cols( - custom_label = "Total number of patients with at least one non-serious adverse event occuring at a relative frequency of >=5%" + custom_label = "Total number of patients with at least one non-serious adverse event occuring at a relative frequency of >=5%" # nolint: line_length. ) %>% split_rows_by("AEBODSYS", nested = FALSE, @@ -292,18 +312,21 @@ result <- build_table(lyt, adae_trim) result ``` +`r webr_code_labels <- c("setup4", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Serious Adverse Events, Fatal SAEs
and SAEs Related to Study Medication,
by Treatment Group (CTgov & EudraCT) For illustrative purposes, the `adae` data is filtered by arm "A: Drug X" here. #### Data Setup -```{r} +```{r setup5, message = FALSE} library(tern) -library(scda) library(dplyr) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adae <- df_explicit_na(adae) @@ -320,6 +343,9 @@ filters_list <- list( #### Serious Adverse Events, Fatal SAEs and SAEs Related to Study Medication, by Treatment Group +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} # Define the split function split_fun <- drop_split_levels @@ -351,21 +377,27 @@ result <- build_table(lyt, adae_serious_arm) result ``` +`r webr_code_labels <- c("setup5", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Death Table
(EudraCT only) #### Data Setup -```{r} +```{r setup6, message = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae ``` #### Death Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant6, test = list(result_v6 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -380,8 +412,12 @@ result <- build_table(lyt, adae, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup6", "variant6")` +{{< include ../../_utils/webr.qmd >}} +::: -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/disclosures/eudrat01.qmd b/book/tables/disclosures/eudrat01.qmd index ed44538123..bb7b5eda8d 100644 --- a/book/tables/disclosures/eudrat01.qmd +++ b/book/tables/disclosures/eudrat01.qmd @@ -5,22 +5,16 @@ subtitle: Non-Serious Adverse Events Reported in $\geq$ 5% of Patients in Any Tr ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -Define a trimming function `get_adae_trimmed` to filter for AEs of greater than 5% incidence rate. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -65,6 +59,9 @@ adae_trim <- get_adae_trimmed(adsl, adae_nonser, cutoff_rate = 0.05) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -72,7 +69,7 @@ split_fun <- drop_split_levels lyt <- basic_table() %>% split_cols_by("ARM") %>% summarize_patients_events_in_cols( - custom_label = "Total number of patients with at least one non-serious adverse event occuring at a relative frequency of >=5% and number of events" + custom_label = "Total number of patients with at least one non-serious adverse event occuring at a relative frequency of >=5% and number of events" # nolint: line_length. ) %>% split_rows_by("AEBODSYS", nested = FALSE, @@ -90,16 +87,20 @@ result <- build_table(lyt, adae_trim) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} -#| code-fold: show +Define a trimming function `get_adae_trimmed` to filter for AEs of greater than 5% incidence rate. -# In progress +```{r setup} +#| code-fold: show ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/disclosures/eudrat02.qmd b/book/tables/disclosures/eudrat02.qmd index 93f48eb5c7..af82edbea6 100644 --- a/book/tables/disclosures/eudrat02.qmd +++ b/book/tables/disclosures/eudrat02.qmd @@ -5,21 +5,15 @@ subtitle: Serious Adverse Events, Fatal Serious Adverse Events, and Serious Adve ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -For illustrative purposes, the `adae` data is filtered by arm `A: Drug X` here. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adae <- synthetic_cdisc_dataset("latest", "adae") +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adae <- df_explicit_na(adae) @@ -36,6 +30,9 @@ filters_list <- list( ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -67,16 +64,20 @@ result <- build_table(lyt, adae_serious_arm) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} -#| code-fold: show +For illustrative purposes, the `adae` data is filtered by arm `A: Drug X` here. -# In progress +```{r setup} +#| code-fold: show ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/disposition/dst01.qmd b/book/tables/disposition/dst01.qmd index c66be2dc5d..bac5d2c664 100644 --- a/book/tables/disposition/dst01.qmd +++ b/book/tables/disposition/dst01.qmd @@ -5,20 +5,16 @@ subtitle: Patient Disposition ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) set.seed(1, kind = "Mersenne-Twister") -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # reorder EOSSTT factor levels so DISCONTINUED is the last level adsl <- df_explicit_na(adsl) %>% @@ -43,6 +39,9 @@ adsl_eotstt_added <- adsl_gp_added %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result1")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by( @@ -65,8 +64,15 @@ result1 <- build_table(lyt = lyt, df = adsl) result1 ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Grouping of Reasons +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result2")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by( @@ -91,8 +97,15 @@ result2 <- prune_table(tbl) # remove rows containing all zeros result2 ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Adding Optional Rows +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result3")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by( @@ -114,21 +127,35 @@ result3 <- rbind(result2, tbl) result3 ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) set.seed(1, kind = "Mersenne-Twister") - ADSL <- synthetic_cdisc_dataset("latest", "adsl") + ADSL <- random.cdisc.data::cadsl ADSL <- df_explicit_na(ADSL) ADSL <- ADSL %>% mutate( @@ -143,7 +170,7 @@ data <- within(data, { replace = TRUE ) %>% as.factor() ) %>% - var_relabel( + col_relabel( EOTSTT = "End Of Treatment Status" ) @@ -178,5 +205,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/disposition/pdt01.qmd b/book/tables/disposition/pdt01.qmd index 97132acc7b..faa6aa0ff8 100644 --- a/book/tables/disposition/pdt01.qmd +++ b/book/tables/disposition/pdt01.qmd @@ -5,20 +5,16 @@ subtitle: Major Protocol Deviations ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -addv <- synthetic_cdisc_dataset("latest", "addv") +adsl <- random.cdisc.data::cadsl +addv <- random.cdisc.data::caddv # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -33,6 +29,9 @@ addv <- addv %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -62,21 +61,33 @@ result <- build_table(lyt = lyt, df = addv, alt_counts_df = adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(dplyr) - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADDV <- synthetic_cdisc_dataset("latest", "addv") + ADSL <- random.cdisc.data::cadsl + ADDV <- random.cdisc.data::caddv # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -114,5 +125,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/disposition/pdt02.qmd b/book/tables/disposition/pdt02.qmd index 3ea04a5268..22a8e3318b 100644 --- a/book/tables/disposition/pdt02.qmd +++ b/book/tables/disposition/pdt02.qmd @@ -5,20 +5,16 @@ subtitle: Major Protocol Deviations Related to Epidemic/Pandemic ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -addv <- synthetic_cdisc_dataset("latest", "addv") +adsl <- random.cdisc.data::cadsl +addv <- random.cdisc.data::caddv adsl <- df_explicit_na(adsl) addv <- df_explicit_na(addv) @@ -33,6 +29,9 @@ addv_pan <- addv %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -63,15 +62,18 @@ result <- build_table(lyt, addv_pan, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/efficacy/aovt01.qmd b/book/tables/efficacy/aovt01.qmd index 9386fb097c..b418053147 100644 --- a/book/tables/efficacy/aovt01.qmd +++ b/book/tables/efficacy/aovt01.qmd @@ -5,20 +5,16 @@ subtitle: ANCOVA for Multiple End Points ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -29,6 +25,9 @@ adqs_multi <- filter(adqs, AVISIT == "WEEK 1 DAY 8") ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -59,20 +58,33 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADQS <- synthetic_cdisc_dataset("latest", "adqs") + ADSL <- random.cdisc.data::cadsl + ADQS <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -131,5 +143,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/aovt02.qmd b/book/tables/efficacy/aovt02.qmd index 0a5cc03038..a43f4c8a97 100644 --- a/book/tables/efficacy/aovt02.qmd +++ b/book/tables/efficacy/aovt02.qmd @@ -5,23 +5,19 @@ subtitle: ANCOVA with Single End Point and Customized Table ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} This example will focus on data from a single visit "WEEK 1 DAY 8" and a single endpoint "FKSI-FWB". Only evaluable populations will be analyzed. -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -37,6 +33,9 @@ adqs_single <- adqs %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARMCD", ref_group = "ARM A") %>% @@ -66,21 +65,33 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADQS <- synthetic_cdisc_dataset("latest", "adqs") + ADSL <- random.cdisc.data::cadsl + ADQS <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -138,5 +149,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/aovt03.qmd b/book/tables/efficacy/aovt03.qmd index 68338b5c3a..1d2c547fd2 100644 --- a/book/tables/efficacy/aovt03.qmd +++ b/book/tables/efficacy/aovt03.qmd @@ -5,22 +5,18 @@ subtitle: ANCOVA with Consideration of Interaction ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} This example will focus on data from multiple visits and take the interaction between visits and arms into consideration. -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs adqs_in <- adqs %>% filter(AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 5 DAY 36")) %>% @@ -31,6 +27,9 @@ adqs_in <- adqs %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} result <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARMCD", ref_group = "ARM A") %>% @@ -67,16 +66,18 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/cfbt01.qmd b/book/tables/efficacy/cfbt01.qmd index 6d14690007..17bb26b8b7 100644 --- a/book/tables/efficacy/cfbt01.qmd +++ b/book/tables/efficacy/cfbt01.qmd @@ -5,20 +5,16 @@ subtitle: Efficacy Data and Change from Baseline by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -37,6 +33,9 @@ split_fun <- drop_split_levels ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} afun <- function(x, .var, .spl_context, ...) { n_fun <- sum(!is.na(x), na.rm = TRUE) @@ -87,20 +86,33 @@ result <- build_table(lyt, adqs) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADQS <- synthetic_cdisc_dataset("latest", "adqs") + ADSL <- random.cdisc.data::cadsl + ADQS <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -151,5 +163,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/cmht01.qmd b/book/tables/efficacy/cmht01.qmd index a030310126..21553ade12 100644 --- a/book/tables/efficacy/cmht01.qmd +++ b/book/tables/efficacy/cmht01.qmd @@ -5,20 +5,16 @@ subtitle: Cochran-Mantel-Haenszel (CMH) Summary ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -27,7 +23,11 @@ adqs <- df_explicit_na(adqs) ## Table of Single Parameter -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("survival") < "3.5-8", "skip_test_strict", "")} anl_01 <- adqs %>% filter(PARAMCD == "FKSI-FWB" & AVISIT == "WEEK 1 DAY 8") %>% mutate(is_rsp = PCHG > 15) %>% @@ -74,9 +74,17 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of Multiple Parameters -```{r variant2, test = list(result_v2 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("survival") < "3.5-8", "skip_test_strict", "")} anl_02 <- adqs %>% filter(AVISIT == "WEEK 1 DAY 8") %>% mutate(is_rsp = PCHG > 15) %>% @@ -134,20 +142,33 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADRS <- synthetic_cdisc_dataset("latest", "adrs") + ADSL <- random.cdisc.data::cadsl + ADRS <- random.cdisc.data::cadrs }) datanames <- c("ADSL", "ADRS") datanames(data) <- datanames @@ -187,5 +208,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/coxt01.qmd b/book/tables/efficacy/coxt01.qmd index 90eb4222f5..413dbbe757 100644 --- a/book/tables/efficacy/coxt01.qmd +++ b/book/tables/efficacy/coxt01.qmd @@ -5,24 +5,20 @@ subtitle: Cox Regression ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} Cox models are the most commonly used methods to estimate the magnitude of the effect in survival analyses. It assumes proportional hazards; that is, it assumes that the ratio of the hazards of the two groups (e.g. two arms) is constant over time. This ratio is referred to as the "hazard ratio" and is one of the most commonly reported metrics to describe the effect size in survival analysis. -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adtte <- synthetic_cdisc_dataset("latest", "adtte") +adsl <- random.cdisc.data::cadsl +adtte <- random.cdisc.data::cadtte # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -56,6 +52,9 @@ All variables specified within `variables` must be present in the data used when To see the same model as a `data.frame` object, these three arguments (as well as the data) can be passed to the `fit_coxreg_univar` function, and the resulting list tidied using `broom::tidy()`. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} variables <- list( time = "AVAL", @@ -73,11 +72,18 @@ result <- build_table(lyt = lyt, df = anl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Cox Regression
with Interaction Term The argument `control` can be used to modify standard outputs; `control_coxreg()` helps in adopting the right settings (see `?control_coxreg`). For instance, `control` is used to include the interaction terms. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} variables <- list( time = "AVAL", @@ -99,12 +105,19 @@ result <- build_table(lyt = lyt, df = anl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Cox Regression
Specifying Covariates The optional argument `at` allows the user to provide the expected level of estimation for the interaction when the predictor is a quantitative variable. For instance, it might be relevant to choose the age at which the hazard ratio should be estimated. If no input is provided to `at`, the median value is used in the row name (as in the previous tab). +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} variables <- list( time = "AVAL", @@ -127,11 +140,18 @@ result <- build_table(lyt = lyt, df = anl) result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Cox Regression Setting
Strata, Ties, Alpha Level Additional controls can be customized using `control_coxreg` (see `?control_coxreg`) such as the ties calculation method and the confidence level. Stratification variables can be added via the `strata` element of the `variables` list. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} variables <- list( time = "AVAL", @@ -161,11 +181,26 @@ result <- build_table(lyt = lyt, df = anl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) arm_ref_comp <- list( @@ -182,10 +217,8 @@ arm_ref_comp <- list( ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADTTE <- synthetic_cdisc_dataset("latest", "adtte") + ADSL <- random.cdisc.data::cadsl + ADTTE <- random.cdisc.data::cadtte # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -205,7 +238,7 @@ app <- init( tm_t_coxreg( label = "Cox Reg.", dataname = "ADTTE", - arm_var = choices_selected(c("ARM", "ARMCD", "ACTARMCD"), "ARM"), + arm_var = choices_selected(c("ARM", "ACTARMCD"), "ARM"), arm_ref_comp = arm_ref_comp, paramcd = choices_selected( value_choices(ADTTE, "PARAMCD", "PARAM"), "OS" @@ -223,5 +256,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/coxt02.qmd b/book/tables/efficacy/coxt02.qmd index 5907f8f909..1eb6506aeb 100644 --- a/book/tables/efficacy/coxt02.qmd +++ b/book/tables/efficacy/coxt02.qmd @@ -5,7 +5,7 @@ subtitle: Multivariable Cox Regression ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} Analysis based on multivariable Cox models is usually not performed for the Clinical Study Report (CSR) or regulatory documents, serving exploratory purposes only (e.g. for publication). In practice, the model usually includes only the main effects (without interaction terms). @@ -13,18 +13,14 @@ It produces the estimates for each of the covariates included in the model. The analysis follows the same principles (i.e. stratified vs. unstratified analysis and tie handling) as the general Cox model analysis also used in `COXT01`. Since there is usually no pre-specified hypothesis testing for such analysis, the p-values must be interpreted with caution. -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) library(broom) -adtte <- synthetic_cdisc_dataset("latest", "adtte") +adtte <- random.cdisc.data::cadtte # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adtte <- df_explicit_na(adtte) @@ -58,6 +54,9 @@ All variables specified within `variables` must be present in the data used when To see the same model as a `data.frame` object, these two arguments (as well as the data) can be passed to the `fit_coxreg_multivar` function, and the resulting list tidied using `broom::tidy()`. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} variables <- list( time = "AVAL", @@ -74,6 +73,10 @@ result <- build_table(lyt = lyt, df = anl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Multivariable Cox Regression
with Interaction Term The estimation of interaction terms is not supported. @@ -101,6 +104,9 @@ See the *Multivariable Cox Regression with Interaction Term* tab for more detail Additional controls can be customized using `control_coxreg` (see `?control_coxreg`) such as the ties calculation method and the confidence level. Stratification variables can be added via the `strata` element of the `variables` list. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} variables <- list( time = "AVAL", @@ -128,23 +134,37 @@ result <- build_table(lyt = lyt, df = anl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Multivariable Cox Regression
with Selection Process for Covariates See the *Multivariable Cox Regression with Interaction Term* tab. -{{< include ../../test-utils/save_results.qmd >}} +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADTTE <- synthetic_cdisc_dataset("latest", "adtte") + ADSL <- random.cdisc.data::cadsl + ADTTE <- random.cdisc.data::cadtte }) datanames <- c("ADSL", "ADTTE") datanames(data) <- datanames @@ -188,5 +208,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/dort01.qmd b/book/tables/efficacy/dort01.qmd index 69152657c1..be826970d0 100644 --- a/book/tables/efficacy/dort01.qmd +++ b/book/tables/efficacy/dort01.qmd @@ -5,20 +5,16 @@ subtitle: Duration of Response ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adtte <- synthetic_cdisc_dataset("latest", "adtte") +adsl <- random.cdisc.data::cadsl +adtte <- random.cdisc.data::cadtte # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -43,6 +39,9 @@ adtte_f <- adtte %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM", ref_group = "A: Drug X") %>% @@ -94,8 +93,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting
Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM", ref_group = "A: Drug X") %>% @@ -149,8 +155,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Analysis Details
like Conf. Type and Alpha Level +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM", ref_group = "A: Drug X") %>% @@ -204,8 +217,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Time Point for
the "XX Months duration" Analysis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM", ref_group = "A: Drug X") %>% @@ -257,21 +277,33 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(tern) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADTTE <- synthetic_cdisc_dataset("latest", "adtte") + ADSL <- random.cdisc.data::cadsl + ADTTE <- random.cdisc.data::cadtte # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -328,5 +360,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/lgrt02.qmd b/book/tables/efficacy/lgrt02.qmd index f917672a46..63ed42f787 100644 --- a/book/tables/efficacy/lgrt02.qmd +++ b/book/tables/efficacy/lgrt02.qmd @@ -5,20 +5,16 @@ subtitle: Multi-Variable Logistic Regression ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adrs <- synthetic_cdisc_dataset("latest", "adrs") +adsl <- random.cdisc.data::cadsl +adrs <- random.cdisc.data::cadrs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -45,6 +41,9 @@ adrs <- adrs %>% ## Multi-Variable Logistic Regression +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} model <- fit_logistic( adrs, @@ -66,8 +65,15 @@ result <- basic_table() %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Multi-Variable Logistic Regression
with Interaction Term +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} model <- fit_logistic( adrs, @@ -94,8 +100,15 @@ result <- basic_table() %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Multi-Variable Logistic Regression
Specifying Covariates +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} model <- fit_logistic( adrs, @@ -121,8 +134,15 @@ result <- basic_table() %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Multi-Variable Logistic Regression Setting
an Event, Alpha Level, and Level for Interaction +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} model <- fit_logistic( adrs, @@ -150,21 +170,35 @@ result <- basic_table() %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADRS <- synthetic_cdisc_dataset("latest", "adrs") %>% + ADSL <- random.cdisc.data::cadsl + ADRS <- random.cdisc.data::cadrs %>% filter(PARAMCD %in% c("BESRSPI", "INVET")) }) datanames <- c("ADSL", "ADRS") @@ -211,5 +245,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/mmrmt01.qmd b/book/tables/efficacy/mmrmt01.qmd index 39668a9773..c9f62e5bb4 100644 --- a/book/tables/efficacy/mmrmt01.qmd +++ b/book/tables/efficacy/mmrmt01.qmd @@ -5,21 +5,17 @@ subtitle: Tables for Mixed-Effect Model Repeated Measures Analysis ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern.mmrm) -library(scda) library(broom) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adqs <- synthetic_cdisc_dataset("latest", "adqs") +adsl <- random.cdisc.data::cadsl +adqs <- random.cdisc.data::cadqs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -44,9 +40,9 @@ var_labels(adqs_f) <- var_labels(adqs) ## Least Squares Means -### Considering the treatment variable in the model +#### Considering the treatment variable in the model -```{r variant1, test = list(result_v1 = "result"), message=FALSE} +```{r variant1, test = list(result_v1 = "result"), message = FALSE} mmrm_results <- fit_mmrm( vars = list( response = "CHG", @@ -75,7 +71,7 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -### Not considering the treatment variable in the model +#### Not considering the treatment variable in the model ```{r variant2, test = list(result_v2 = "result")} mmrm_results_no_arm <- fit_mmrm( @@ -106,12 +102,12 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -### Adding baseline rows +#### Adding baseline rows It may be of interest to summarize some different statistics at the baseline visit or summarize a different variable in the data set not used in the MMRM. For example, the model may use the variable `CHG` but the baseline visit row may summarize the `AVAL` variable, thus we would need to create two tables and then combine them to accomplish this. -```{r} +```{r variant_baseline, test = list(result_baseline = "result")} # First have the least-square means table. a <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARMCD", ref_group = mmrm_results$ref_level) %>% @@ -138,7 +134,7 @@ col_info(b) <- EmptyColInfo rbind(b, a) ``` -### Considering visit averages +#### Considering visit averages It may also be of interest to summarize several different statistics for an averaged combination of various visits in the MMRM. For example, you may want to see the statistics for the average of the first 2 visits, or the average statistics of all visits combined. @@ -182,19 +178,22 @@ result #### Considering the treatment variable in the model -```{r} + +```{r, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} as.rtable(mmrm_results, type = "fixed") ``` #### Not considering the treatment variable in the model -```{r} + +```{r, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} as.rtable(mmrm_results_no_arm, type = "fixed") ``` ## Covariance Matrix -```{r} + +```{r, opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} as.rtable(mmrm_results, type = "cov") ``` @@ -207,21 +206,28 @@ Statistics to evaluate choice of covariance structure are being investigated and as.rtable(mmrm_results, type = "diagnostic") ``` -{{< include ../../test-utils/save_results.qmd >}} +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADQS <- synthetic_cdisc_dataset("latest", "adqs") %>% + ADSL <- random.cdisc.data::cadsl + ADQS <- random.cdisc.data::cadqs %>% filter(ABLFL != "Y" & ABLFL2 != "Y") %>% filter(AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22")) %>% mutate( @@ -271,4 +277,3 @@ shinyApp(app$ui, app$server) ``` {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/efficacy/onct05.qmd b/book/tables/efficacy/onct05.qmd index a5f25a5a37..e14571522d 100644 --- a/book/tables/efficacy/onct05.qmd +++ b/book/tables/efficacy/onct05.qmd @@ -5,20 +5,16 @@ subtitle: Objective Response Rate by Subgroup ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adrs <- synthetic_cdisc_dataset("latest", "adrs") +adsl <- random.cdisc.data::cadsl +adrs <- random.cdisc.data::cadrs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -49,7 +45,11 @@ var_labels(anl) <- c(anl_labels, rsp = "Is Response") ## Standard Table -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} df <- extract_rsp_subgroups( variables = list( rsp = "rsp", @@ -65,12 +65,20 @@ result <- basic_table() %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Specifying
Class Variables +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + Here, the levels of subgroup variables `SEX` and `STRATA1` are reordered. `STRATA1` is reordered by frequency. -```{r variant2, test = list(result_v2 = "result")} + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} anl_reorder <- anl %>% mutate( SEX = forcats::fct_relevel(SEX, "M", "F"), @@ -88,9 +96,17 @@ result <- basic_table() %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting Columns
and Changing the Alpha Level -```{r variant3, test = list(result_v3 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant3, test = list(result_v3 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} df <- extract_rsp_subgroups( variables = list( rsp = "rsp", @@ -108,11 +124,19 @@ result <- basic_table() %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Setting Values
Indicating Response +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + Create a new variable `new_rsp` in `anl` data that uses new criteria for responder. -```{r variant4, test = list(result_v4 = "result")} + +```{r variant4, test = list(result_v4 = "result"), opts.label = ifelse(packageVersion("rtables") < "0.6.6.9011", "skip_test_strict", "")} anl_new <- anl %>% mutate(new_rsp = AVALC == "CR") @@ -131,23 +155,34 @@ result <- basic_table() %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} # Use table, embedded in response forest plot module. library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(dplyr) - library(forcats) - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADRS <- synthetic_cdisc_dataset("latest", "adrs") + ADSL <- random.cdisc.data::cadsl + ADRS <- random.cdisc.data::cadrs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -203,5 +238,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/ratet01.qmd b/book/tables/efficacy/ratet01.qmd index efa96fed72..31c7a64802 100644 --- a/book/tables/efficacy/ratet01.qmd +++ b/book/tables/efficacy/ratet01.qmd @@ -5,22 +5,18 @@ subtitle: Event Rate Summary for Recurrent Events ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} This example will focus on data from a single visit "WEEK 1 DAY 8" and a single endpoint "FKSI-FWB". Only evaluable populations will be analyzed. -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -anl <- synthetic_cdisc_dataset("latest", "adtte") %>% +anl <- random.cdisc.data::cadtte %>% filter(PARAMCD == "TNE") # Ensure number of exacerbation is a factor and NAs are explicit missing levels. @@ -30,7 +26,12 @@ anl <- df_explicit_na(anl) ## Customized Table -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + + +```{r variant1, test = list(result_v1 = "result"), eval = packageVersion("tern") >= "0.9.3.9005"} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "B: Placebo", split_fun = ref_group_position("first")) %>% analyze_vars( @@ -38,7 +39,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% var_labels = "Number of exacerbations per patient", .stats = c("count_fraction"), .formats = c("count_fraction" = "xx (xx.xx%)"), - .label = c("Number of exacerbations per patient") + .labels = c("Number of exacerbations per patient") ) %>% summarize_glm_count( vars = "AVAL", @@ -58,31 +59,46 @@ lyt <- basic_table(show_colcounts = TRUE) %>% distribution = "quasipoisson", rate_mean_method = "ppmeans", var_labels = "Adjusted (QP) exacerbation rate (per year)", - table_names = "adj", + table_names = "adj-qp", .stats = c("rate", "rate_ci", "rate_ratio", "rate_ratio_ci", "pval"), .labels = c( rate = "Rate", rate_ci = "Rate CI", rate_ratio = "Rate Ratio", - rate_ratio_ci = "Rate Ratio CI", pval = "p value" + rate_ratio_ci = "Rate Ratio CI", pval = "p-value" + ) + ) %>% + summarize_glm_count( + vars = "AVAL", + variables = list(arm = "ARM", offset = "lgTMATRSK", covariates = c("REGION1")), + conf_level = 0.95, + distribution = "negbin", + rate_mean_method = "emmeans", + var_labels = "Adjusted (NB) exacerbation rate (per year)", + table_names = "adj-nb", + .stats = c("rate", "rate_ci", "rate_ratio", "rate_ratio_ci", "pval"), + .labels = c( + rate = "Rate", rate_ci = "Rate CI", rate_ratio = "Rate Ratio", + rate_ratio_ci = "Rate Ratio CI", pval = "p-value" ) ) - result <- build_table( lyt = lyt, df = anl ) - result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In Progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/efficacy/rbmit01.qmd b/book/tables/efficacy/rbmit01.qmd index b13a69a9dc..345024794c 100644 --- a/book/tables/efficacy/rbmit01.qmd +++ b/book/tables/efficacy/rbmit01.qmd @@ -5,19 +5,11 @@ subtitle: Tables for RBMI ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -We use a publicly available example dataset from an antidepressant clinical trial of an active drug versus placebo from the `rbmi` package. -The relevant endpoint is the Hamilton 17-item depression rating scale (`HAMD17`) which was assessed at baseline and at weeks 1, 2, 4, and 6. -Study drug discontinuation occurred in 24% of subjects from the active drug and 26% of subjects from placebo. -All data after study drug discontinuation are missing and there is a single additional intermittent missing observation. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern.rbmi) library(dplyr) set.seed(123) @@ -116,10 +108,12 @@ draws_vars$subjid <- "TMP_ID" Define which imputation method to use, then create samples for the imputation parameters by running the `draws()` function. -```{r, warning=FALSE} + + +```{r, warning = FALSE, opts.label = "skip_test_strict"} #| code-fold: show -draws_method <- method_bayes() +draws_method <- method_bayes(seed = 123) draws_obj <- rbmi::draws( data = data_full, @@ -152,8 +146,11 @@ impute_obj <- rbmi::impute( The next step is to run the analysis model on each imputed dataset. This is done by defining an analysis function and then calling `rbmi::analyse()` to apply this function to each imputed dataset. -```{r} + + +```{r, opts.label = "skip_test_strict"} #| code-fold: show +#| opts_label: "skip_test_strict" # # Define analysis model analyse_fun <- ancova @@ -179,7 +176,9 @@ analyse_obj <- rbmi::analyse( The `rbmi::pool()` function can be used to summarize the analysis results across multiple imputed datasets to provide an overall statistic with a standard error, confidence intervals and a p-value for the hypothesis test of the null hypothesis that the effect is equal to 0. Using the `broom::tidy()` function the `rbmi` final results are reshaped. -```{r} + + +```{r, opts.label = "skip_test_strict"} #| code-fold: show library(broom) @@ -208,8 +207,19 @@ result <- basic_table() %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +## Data Setup -{{< include ../../repro.qmd >}} +We use a publicly available example dataset from an antidepressant clinical trial of an active drug versus placebo from the `rbmi` package. +The relevant endpoint is the Hamilton 17-item depression rating scale (`HAMD17`) which was assessed at baseline and at weeks 1, 2, 4, and 6. +Study drug discontinuation occurred in 24% of subjects from the active drug and 26% of subjects from placebo. +All data after study drug discontinuation are missing and there is a single additional intermittent missing observation. -::: +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/rspt01.qmd b/book/tables/efficacy/rspt01.qmd index fb6339e111..a28741ef93 100644 --- a/book/tables/efficacy/rspt01.qmd +++ b/book/tables/efficacy/rspt01.qmd @@ -5,20 +5,16 @@ subtitle: Best Overall Response ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(tern) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adrs <- synthetic_cdisc_dataset("latest", "adrs") +adsl <- random.cdisc.data::cadsl +adrs <- random.cdisc.data::cadrs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -35,7 +31,7 @@ Data pre-processing is done to label the analysis value (`AVALC`) so as to impro In addition, the *response* is binary defined (`is_rsp`, responder yes/no) depending on the analysis value. Finally, for comparison purposes, the reference arm is specified. -```{r} +```{r pre-processing} #| code-fold: show # Pre-Processing @@ -52,6 +48,9 @@ anl <- anl_adsl %>% The tabulation layout is built in layers for the analysis of overall response and applied to the pre-processed dataset. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt_01 <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM", ref_group = "A: Drug X") %>% @@ -79,8 +78,15 @@ result <- build_table(lyt = lyt_01, df = anl) result ``` +`r webr_code_labels <- c("setup", "pre-processing", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting
Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + Remove (or add) rows of results by removing/adding the corresponding layers from the layout. For instance, the odds-ratio row is removed by simply removing the `estimate_odds_ratio` call: @@ -107,11 +113,18 @@ result <- build_table(lyt = lyt_02, df = anl) result ``` +`r webr_code_labels <- c("setup", "pre-processing", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Analysis Details like Type of
Confidence Interval, Alpha Level, Test Statistic The confidence level is controlled by the `conf_level` parameter to the estimation functions. Similarly, the methods for tests and confidence interval can be modified (see `?estimate_proportion_diff`). +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} conf_level <- 0.90 lyt_03 <- basic_table(show_colcounts = TRUE) %>% @@ -150,11 +163,19 @@ result <- build_table(lyt = lyt_03, df = anl) result ``` +`r webr_code_labels <- c("setup", "pre-processing", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
Stratified Analysis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + The stratified analysis section can be added by defining the analyses needed with `control_binary_comparison` for the argument `strat_analysis` and identifying the stratification variables to use. -```{r variant4, test = list(result_v4 = "result")} + +```{r variant4, test = list(result_v4 = "result"), opts.label = ifelse(packageVersion("survival") < "3.5-8", "skip_test_strict", "")} strata <- "STRATA1" lyt_04 <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM", ref_group = "A: Drug X") %>% @@ -201,11 +222,18 @@ result <- build_table(lyt = lyt_04, df = anl) result ``` +`r webr_code_labels <- c("setup", "pre-processing", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying the Definition
of Overall Response The definition of *responders* is realized during the pre-processing step. The layout does not need to be modified and can be reused. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} anl <- anl_adsl %>% left_join(anl_adrs, by = c("STUDYID", "USUBJID")) %>% @@ -218,10 +246,17 @@ result <- build_table(lyt = lyt_01, df = anl) result ``` +`r webr_code_labels <- c("setup", "pre-processing", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Defining New
Sections to Display Similarly to in the previous tab, redefinition or relabeling of the result is a pre-processing step and the original table layout can be reused. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant6, test = list(result_v6 = "result")} anl <- anl_adsl %>% left_join(anl_adrs, by = c("STUDYID", "USUBJID")) %>% @@ -242,21 +277,35 @@ result <- build_table(lyt = lyt_01, df = anl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "pre-processing", "variant6")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADRS <- synthetic_cdisc_dataset("latest", "adrs") + ADSL <- random.cdisc.data::cadsl + ADRS <- random.cdisc.data::cadrs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -312,5 +361,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/efficacy/ttet01.qmd b/book/tables/efficacy/ttet01.qmd index 2f55c8090d..1da2c85d5d 100644 --- a/book/tables/efficacy/ttet01.qmd +++ b/book/tables/efficacy/ttet01.qmd @@ -5,20 +5,16 @@ subtitle: Time-To-Event Summary ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adtte <- synthetic_cdisc_dataset("latest", "adtte") +adsl <- random.cdisc.data::cadsl +adtte <- random.cdisc.data::cadtte # Ensure that character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -43,6 +39,9 @@ adtte_f <- adtte %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by( @@ -97,8 +96,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting
Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "A: Drug X") %>% @@ -139,8 +145,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Analysis Details
like Conf. Type, Ties, Alpha Level +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "A: Drug X") %>% @@ -207,8 +220,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
Stratified Analysis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "A: Drug X") %>% @@ -249,7 +269,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% vars = "AVAL", is_event = "is_event", var_labels = "Stratified Analysis", - strat = "SEX", + strata = "SEX", table_names = "coxph_stratified" ) %>% surv_timepoint( @@ -266,8 +286,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Time Point for
the "XX Months" Analysis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "A: Drug X") %>% @@ -319,8 +346,15 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Requesting
\> 1 p-value +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant6, test = list(result_v6 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "A: Drug X") %>% @@ -390,20 +424,33 @@ result <- build_table(lyt, df = adtte_f, alt_counts_df = adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant6")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADTTE <- synthetic_cdisc_dataset("latest", "adtte") + ADSL <- random.cdisc.data::cadsl + ADTTE <- random.cdisc.data::cadtte # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -460,5 +507,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/exposure/ext01.qmd b/book/tables/exposure/ext01.qmd index 32f1031bdc..2551252ceb 100644 --- a/book/tables/exposure/ext01.qmd +++ b/book/tables/exposure/ext01.qmd @@ -5,21 +5,17 @@ subtitle: Study Drug Exposure Table ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) library(tidyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adex <- synthetic_cdisc_dataset("latest", "adex") +adsl <- random.cdisc.data::cadsl +adex <- random.cdisc.data::cadex # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -80,6 +76,9 @@ adex <- dplyr::bind_rows(adex, tdurd, tndosmis) %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # When summary table contains only categorical or only numeric parameters @@ -96,8 +95,15 @@ result <- build_table(lyt = lyt, df = adex, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Optional Analyses +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} # When summary table contains both categorical and numeric parameters, # developer needs to do pre-processing to transform dataset to wide format. @@ -143,8 +149,15 @@ result <- build_table(lyt = lyt, df = anl, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with User-Specified
Categories for Missed Doses +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} # When summary table contains both categorical and numeric parameters, # developer needs to do pre-processing to transform dataset to wide format. @@ -195,22 +208,36 @@ result <- build_table(lyt = lyt, df = anl, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { library(dplyr) - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEX <- synthetic_cdisc_dataset("latest", "adex") - adex_labels <- unname(var_labels(ADEX)) + ADSL <- random.cdisc.data::cadsl + ADEX <- random.cdisc.data::cadex + adex_labels <- unname(col_labels(ADEX)) ADEX <- ADEX %>% filter(PARCAT1 == "OVERALL") %>% mutate( @@ -221,7 +248,7 @@ data <- within(data, { PARAMCD == "TNDOSE" & AVAL >= 10 ~ ">= 10" ) ) - var_labels(ADEX) <- c(adex_labels, "") + col_labels(ADEX) <- c(adex_labels, "") }) datanames <- c("ADSL", "ADEX") datanames(data) <- datanames @@ -268,5 +295,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt01.qmd b/book/tables/lab-results/lbt01.qmd index c79a99febc..e5e3bdb8af 100644 --- a/book/tables/lab-results/lbt01.qmd +++ b/book/tables/lab-results/lbt01.qmd @@ -5,22 +5,16 @@ subtitle: Laboratory Test Results and Change from Baseline by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -In order to generate the `LBT01` standard tabulation, the `adlb` dataset may be pre-processed so as to discriminate baseline from follow-up visits. +:::: {.panel-tabset} -```{r setup, message=FALSE} -#| code-fold: show - -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -40,6 +34,9 @@ adlb_f <- adlb %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -83,21 +80,37 @@ result <- build_table(lyt, adlb_f) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +In order to generate the `LBT01` standard tabulation, the `adlb` dataset may be pre-processed so as to discriminate baseline from follow-up visits. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + + + +```{r teal, opts.label = c("skip_if_testing", "app"), eval = packageVersion("teal.modules.clinical") >= "0.9.0.9007"} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -144,5 +157,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt02.qmd b/book/tables/lab-results/lbt02.qmd index 04baf6582a..6912289923 100644 --- a/book/tables/lab-results/lbt02.qmd +++ b/book/tables/lab-results/lbt02.qmd @@ -5,20 +5,16 @@ subtitle: Laboratory Test Results by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} # Preparation of an illustrative dataset -library(scda) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adlb_labels <- var_labels(adlb) @@ -36,6 +32,9 @@ adlb <- df_explicit_na(adlb) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -58,21 +57,33 @@ result <- build_table(l, result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -98,7 +109,8 @@ app <- init( selected = "ARM" ), by_vars = choices_selected( - choices = variable_choices(ADLB, c("PARAM", "AVISIT")), # note: order matters here. If `PARAM` is first, the split will be first by `PARAM`and then by `AVISIT` + # note: order matters here. If `PARAM` is first, the split will be first by `PARAM`and then by `AVISIT` + choices = variable_choices(ADLB, c("PARAM", "AVISIT")), selected = c("PARAM", "AVISIT") ), summarize_vars = choices_selected( @@ -117,5 +129,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt03.qmd b/book/tables/lab-results/lbt03.qmd index 9730ac5f8d..e25542a7c8 100644 --- a/book/tables/lab-results/lbt03.qmd +++ b/book/tables/lab-results/lbt03.qmd @@ -5,22 +5,16 @@ subtitle: Laboratory Test Results Change from Baseline by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -For illustration purposes, this example focuses on "C-Reactive Protein Measurement" starting from baseline, while excluding visit at week 1 for subjects who were randomized to the placebo group. +:::: {.panel-tabset} -```{r setup, message=FALSE} -#| code-fold: show - -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -31,8 +25,7 @@ saved_labels <- var_labels(adlb) adlb_f <- adlb %>% filter( PARAM == "C-Reactive Protein Measurement", - !(ARM == "B: Placebo" & - AVISIT == "WEEK 1 DAY 8"), + !(ARM == "B: Placebo" & AVISIT == "WEEK 1 DAY 8"), AVISIT != "SCREENING" ) %>% dplyr::mutate( @@ -48,6 +41,9 @@ var_labels(adlb_f) <- c(saved_labels, "") The `LBT03` template is the result of a junction between the analysis of `AVAL` at baseline and `CHG` at visit time. `AVAL` is summarized for baseline visits and and `CHG` is summarized for post-baseline visits. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -70,8 +66,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + In the final step, a new variable is derived from `AVISIT` that can specify the method of estimation of the evaluated change. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} adlb_f <- adlb_f %>% mutate(AVISIT_header = recode(AVISIT, "BASELINE" = "BASELINE", @@ -107,23 +110,37 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +For illustration purposes, this example focuses on "C-Reactive Protein Measurement" starting from baseline, while excluding visit at week 1 for subjects who were randomized to the placebo group. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + Here, we pre-process and manually define the variable "Baseline or Absolute Change from Baseline". -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- df_explicit_na(synthetic_cdisc_dataset("latest", "adsl")) - ADLB <- df_explicit_na(synthetic_cdisc_dataset("latest", "adlb")) %>% + ADSL <- df_explicit_na(random.cdisc.data::cadsl) + ADLB <- df_explicit_na(random.cdisc.data::cadlb) %>% filter( !(ARM == "B: Placebo" & AVISIT == "WEEK 1 DAY 8"), AVISIT != "SCREENING" @@ -145,7 +162,7 @@ data <- within(data, { AVAL_CHG = AVAL - (!ABLFLL) * sum(AVAL * ABLFLL) ) %>% ungroup() %>% - var_relabel( + col_relabel( AVAL_CHG = "Baseline or Absolute Change from Baseline", ABLFLL = "Baseline Flag (TRUE/FALSE)", AVISIT_header = "Analysis Visit" @@ -171,7 +188,8 @@ app <- init( selected = "ARM" ), by_vars = choices_selected( - choices = variable_choices(ADLB, c("PARAM", "AVISIT_header")), # note: order matters here. If `PARAM` is first, the split will be first by `PARAM`and then by `AVISIT` + # note: order matters here. If `PARAM` is first, the split will be first by `PARAM`and then by `AVISIT` + choices = variable_choices(ADLB, c("PARAM", "AVISIT_header")), selected = c("PARAM", "AVISIT_header") ), summarize_vars = choices_selected( @@ -190,5 +208,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt04.qmd b/book/tables/lab-results/lbt04.qmd index 8cdc0b6536..7ec2565979 100644 --- a/book/tables/lab-results/lbt04.qmd +++ b/book/tables/lab-results/lbt04.qmd @@ -5,20 +5,16 @@ subtitle: Laboratory Abnormalities Not Present at Baseline ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -34,6 +30,9 @@ adlb_f <- adlb %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -54,22 +53,34 @@ result <- build_table(lyt = lyt, df = adlb_f, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") %>% - var_relabel(PARAM = "Laboratory Test", ANRIND = "Direction of Abnormality") + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb %>% + col_relabel(PARAM = "Laboratory Test", ANRIND = "Direction of Abnormality") }) datanames <- c("ADSL", "ADLB") datanames(data) <- datanames @@ -109,5 +120,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt05.qmd b/book/tables/lab-results/lbt05.qmd index 122fcf2e50..25623484c6 100644 --- a/book/tables/lab-results/lbt05.qmd +++ b/book/tables/lab-results/lbt05.qmd @@ -5,20 +5,16 @@ subtitle: Laboratory Abnormalities with Single and Replicated Marked ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -82,6 +78,9 @@ map <- expand.grid( ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -106,8 +105,15 @@ result <- prune_table(result, keep_rows(has_lbl("Any Abnormality"))) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Showing
All Categories +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -129,17 +135,25 @@ result <- build_table(lyt, df = adlb_f, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with
Study-Specific
MLAs ```{r variant3} #| code-fold: show -# This variant reflects user modifications made to the laboratory analysis data set related to Safety Lab Standardization metadata. +# This variant reflects user modifications made to the laboratory analysis data set related to +# Safety Lab Standardization metadata. # There is no unique layout level variation. ``` ## Table of Lab Abnormalities Showing
All Categories But Only for Parameter
Codes with At Least One Abnormality +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -167,7 +181,18 @@ result # this is an a posteriori approach, though. ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/lab-results/lbt06.qmd b/book/tables/lab-results/lbt06.qmd index 0ef30ebb99..d23241a68c 100644 --- a/book/tables/lab-results/lbt06.qmd +++ b/book/tables/lab-results/lbt06.qmd @@ -5,20 +5,16 @@ subtitle: Laboratory Abnormalities by Visit and Baseline Status ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -37,6 +33,9 @@ adlb_f_crp <- adlb_f %>% dplyr::filter(PARAMCD == "CRP") ## Standard Table for
Single Lab Test +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -62,8 +61,15 @@ result <- build_table( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Standard Table for
Multiple Lab Tests +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} # The following code generates one large table for multiple lab tests. # If separate tables are needed for each lab test per GDSR standard, use the code for "single lab test". @@ -90,16 +96,18 @@ result <- build_table( result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt07.qmd b/book/tables/lab-results/lbt07.qmd index 7040933f02..2098c0dac8 100644 --- a/book/tables/lab-results/lbt07.qmd +++ b/book/tables/lab-results/lbt07.qmd @@ -5,21 +5,17 @@ subtitle: Laboratory Test Results with Highest NCI CTCAE Grade Post-Baseline ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) library(forcats) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adlb_labels <- var_labels(adlb) @@ -71,6 +67,9 @@ map <- expand.grid( ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -103,21 +102,35 @@ result <- result %>% prune_table() result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") %>% + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb %>% filter(!AVISIT %in% c("SCREENING", "BASELINE")) }) datanames <- c("ADSL", "ADLB") @@ -157,5 +170,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt08.qmd b/book/tables/lab-results/lbt08.qmd index e56953903d..1a8a23db89 100644 --- a/book/tables/lab-results/lbt08.qmd +++ b/book/tables/lab-results/lbt08.qmd @@ -5,20 +5,16 @@ subtitle: Laboratory Test Results with Highest NCI CTCAE Grade at Any Time ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adlb <- adlb %>% mutate( @@ -50,6 +46,9 @@ In addition, the worst laboratory flags must be selected appropriately to match For example, if any lab requires a shift table for both directions, then both `worst_flag_low` and `worst_flag_high` must be specified in `h_adlb_worsen`. If all labs requires a shift table for only one direction, then the matching worst lab flag variable must be selected in `h_adlb_worsen`. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} result <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARMCD") %>% @@ -69,16 +68,18 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt09.qmd b/book/tables/lab-results/lbt09.qmd index da22c59c6f..c27c9764d2 100644 --- a/book/tables/lab-results/lbt09.qmd +++ b/book/tables/lab-results/lbt09.qmd @@ -5,19 +5,15 @@ subtitle: Liver Laboratory Tests -- Patients with Elevated Post-Baseline AST or ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adhy <- synthetic_cdisc_dataset("latest", "adhy") +adhy <- random.cdisc.data::cadhy # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adhy_liver <- df_explicit_na(adhy) @@ -44,12 +40,15 @@ adhy_liver <- adhy_liver %>% # Create indicator and category variables. adhy_liver <- adhy_liver %>% mutate( - TBILI_CAT = factor( # Create TBILI_CAT categories variable - this is needed so we get the right nesting in the table. + # Create TBILI_CAT categories variable - this is needed so we get the right nesting in the table. + TBILI_CAT = factor( case_when( PARAMCD %in% c(paramcd_tbili_alt[1], paramcd_tbili_ast[1]) ~ "Total Bilirubin <= 2xULN", PARAMCD %in% c(paramcd_tbili_alt[2], paramcd_tbili_ast[2]) ~ "Total Bilirubin > 2xULN", - PARAMCD %in% c(paramcd_tbili_alt[3], paramcd_tbili_ast[3]) ~ "Total Bilirubin > 2xULN and Alkaline Phosphatase <= 2xULN", - PARAMCD %in% c(paramcd_tbili_alt[4], paramcd_tbili_ast[4]) ~ "Total Bilirubin > 2xULN and Alkaline Phosphatase <= 5xULN" + PARAMCD %in% c(paramcd_tbili_alt[3], paramcd_tbili_ast[3]) ~ + "Total Bilirubin > 2xULN and Alkaline Phosphatase <= 2xULN", + PARAMCD %in% c(paramcd_tbili_alt[4], paramcd_tbili_ast[4]) ~ + "Total Bilirubin > 2xULN and Alkaline Phosphatase <= 5xULN" ), levels = c( "Total Bilirubin <= 2xULN", @@ -58,7 +57,9 @@ adhy_liver <- adhy_liver %>% "Total Bilirubin > 2xULN and Alkaline Phosphatase <= 5xULN" ) ), - ALTAST_CAT = factor( # Create ALTAST_CAT categories variable - this will be the labels for different ALT/AST categories displayed in the table. + # Create ALTAST_CAT categories variable + # this will be the labels for different ALT/AST categories displayed in the table. + ALTAST_CAT = factor( case_when( PARAMCD %in% paramcd_tbili_alt & AVALC == ">3-5ULN" ~ "ALT >3 - <= 5xULN", PARAMCD %in% paramcd_tbili_alt & AVALC == ">5-10ULN" ~ "ALT >5 - <= 10xULN", @@ -99,6 +100,9 @@ map <- data.frame( ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} result <- basic_table() %>% split_cols_by("ARM") %>% @@ -125,15 +129,28 @@ result <- result %>% trim_rows(criteria = criteria_fun) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting Sections +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} result <- basic_table() %>% split_cols_by("ARM") %>% split_cols_by("AVISIT") %>% - split_rows_by("TBILI_CAT", split_fun = remove_split_levels("Total Bilirubin > 2xULN and Alkaline Phosphatase <= 2xULN")) %>% + split_rows_by( + "TBILI_CAT", + split_fun = remove_split_levels("Total Bilirubin > 2xULN and Alkaline Phosphatase <= 2xULN") + ) %>% # below split helps us get the right denominator between ALT/AST but it can be hidden - split_rows_by("ALTAST_ind", split_fun = trim_levels_to_map(map), child_labels = "hidden") %>% + split_rows_by( + "ALTAST_ind", + split_fun = trim_levels_to_map(map), child_labels = "hidden" + ) %>% count_occurrences( vars = "ALTAST_CAT", .stats = "fraction", @@ -153,16 +170,18 @@ result <- result %>% trim_rows(criteria = criteria_fun) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt10.qmd b/book/tables/lab-results/lbt10.qmd index cf914d395c..84a6b94a9b 100644 --- a/book/tables/lab-results/lbt10.qmd +++ b/book/tables/lab-results/lbt10.qmd @@ -5,20 +5,16 @@ subtitle: Liver Laboratory Tests -- Patients with Elevated Post-Baseline AST or ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adhy <- synthetic_cdisc_dataset("latest", "adhy") +adsl <- random.cdisc.data::cadsl +adhy <- random.cdisc.data::cadhy adhy_liver <- adhy %>% filter(PARAMCD %in% c( @@ -43,6 +39,9 @@ anl <- df_explicit_na(adhy_liver) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} tbl <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARMCD") %>% @@ -65,8 +64,15 @@ result <- tbl %>% trim_rows(criteria = criteria_fun) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting Sections +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} tbl2 <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARMCD") %>% @@ -89,16 +95,18 @@ result <- tbl2 %>% trim_rows(criteria = criteria_fun) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt10_bl.qmd b/book/tables/lab-results/lbt10_bl.qmd index 7fcd3c4941..73fd78b114 100644 --- a/book/tables/lab-results/lbt10_bl.qmd +++ b/book/tables/lab-results/lbt10_bl.qmd @@ -5,20 +5,16 @@ subtitle: Liver Laboratory Tests -- Patients with Elevated Post-Baseline AST or ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adhy <- synthetic_cdisc_dataset("latest", "adhy") +adsl <- random.cdisc.data::cadsl +adhy <- random.cdisc.data::cadhy adhy_liver <- adhy %>% filter(PARAMCD %in% c( @@ -43,6 +39,9 @@ anl <- df_explicit_na(adhy_liver) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} tbl <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARMCD") %>% @@ -65,8 +64,15 @@ result <- tbl %>% trim_rows(criteria = criteria_fun) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting Sections +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} tbl2 <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARMCD") %>% @@ -89,16 +95,18 @@ result <- tbl2 %>% trim_rows(criteria = criteria_fun) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt11.qmd b/book/tables/lab-results/lbt11.qmd index 4795517392..fd12276c46 100644 --- a/book/tables/lab-results/lbt11.qmd +++ b/book/tables/lab-results/lbt11.qmd @@ -5,20 +5,16 @@ subtitle: Time to First Increase in Liver Laboratory Test Result Meeting Hy's La ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adaette <- synthetic_cdisc_dataset("latest", "adaette") +adsl <- random.cdisc.data::cadsl +adaette <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -58,6 +54,9 @@ anl <- adaette %>% ## Time-To-Event Summary +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARMCD", ref_group = "ARM A") %>% @@ -80,8 +79,15 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_safl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Time-To-Event Summary
Selecting Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARMCD", ref_group = "ARM A") %>% @@ -97,8 +103,15 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_safl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Time-To-Event Summary
with Stratified Analysis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} strata <- c("RACE", "SEX") @@ -122,7 +135,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% vars = "AVAL", is_event = "is_event", var_labels = paste0("Stratified By: ", paste(strata, collapse = ", ")), - strat = strata, + strata = strata, table_names = "coxph_stratified" ) @@ -130,20 +143,35 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_safl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAETTE <- synthetic_cdisc_dataset("latest", "adaette") + + ADSL <- random.cdisc.data::cadsl + ADAETTE <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -199,5 +227,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt11_bl.qmd b/book/tables/lab-results/lbt11_bl.qmd index 52f7367bbc..24d3515ccb 100644 --- a/book/tables/lab-results/lbt11_bl.qmd +++ b/book/tables/lab-results/lbt11_bl.qmd @@ -5,20 +5,16 @@ subtitle: Time to First Increase in Liver Laboratory Test Result Meeting Hy's La ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adaette <- synthetic_cdisc_dataset("latest", "adaette") +adsl <- random.cdisc.data::cadsl +adaette <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -58,6 +54,9 @@ anl <- adaette %>% ## Time-To-Event Summary +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARMCD", ref_group = "ARM A") %>% @@ -80,8 +79,15 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_safl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Time-To-Event Summary
Selecting Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARMCD", ref_group = "ARM A") %>% @@ -97,8 +103,15 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_safl) result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Time-To-Event Summary
with Stratified Analysis +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} strata <- c("RACE", "SEX") @@ -122,7 +135,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% vars = "AVAL", is_event = "is_event", var_labels = paste0("Stratified By: ", paste(strata, collapse = ", ")), - strat = strata, + strata = strata, table_names = "coxph_stratified" ) @@ -130,21 +143,35 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_safl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADAETTE <- synthetic_cdisc_dataset("latest", "adaette") + ADSL <- random.cdisc.data::cadsl + ADAETTE <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) @@ -200,5 +227,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt12.qmd b/book/tables/lab-results/lbt12.qmd index 1939dc075c..bbd97eed36 100644 --- a/book/tables/lab-results/lbt12.qmd +++ b/book/tables/lab-results/lbt12.qmd @@ -5,19 +5,15 @@ subtitle: Liver Laboratory Tests by Time on Treatment -- Patients with Elevated ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adhy <- synthetic_cdisc_dataset("latest", "adhy") +adhy <- random.cdisc.data::cadhy anl <- adhy anl$APERIODC <- as.factor(anl$APERIODC) # to ensure the table is built even if there is no patients after filtering @@ -52,6 +48,9 @@ anl <- df_explicit_na(anl) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} result <- basic_table() %>% split_cols_by("TITLE") %>% @@ -70,16 +69,18 @@ result <- result %>% trim_rows(criteria = criteria_fun) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt12_bl.qmd b/book/tables/lab-results/lbt12_bl.qmd index c7c790f86e..4e1720e7bd 100644 --- a/book/tables/lab-results/lbt12_bl.qmd +++ b/book/tables/lab-results/lbt12_bl.qmd @@ -5,19 +5,15 @@ subtitle: Liver Laboratory Tests by Time on Treatment -- Patients with Elevated ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adhy <- synthetic_cdisc_dataset("latest", "adhy") +adhy <- random.cdisc.data::cadhy anl <- adhy anl$APERIODC <- as.factor(anl$APERIODC) # to ensure the table is built even if there is no patients after filtering @@ -52,6 +48,9 @@ anl <- df_explicit_na(anl) ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} result <- basic_table() %>% split_cols_by("TITLE") %>% @@ -70,16 +69,18 @@ result <- result %>% trim_rows(criteria = criteria_fun) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt13.qmd b/book/tables/lab-results/lbt13.qmd index 6b86c4d1e1..02fafe64fd 100644 --- a/book/tables/lab-results/lbt13.qmd +++ b/book/tables/lab-results/lbt13.qmd @@ -5,25 +5,16 @@ subtitle: NCI CTCAE Grade Laboratory Abnormalities by Visit and Baseline Grade ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -Please note that for each variant, the `adlb` dataset needs to be filtered on correct flags like `WGRLOVFL`, `WGRHIVFL`, et al., otherwise the layout function will not return the correct counts. -There is an option to create a record for a lab test where no record is found at that visit. -If you specified `add_derived_type = "PHANTOM"` & `dtype_phantom_cond`, you don't have to use the `h_adsl_adlb_merge_using_worst_flag` function to preprocess your `adlb` dataset. -Otherwise please follow the pre-processing steps below before applying the layout functions. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adsl <- df_explicit_na(adsl) adlb <- df_explicit_na(adlb) @@ -39,6 +30,9 @@ adlb <- adlb %>% filter(PARAMCD == "CRP" & SAFFL == "Y") Note that the worst laboratory flag (below `WGRLOVFL`) must be selected appropriately to match the direction of abnormality (here `Low`). New grouping variables `ATOXGR_GP` and `BTOXGR_GP` are created to display the correct output. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} adlb_f <- adlb %>% filter(WGRLOVFL == "Y") @@ -110,11 +104,18 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Standard Table (High) Note that the worst laboratory flag (below `WGRHIVFL`) must be selected appropriately to match the direction of abnormality (here `High`). New grouping variables `ATOXGR_GP` and `BTOXGR_GP` are created to display the correct output. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} adlb_f <- adlb %>% filter(WGRHIVFL == "Y") @@ -186,10 +187,17 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Without Patients with
Missing Baseline (Low) Note that missing baseline values are filtered out in the pre-processing step. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} adlb_f <- adlb %>% filter(WGRLOVFL == "Y") @@ -261,10 +269,17 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Missing Baseline
Considered as Grade 0 (High) Note that when `BTOXGR` is missing, the grouping variable `BTOXGR_GP` is now `"Not High"` instead of `"Missing"` compared to *Standard Table (High)*. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} adlb_f <- adlb %>% filter(WGRHIVFL == "Y") @@ -335,10 +350,17 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Fill-In
of Grades (High) Pre-processing is the same as for *Standard Table (High)*, but in order to keep all levels, the `drop` argument in `count_occurrences` is set to `FALSE`. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} adlb_f <- adlb %>% filter(WGRHIVFL == "Y") @@ -412,21 +434,38 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +Please note that for each variant, the `adlb` dataset needs to be filtered on correct flags like `WGRLOVFL`, `WGRHIVFL`, et al., otherwise the layout function will not return the correct counts. +There is an option to create a record for a lab test where no record is found at that visit. +If you specified `add_derived_type = "PHANTOM"` & `dtype_phantom_cond`, you don't have to use the `h_adsl_adlb_merge_using_worst_flag` function to preprocess your `adlb` dataset. +Otherwise please follow the pre-processing steps below before applying the layout functions. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb }) datanames <- c("ADSL", "ADLB") datanames(data) <- datanames @@ -478,5 +517,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt14.qmd b/book/tables/lab-results/lbt14.qmd index c900f4f888..514393ca5c 100644 --- a/book/tables/lab-results/lbt14.qmd +++ b/book/tables/lab-results/lbt14.qmd @@ -5,25 +5,16 @@ subtitle: Laboratory Test Results Shift Table -- Highest NCI CTCAE Grade Post-Ba ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -Please note that for each variant, the `adlb` dataset needs to be filtered on correct flags like `WGRLOFL`, `WGRHIFL`, et al., otherwise the layout function will not return the correct counts. -There is an option to create a record for a lab test where no record is found at that visit. -If you specified `add_derived_type = "PHANTOM"` & `dtype_phantom_cond`, you don't have to use the `h_adsl_adlb_merge_using_worst_flag` function to preprocess your `adlb` dataset. -Otherwise please follow the pre-processing steps below before applying the layout functions. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adsl <- df_explicit_na(adsl) adlb <- df_explicit_na(adlb) @@ -39,6 +30,9 @@ adlb <- adlb %>% filter(SAFFL == "Y") Note that the worst laboratory flag (below `WGRHIFL`) must be selected appropriately in the pre-processing step. New grouping variables `ATOXGR_GP` (post-baseline) and `BTOXGR_GP` (baseline) are created to display the correct output. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} adlb_f <- adlb %>% filter(WGRHIFL == "Y") @@ -91,11 +85,18 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Standard Table (Low) Note that the worst laboratory flag (below `WGRLOFL`) must be selected appropriately in the pre-processing step. New grouping variables `ATOXGR_GP` (post-baseline) and `BTOXGR_GP` (baseline) are created to display the correct output. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} adlb_f <- adlb %>% filter(WGRLOFL == "Y") @@ -148,10 +149,17 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Without Patients with
Missing Baseline (High) Note that missing baseline values are filtered out in the pre-processing step. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} adlb_f <- adlb %>% filter(WGRHIFL == "Y") @@ -204,10 +212,17 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Missing Baseline
Considered as Grade 0 (Low) Note that when BTOXGR is missing, the grouping variable `BTOXGR_GP` now is `"Not Low"` instead of `"Missing"` compared to *Standard Table (Low)*. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} adlb_f <- adlb %>% filter(WGRLOFL == "Y") @@ -259,10 +274,17 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Fill-In of Grades Pre-processing is the same as *Standard Table (High)*, but in order to keep all levels, `prune_table()` is not applied. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant5, test = list(result_v5 = "result")} adlb_f <- adlb %>% filter(WGRHIFL == "Y") @@ -314,21 +336,38 @@ result <- basic_table(show_colcounts = TRUE) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant5")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +Please note that for each variant, the `adlb` dataset needs to be filtered on correct flags like `WGRLOFL`, `WGRHIFL`, et al., otherwise the layout function will not return the correct counts. +There is an option to create a record for a lab test where no record is found at that visit. +If you specified `add_derived_type = "PHANTOM"` & `dtype_phantom_cond`, you don't have to use the `h_adsl_adlb_merge_using_worst_flag` function to preprocess your `adlb` dataset. +Otherwise please follow the pre-processing steps below before applying the layout functions. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) - library(dplyr) - - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb }) datanames <- c("ADSL", "ADLB") datanames(data) <- datanames @@ -380,5 +419,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/lab-results/lbt15.qmd b/book/tables/lab-results/lbt15.qmd index 4312d376dd..80d655df1f 100644 --- a/book/tables/lab-results/lbt15.qmd +++ b/book/tables/lab-results/lbt15.qmd @@ -5,23 +5,17 @@ subtitle: Laboratory Test Shifts to NCI CTCAE Grade 3-4 Post-Baseline ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -Because the `scda` dataset `adlb` doesn't have the `PARCAT1` variable, this variable is created from `LBCAT` in pre-processing. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(tern) library(dplyr) library(forcats) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adlb <- synthetic_cdisc_dataset("latest", "adlb") +adsl <- random.cdisc.data::cadsl +adlb <- random.cdisc.data::cadlb adlb <- adlb %>% mutate( @@ -70,14 +64,24 @@ adlb <- adlb %>% var_relabel( ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} -# Argument exclude_base_abn must be TRUE to include patients with normal or abnormal in the opposite direction in the denom +# Argument exclude_base_abn must be TRUE to include patients with normal or abnormal in the opposite +# direction in the denom. # So for "High" direction, subjects with baseline grade 3-4 are not in the denom. lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ARM") %>% add_overall_col("All Patients") %>% - split_rows_by("PARCAT1", split_fun = drop_split_levels, label_pos = "topleft", split_label = obj_label(adlb$PARCAT1)) %>% - split_rows_by("PARAM", split_fun = drop_split_levels, label_pos = "topleft", split_label = obj_label(adlb$PARAM)) %>% + split_rows_by( + "PARCAT1", + split_fun = drop_split_levels, label_pos = "topleft", split_label = obj_label(adlb$PARCAT1) + ) %>% + split_rows_by( + "PARAM", + split_fun = drop_split_levels, label_pos = "topleft", split_label = obj_label(adlb$PARAM) + ) %>% count_abnormal( var = "ANRIND", abnormal = list(Low = "LOW", High = "HIGH"), @@ -91,31 +95,54 @@ result <- build_table(lyt, adlb, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Cut Point +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} result <- build_table(lyt, adlb_alt_cut, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +Because the `random.cdisc.data` dataset `adlb` doesn't have the `PARCAT1` variable, this variable is created from `LBCAT` in pre-processing. + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + The current module `tm_t_abnormality` is only displaying rows that are not all-zero, so the result could be a little different from static output where all-zero rows can be shown. -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) library(forcats) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADLB <- synthetic_cdisc_dataset("latest", "adlb") %>% + ADSL <- random.cdisc.data::cadsl + ADLB <- random.cdisc.data::cadlb %>% mutate( ANRIND = fct_collapse(ATOXGR, "LOW" = c("-3", "-4"), @@ -129,7 +156,7 @@ data <- within(data, { ) ) %>% filter(ONTRTFL == "Y") %>% - var_relabel(ANRIND = "Direction of Abnormality") + col_relabel(ANRIND = "Direction of Abnormality") }) datanames <- c("ADSL", "ADLB") datanames(data) <- datanames @@ -174,5 +201,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/medical-history/mht01.qmd b/book/tables/medical-history/mht01.qmd index bcf2999b5a..6e670d1705 100644 --- a/book/tables/medical-history/mht01.qmd +++ b/book/tables/medical-history/mht01.qmd @@ -5,20 +5,16 @@ subtitle: Medical History ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -admh <- synthetic_cdisc_dataset("latest", "admh") +adsl <- random.cdisc.data::cadsl +admh <- random.cdisc.data::cadmh # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -38,6 +34,9 @@ admh_f <- admh %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -55,7 +54,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% split_label = obj_label(admh_f$MHBODSYS) ) %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique", "nonunique"), .labels = c("Total number of patients with at least one condition", "Total number of conditions"), show_labels = "hidden" @@ -69,8 +68,15 @@ result <- build_table(lyt, admh_f, alt_counts_df = adsl_f) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table of History
Prior to Study +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} admh_f_prior <- admh_f %>% filter(ASTDY <= 0) @@ -81,8 +87,15 @@ result <- build_table(lyt, admh_f_prior, alt_counts_df = adsl_f) %>% result ``` +`r webr_code_labels <- c("setup", "variant1", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Total Number
of Conditions Suppressed +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} split_fun <- drop_split_levels @@ -100,7 +113,7 @@ lyt <- basic_table(show_colcounts = TRUE) %>% split_label = obj_label(admh_f$MHBODSYS) ) %>% analyze_num_patients( - var = "USUBJID", + vars = "USUBJID", .stats = c("unique"), .labels = c("Total number of patients with at least one condition"), show_labels = "hidden" @@ -114,6 +127,10 @@ result <- build_table(lyt, admh_f, alt_counts_df = adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Total Number of Conditions Per Body
System After The Summary of Patients Not currently supported by `rtables`. @@ -123,6 +140,9 @@ Users, please notify us if this variation is important to you. Conditions are further sorted by decreasing high level terms and low level terms. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} split_fun <- drop_split_levels @@ -160,21 +180,36 @@ result <- build_table(lyt, admh_f, alt_counts_df = adsl_f) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) + library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") %>% + ADSL <- random.cdisc.data::cadsl %>% filter(SAFFL == "Y") - ADMH <- synthetic_cdisc_dataset("latest", "admh") %>% + ADMH <- random.cdisc.data::cadmh %>% filter(SAFFL == "Y" & MHBODSYS != "" & MHDECOD != "") }) datanames <- c("ADSL", "ADMH") @@ -209,5 +244,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/pharmacokinetic/pkct01.qmd b/book/tables/pharmacokinetic/pkct01.qmd index e246d199e1..b16a174cbb 100644 --- a/book/tables/pharmacokinetic/pkct01.qmd +++ b/book/tables/pharmacokinetic/pkct01.qmd @@ -5,21 +5,17 @@ subtitle: Summary Concentration Table ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") %>% +adsl <- random.cdisc.data::cadsl %>% filter(ACTARM == "A: Drug X") -adpc <- synthetic_cdisc_dataset("latest", "adpc") %>% +adpc <- random.cdisc.data::cadpc %>% filter(ACTARM == "A: Drug X", PARAM == "Plasma Drug X") # Setting up the data @@ -31,7 +27,10 @@ adpc_1 <- adpc %>% ) %>% select(NOMTPT, ACTARM, VISIT, AVAL, PARAM, AVALCAT1) -adpc_1$NOMTPT <- factor(adpc_1$NOMTPT, levels = levels(adpc_1$NOMTPT)[order(as.numeric(gsub(".*?([0-9\\.]+).*", "\\1", levels(adpc_1$NOMTPT))))]) +adpc_1$NOMTPT <- factor( + adpc_1$NOMTPT, + levels = levels(adpc_1$NOMTPT)[order(as.numeric(gsub(".*?([0-9\\.]+).*", "\\1", levels(adpc_1$NOMTPT))))] +) # Row structure lyt_rows <- basic_table() %>% @@ -59,6 +58,9 @@ lyt_rows <- basic_table() %>% ## Standard Table (Stats in Columns) +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- lyt_rows %>% analyze_vars_in_cols( @@ -80,14 +82,25 @@ result <- build_table(lyt, df = adpc_1, alt_counts_df = adsl) %>% prune_table() # Decorating main_title(result) <- "Summary of PK Concentrations by Nominal Time and Treatment: PK Evaluable" -subtitles(result) <- c("Protocol: xxxxx", paste("Analyte: ", unique(adpc_1$PARAM)), paste("Treatment:", unique(adpc_1$ACTARM))) +subtitles(result) <- c( + "Protocol: xxxxx", + paste("Analyte: ", unique(adpc_1$PARAM)), + paste("Treatment:", unique(adpc_1$ACTARM)) +) main_footer(result) <- "NE: Not Estimable" result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Implementing 1/3 Imputation Rule +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- lyt_rows %>% analyze_vars_in_cols( @@ -109,14 +122,25 @@ result <- build_table(lyt, df = adpc_1, alt_counts_df = adsl) %>% prune_table() # Decorating main_title(result) <- "Summary of PK Concentrations by Nominal Time and Treatment: PK Evaluable" -subtitles(result) <- c("Protocol: xxxxx", paste("Analyte: ", unique(adpc_1$PARAM)), paste("Treatment:", unique(adpc_1$ACTARM))) +subtitles(result) <- c( + "Protocol: xxxxx", + paste("Analyte: ", unique(adpc_1$PARAM)), + paste("Treatment:", unique(adpc_1$ACTARM)) +) main_footer(result) <- c("NE: Not Estimable", "ND: Not Derived") result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Implementing 1/2 Imputation Rule +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- lyt_rows %>% analyze_vars_in_cols( @@ -138,21 +162,28 @@ result <- build_table(lyt, df = adpc_1, alt_counts_df = adsl) %>% prune_table() # Decorate table main_title(result) <- "Summary of PK Concentrations by Nominal Time and Treatment: PK Evaluable" -subtitles(result) <- c("Protocol: xxxxx", paste("Analyte: ", unique(adpc_1$PARAM)), paste("Treatment:", unique(adpc_1$ACTARM))) +subtitles(result) <- c( + "Protocol: xxxxx", + paste("Analyte: ", unique(adpc_1$PARAM)), + paste("Treatment:", unique(adpc_1$ACTARM)) +) main_footer(result) <- "ND: Not Derived" result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt02.qmd b/book/tables/pharmacokinetic/pkpt02.qmd index f822a5a33b..6a2ad43368 100644 --- a/book/tables/pharmacokinetic/pkpt02.qmd +++ b/book/tables/pharmacokinetic/pkpt02.qmd @@ -5,31 +5,26 @@ subtitle: Pharmacokinetic Parameter Summary -- Plasma/Serum/Blood PK Parameters ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp <- adpp %>% filter(PPSPEC == "Plasma", AVISIT == "CYCLE 1 DAY 1") ``` ## Standard Table -- Plasma -```{r} +```{r lyt} # lyt creation lyt <- basic_table() %>% split_cols_by( var = "ARMCD", split_fun = trim_levels_in_group("ARMCD"), - # label_pos = "topleft", split_label = "Treatment Arm" ) %>% split_rows_by( @@ -54,7 +49,11 @@ lyt <- basic_table() %>% #### Plasma Drug X -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp0 <- adpp %>% filter(PPCAT == "Plasma Drug X") %>% h_pkparam_sort() %>% @@ -67,9 +66,17 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT), "\nVisit:", unique(a result ``` +`r webr_code_labels <- c("setup", "lyt", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug Y -```{r variant2, test = list(result_v2 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp1 <- adpp %>% filter(PPCAT == "Plasma Drug Y") %>% h_pkparam_sort() %>% @@ -82,15 +89,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp1$PPCAT), "\nVisit:", unique(a result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lyt", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt03.qmd b/book/tables/pharmacokinetic/pkpt03.qmd index 115b0093e3..968c65f317 100644 --- a/book/tables/pharmacokinetic/pkpt03.qmd +++ b/book/tables/pharmacokinetic/pkpt03.qmd @@ -5,20 +5,17 @@ subtitle: Pharmacokinetic Parameter Summary of Plasma by Treatment (Stats in Col ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) + +```{r setup, echo = FALSE} library(dplyr) library(tern) # Preprocess analysis data ---- -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp <- adpp %>% filter(PPSPEC == "Plasma") %>% filter(AVISIT %in% c("CYCLE 1 DAY 1", "CYCLE 1 DAY 2")) %>% @@ -27,7 +24,7 @@ adpp <- adpp %>% mutate(PARAM = reorder(PARAM, TLG_ORDER)) # Preprocess subject-level data ---- -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # Workaround needed to include (N=xx) population counts # Repeat ADSL by the number of levels in AVISIT @@ -73,7 +70,7 @@ adsl_y_splitvars <- adsl_tmp %>% ## Standard Table -```{r} +```{r lyt} # lyt creation lyt <- basic_table() %>% split_rows_by( @@ -124,12 +121,15 @@ lyt <- basic_table() %>% min = format_sigfig(3), max = format_sigfig(3) ), - na_level = "NE" + na_str = "NE" ) ``` #### Plasma Drug X +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} result <- build_table(lyt, df = adpp_x, alt_counts_df = adsl_x_splitvars) main_title(result) <- paste("Summary of", unique(adpp_x$PPSPEC), "PK Parameter by Treatment Arm, PK Population") @@ -138,8 +138,15 @@ result <- paginate_table(result, landscape = TRUE) result ``` +`r webr_code_labels <- c("setup", "lyt", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug X: Remove Rows with 0s +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} result <- build_table(lyt, df = adpp_x, alt_counts_df = adsl_x_splitvars) %>% prune_table() @@ -150,8 +157,15 @@ result <- paginate_table(result, landscape = TRUE) result ``` +`r webr_code_labels <- c("setup", "lyt", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug Y +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} result <- build_table(lyt, df = adpp_y, alt_counts_df = adsl_y_splitvars) main_title(result) <- paste("Summary of", unique(adpp_y$PPSPEC), "PK Parameter by Treatment Arm, PK Population") @@ -160,15 +174,18 @@ result <- paginate_table(result, landscape = TRUE) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lyt", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt04.qmd b/book/tables/pharmacokinetic/pkpt04.qmd index 2bcd6184f9..47698822af 100644 --- a/book/tables/pharmacokinetic/pkpt04.qmd +++ b/book/tables/pharmacokinetic/pkpt04.qmd @@ -5,31 +5,26 @@ subtitle: Pharmacokinetic Parameter Summary -- Urine PK Parameters (Stats in Row ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp <- adpp %>% filter(PPSPEC == "Urine", AVISIT == "CYCLE 1 DAY 1") ``` ## Standard Table -```{r} +```{r lyt} # lyt creation lyt <- basic_table() %>% split_cols_by( var = "ARMCD", split_fun = trim_levels_in_group("ARMCD"), - # label_pos = "topleft", split_label = "Treatment Arm" ) %>% split_rows_by( @@ -54,7 +49,11 @@ lyt <- basic_table() %>% #### Plasma Drug X -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp0 <- adpp %>% filter(PPCAT == "Plasma Drug X") %>% h_pkparam_sort() %>% @@ -67,9 +66,17 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT), "\nVisit:", unique(a result ``` +`r webr_code_labels <- c("setup", "lyt", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug Y -```{r variant2, test = list(result_v2 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp1 <- adpp %>% filter(PPCAT == "Plasma Drug Y") %>% h_pkparam_sort() %>% @@ -82,15 +89,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp1$PPCAT), "\nVisit:", unique(a result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lyt", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt05.qmd b/book/tables/pharmacokinetic/pkpt05.qmd index d32dbe0c67..7b146e9d10 100644 --- a/book/tables/pharmacokinetic/pkpt05.qmd +++ b/book/tables/pharmacokinetic/pkpt05.qmd @@ -5,25 +5,21 @@ subtitle: Summary of Urinary PK Parameters by Treatment Arm (Stats in Columns) ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp <- adpp %>% filter(PPSPEC == "Urine", AVISIT == "CYCLE 1 DAY 1") ``` ## Standard Table -```{r} +```{r lyt} # lyt creation lyt <- basic_table() %>% split_rows_by( @@ -72,7 +68,11 @@ lyt <- basic_table() %>% #### Plasma Drug X -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp0 <- adpp %>% filter(PPCAT == "Plasma Drug X") %>% h_pkparam_sort() %>% @@ -85,9 +85,17 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT), "\nVisit:", unique(a result ``` +`r webr_code_labels <- c("setup", "lyt", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug Y -```{r variant2, test = list(result_v2 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp1 <- adpp %>% filter(PPCAT == "Plasma Drug Y") %>% h_pkparam_sort() %>% @@ -100,15 +108,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp1$PPCAT), "\nVisit:", unique(a result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lyt", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt06.qmd b/book/tables/pharmacokinetic/pkpt06.qmd index ccd34f1ce1..f42bc821a0 100644 --- a/book/tables/pharmacokinetic/pkpt06.qmd +++ b/book/tables/pharmacokinetic/pkpt06.qmd @@ -5,32 +5,28 @@ subtitle: Pharmacokinetic Parameter Summary -- Dose-Normalized PK Parameters (St ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) library(stringr) -adpp <- synthetic_cdisc_dataset("latest", "adpp") -adpp <- adpp %>% filter(AVISIT == "CYCLE 1 DAY 1", str_detect(tolower(PARAM), regex("norm by dose", ignore_case = TRUE))) +adpp <- random.cdisc.data::cadpp +adpp <- adpp %>% + filter(AVISIT == "CYCLE 1 DAY 1", str_detect(tolower(PARAM), regex("norm by dose", ignore_case = TRUE))) ``` ## Standard Table -```{r} +```{r lyt} # lyt creation lyt <- basic_table() %>% split_cols_by( var = "ARMCD", split_fun = trim_levels_in_group("ARMCD"), - # label_pos = "topleft", split_label = "Treatment Arm" ) %>% split_rows_by( @@ -55,7 +51,11 @@ lyt <- basic_table() %>% #### Plasma Drug X -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp0 <- adpp %>% filter(PPCAT == "Plasma Drug X") %>% h_pkparam_sort() %>% @@ -68,9 +68,17 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT), "\nVisit:", unique(a result ``` +`r webr_code_labels <- c("setup", "lyt", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug Y -```{r variant2, test = list(result_v2 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp1 <- adpp %>% filter(PPCAT == "Plasma Drug Y") %>% h_pkparam_sort() %>% @@ -83,15 +91,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp1$PPCAT), "\nVisit:", unique(a result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lyt", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt07.qmd b/book/tables/pharmacokinetic/pkpt07.qmd index c2574a8309..3ce7158435 100644 --- a/book/tables/pharmacokinetic/pkpt07.qmd +++ b/book/tables/pharmacokinetic/pkpt07.qmd @@ -5,26 +5,23 @@ subtitle: Table of Mean Dose-Normalized Selected Pharmacokinetic Parameters (Sta ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) library(stringr) -adpp <- synthetic_cdisc_dataset("latest", "adpp") -adpp <- adpp %>% filter(AVISIT == "CYCLE 1 DAY 1", str_detect(tolower(PARAM), regex("norm by dose", ignore_case = TRUE))) +adpp <- random.cdisc.data::cadpp +adpp <- adpp %>% + filter(AVISIT == "CYCLE 1 DAY 1", str_detect(tolower(PARAM), regex("norm by dose", ignore_case = TRUE))) ``` ## Standard Table -- Urine -```{r} +```{r lyt} # lyt creation lyt <- basic_table() %>% split_rows_by( @@ -73,7 +70,11 @@ lyt <- basic_table() %>% #### Plasma Drug X -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp0 <- adpp %>% filter(PPCAT == "Plasma Drug X") %>% h_pkparam_sort() %>% @@ -86,9 +87,17 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT), "\nVisit:", unique(a result ``` +`r webr_code_labels <- c("setup", "lyt", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + #### Plasma Drug Y -```{r variant2, test = list(result_v2 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant2, test = list(result_v2 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} adpp1 <- adpp %>% filter(PPCAT == "Plasma Drug Y") %>% h_pkparam_sort() %>% @@ -101,15 +110,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp1$PPCAT), "\nVisit:", unique(a result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "lyt", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/pharmacokinetic/pkpt08.qmd b/book/tables/pharmacokinetic/pkpt08.qmd index 4db386a85c..2464f2164f 100644 --- a/book/tables/pharmacokinetic/pkpt08.qmd +++ b/book/tables/pharmacokinetic/pkpt08.qmd @@ -5,19 +5,15 @@ subtitle: Pharmacokinetic Parameter Summary of Cumulative Amount of Drug Elimina ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) -library(scda) library(tern) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp adpp <- adpp %>% filter(PPSTINT != "NA" & PPENINT != "NA") %>% @@ -26,7 +22,11 @@ adpp <- adpp %>% ## Standard Table -- Plasma -```{r variant1, test = list(result_v1 = "result")} +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + + +```{r variant1, test = list(result_v1 = "result"), opts.label = ifelse(packageVersion("tern") < "0.9.3.9020", "skip_test_strict", "")} # create layout lyt <- basic_table() %>% add_overall_col("Accumulation Interval (hours)") %>% @@ -85,16 +85,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT), "\nVisit:", unique(a cat(rtables::toString(result, indent_size = 10)) ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` -{{< include ../../repro.qmd >}} +:::: -::: +{{< include ../../_utils/save_results.qmd >}} + +{{< include ../../repro.qmd >}} diff --git a/book/tables/pharmacokinetic/pkpt11.qmd b/book/tables/pharmacokinetic/pkpt11.qmd index 4d61ebcb7d..4b5a9620ac 100644 --- a/book/tables/pharmacokinetic/pkpt11.qmd +++ b/book/tables/pharmacokinetic/pkpt11.qmd @@ -5,19 +5,16 @@ subtitle: Pharmacokinetic Parameter Estimated Ratios of Geometric Means and 90% ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) + +```{r setup, echo = FALSE} library(dplyr) library(tern) -adpp <- synthetic_cdisc_dataset("latest", "adpp") +adpp <- random.cdisc.data::cadpp # Comparator Dose - A: Drug X arm_var <- "TRT01A" @@ -80,14 +77,15 @@ s_gmr <- function(df, ) } -afun_pk_gmr <- function(.formats = list( - n = "xx.", - geom_mean_ratio = format_sigfig(3), - gmr_ci_lwr = format_sigfig(3), - gmr_ci_upr = format_sigfig(3) - ), - compare_dose = comp_dose, - denom = TRUE) { +afun_pk_gmr <- function( + .formats = list( + n = "xx.", + geom_mean_ratio = format_sigfig(3), + gmr_ci_lwr = format_sigfig(3), + gmr_ci_upr = format_sigfig(3) + ), + compare_dose = comp_dose, + denom = TRUE) { checkmate::assert_list(.formats) checkmate::assert_subset(names(.formats), c("n", "geom_mean_ratio", "gmr_ci_lwr", "gmr_ci_upr")) @@ -111,6 +109,9 @@ afun_pk_gmr <- function(.formats = list( ## Standard Table -- Plasma +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # create layout lyt <- basic_table() %>% @@ -157,15 +158,18 @@ subtitles(result) <- paste("Analyte:", unique(adpp0$PPCAT)) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: -## `teal` App +## Data Setup -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/risk-management-plan/rmpt01.qmd b/book/tables/risk-management-plan/rmpt01.qmd index 921129be5c..9964f721b3 100644 --- a/book/tables/risk-management-plan/rmpt01.qmd +++ b/book/tables/risk-management-plan/rmpt01.qmd @@ -5,26 +5,22 @@ subtitle: Duration of Exposure for Risk Management Plan ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adex <- synthetic_cdisc_dataset("latest", "adex") +adsl <- random.cdisc.data::cadsl +adex <- random.cdisc.data::cadex # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) adex <- df_explicit_na(adex) -# Simulate ADEX records with PARAMCD == "TDURD" as they are not in sample scda dataset. +# Simulate ADEX records with PARAMCD == "TDURD" as they are not in sample random.cdisc.data dataset. set.seed(1, kind = "Mersenne-Twister") adex2 <- adex %>% distinct(USUBJID, .keep_all = TRUE) %>% @@ -57,6 +53,9 @@ adsl_f <- adsl %>% filter(adsl$SAFFL == "Y") ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table( title = "Duration of Exposure: Safety-Evaluable Patients", @@ -78,23 +77,37 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_f) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEX <- synthetic_cdisc_dataset("latest", "adex") + ADSL <- random.cdisc.data::cadsl + ADEX <- random.cdisc.data::cadex - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) set.seed(1, kind = "Mersenne-Twister") ADEX <- ADEX %>% distinct(USUBJID, .keep_all = TRUE) %>% @@ -137,8 +150,8 @@ app <- init( selected = "TDURD" ), col_by_var = choices_selected( - choices = variable_choices(ADEX, subset = c("SEX", "ARM")), - selected = NULL + choices = variable_choices(ADEX, subset = c("ARM")), + selected = "ARM" ), row_by_var = choices_selected( choices = variable_choices(ADEX, subset = c("aval_months_cat", "RACE", "STRATA1", "SEX")), @@ -157,5 +170,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/risk-management-plan/rmpt03.qmd b/book/tables/risk-management-plan/rmpt03.qmd index 7e89e57a78..08ecacbe7f 100644 --- a/book/tables/risk-management-plan/rmpt03.qmd +++ b/book/tables/risk-management-plan/rmpt03.qmd @@ -5,26 +5,22 @@ subtitle: Extent of Exposure by Age Group and Gender for Risk Management Plan ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adex <- synthetic_cdisc_dataset("latest", "adex") +adsl <- random.cdisc.data::cadsl +adex <- random.cdisc.data::cadex # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) adex <- df_explicit_na(adex) -# Simulate ADEX records with PARAMCD == "TDURD" as they are not in sample scda dataset. +# Simulate ADEX records with PARAMCD == "TDURD" as they are not in sample random.cdisc.data dataset. set.seed(1, kind = "Mersenne-Twister") adex2 <- adex %>% distinct(USUBJID, .keep_all = TRUE) %>% @@ -66,6 +62,9 @@ adsl_f <- adsl %>% ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table( title = "Extent of Exposure by Age Group and Gender: Safety-Evaluable Patients", @@ -87,8 +86,15 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_f) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Excluding Empty Age Groups +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table( title = "Duration of Exposure: Safety-Evaluable Patients", @@ -111,26 +117,40 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_f) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEX <- synthetic_cdisc_dataset("latest", "adex") + ADSL <- random.cdisc.data::cadsl + ADEX <- random.cdisc.data::cadex - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) set.seed(1, kind = "Mersenne-Twister") - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) ADEX <- ADEX %>% distinct(USUBJID, .keep_all = TRUE) %>% mutate( @@ -145,7 +165,7 @@ data <- within(data, { ) %>% bind_rows(ADEX) - var_labels(ADEX) <- labels + col_labels(ADEX) <- labels ADEX <- ADEX %>% mutate( @@ -183,8 +203,8 @@ app <- init( selected = "TDURD" ), col_by_var = choices_selected( - choices = variable_choices(ADEX, subset = c("SEX", "ARM")), - selected = "SEX" + choices = variable_choices(ADEX, subset = c("ARM")), + selected = "ARM" ), row_by_var = choices_selected( choices = variable_choices(ADEX, subset = c("AGEGR1", "AGEGR2")), @@ -203,5 +223,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/risk-management-plan/rmpt04.qmd b/book/tables/risk-management-plan/rmpt04.qmd index f72c1972a3..d54ab43349 100644 --- a/book/tables/risk-management-plan/rmpt04.qmd +++ b/book/tables/risk-management-plan/rmpt04.qmd @@ -5,26 +5,22 @@ subtitle: Extent of Exposure by Ethnic Origin for Risk Management Plan ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adex <- synthetic_cdisc_dataset("latest", "adex") +adsl <- random.cdisc.data::cadsl +adex <- random.cdisc.data::cadex # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) adex <- df_explicit_na(adex) -# Simulate ADEX records with PARAMCD == "TDURD" as they are not in sample scda dataset. +# Simulate ADEX records with PARAMCD == "TDURD" as they are not in sample random.cdisc.data dataset. set.seed(1, kind = "Mersenne-Twister") adex2 <- adex %>% distinct(USUBJID, .keep_all = TRUE) %>% @@ -49,6 +45,9 @@ adsl_f <- adsl %>% filter(adsl$SAFFL == "Y") ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table( title = "Extent of Exposure by Ethnic Origin: Safety-Evaluable Patients", @@ -67,26 +66,40 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_f) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEX <- synthetic_cdisc_dataset("latest", "adex") + ADSL <- random.cdisc.data::cadsl + ADEX <- random.cdisc.data::cadex - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) set.seed(1, kind = "Mersenne-Twister") - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) ADEX <- ADEX %>% distinct(USUBJID, .keep_all = TRUE) %>% mutate( @@ -97,7 +110,7 @@ data <- within(data, { ) %>% bind_rows(ADEX) - var_labels(ADEX) <- labels + col_labels(ADEX) <- labels }) datanames <- c("ADSL", "ADEX") datanames(data) <- datanames @@ -119,7 +132,7 @@ app <- init( ), col_by_var = choices_selected( choices = variable_choices(ADEX, subset = c("ARM")), - selected = NULL + selected = "ARM" ), row_by_var = choices_selected( choices = variable_choices(ADEX, subset = c("ETHNIC", "SEX")), @@ -138,5 +151,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/risk-management-plan/rmpt05.qmd b/book/tables/risk-management-plan/rmpt05.qmd index b1c7218856..45287ecbcc 100644 --- a/book/tables/risk-management-plan/rmpt05.qmd +++ b/book/tables/risk-management-plan/rmpt05.qmd @@ -5,20 +5,16 @@ subtitle: Extent of Exposure by Race for Risk Management Plan ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adex <- synthetic_cdisc_dataset("latest", "adex") +adsl <- random.cdisc.data::cadsl +adex <- random.cdisc.data::cadex # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -49,6 +45,9 @@ adsl_f <- adsl %>% filter(adsl$SAFFL == "Y") ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table( title = "Extent of Exposure by Race: Safety-Evaluable Patients", @@ -69,26 +68,40 @@ result <- build_table(lyt, df = anl, alt_counts_df = adsl_f) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADEX <- synthetic_cdisc_dataset("latest", "adex") + ADSL <- random.cdisc.data::cadsl + ADEX <- random.cdisc.data::cadex - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) set.seed(1, kind = "Mersenne-Twister") - labels <- var_labels(ADEX) + labels <- col_labels(ADEX) ADEX <- ADEX %>% distinct(USUBJID, .keep_all = TRUE) %>% mutate( @@ -99,7 +112,7 @@ data <- within(data, { ) %>% bind_rows(ADEX) - var_labels(ADEX) <- labels + col_labels(ADEX) <- labels }) datanames <- c("ADSL", "ADEX") datanames(data) <- datanames @@ -120,8 +133,8 @@ app <- init( selected = "TDURD" ), col_by_var = choices_selected( - choices = variable_choices(ADEX, subset = c("SEX", "ARM")), - selected = NULL + choices = variable_choices(ADEX, subset = c("ARM")), + selected = "ARM" ), row_by_var = choices_selected( choices = variable_choices(ADEX, subset = c("RACE", "STRATA1", "SEX")), @@ -140,5 +153,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/risk-management-plan/rmpt06.qmd b/book/tables/risk-management-plan/rmpt06.qmd index cf72deccc1..dbe6801fd2 100644 --- a/book/tables/risk-management-plan/rmpt06.qmd +++ b/book/tables/risk-management-plan/rmpt06.qmd @@ -5,23 +5,16 @@ subtitle: Seriousness, Outcomes, Severity, Frequency with 95% CI for Risk Manage ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -The `adae` and `adsl` datasets need to undergo data processing before table production. -Some new variables are added to these datasets to create the desired tables. - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) library(dplyr) -library(scda) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -adae <- synthetic_cdisc_dataset("latest", "adae") +adsl <- random.cdisc.data::cadsl +adae <- random.cdisc.data::cadae # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -74,6 +67,9 @@ adsl1 <- adsl %>% Please note that by default the percentage analysis uses Wald's confidence interval with continuity correction and the default confidence interval for percentage is 95%. To use a different method for confidence interval calculation, the method name needs to be provided to `method` argument. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt_adsl <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -127,8 +123,15 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Selecting
Sections to Display +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt_adsl <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM") %>% @@ -177,10 +180,17 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table with Differences Please note that by default the percentage difference analysis also uses Wald's confidence interval with continuity correction and the default confidence interval is 95%. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt_adsl <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM", ref_group = "A: Drug X") %>% @@ -243,10 +253,17 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table Modifying Alpha Level and
Type of Confidence Interval The confidence level can be changed through the `conf_level` argument. +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt_adsl <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ACTARM", ref_group = "A: Drug X") %>% @@ -312,6 +329,10 @@ result <- rbind( result ``` +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + ## Table by SMQ ```{r} @@ -320,15 +341,17 @@ result # In progress ``` -{{< include ../../test-utils/save_results.qmd >}} +## Data Setup -## `teal` App +The `adae` and `adsl` datasets need to undergo data processing before table production. +Some new variables are added to these datasets to create the desired tables. -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +```{r setup} #| code-fold: show - -# In progress ``` +:::: + +{{< include ../../_utils/save_results.qmd >}} + {{< include ../../repro.qmd >}} -::: diff --git a/book/tables/safety/enrollment01.qmd b/book/tables/safety/enrollment01.qmd index 0c981d293f..44eff69f6a 100644 --- a/book/tables/safety/enrollment01.qmd +++ b/book/tables/safety/enrollment01.qmd @@ -5,20 +5,16 @@ subtitle: Enrollment Variants ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(dplyr) library(forcats) -library(scda) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") +adsl <- random.cdisc.data::cadsl # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -46,6 +42,9 @@ adsl <- adsl %>% ## ENT01 -- Enrollment by Region,
Country, and Investigator Number +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} # Define the split function split_fun <- drop_split_levels @@ -66,8 +65,15 @@ result <- build_table(lyt, adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## ENT01A -- Enrollment by Country
and Investigator Number +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -83,8 +89,15 @@ result <- build_table(lyt, adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + ## ENT02 -- Enrollment by Region, Country,
and Investigator Number/Name +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant3, test = list(result_v3 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -102,8 +115,15 @@ result <- build_table(lyt, adsl) %>% result ``` +`r webr_code_labels <- c("setup", "variant3")` +{{< include ../../_utils/webr.qmd >}} +::: + ## ENT02A -- Enrollment by Country
and Investigator Number/Name +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant4, test = list(result_v4 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM") %>% @@ -119,28 +139,44 @@ result <- build_table(lyt, adsl) %>% result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant4")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + Note that for this module application, only the variables passed into `by_vars` are used when `row_groups` is selected. Variables passed into `analyze_vars` are additionally used when `row_groups` is deselected. -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} + + +```{r teal, opts.label = c("skip_if_testing", "app"), eval = packageVersion("teal.modules.clinical") >= "0.9.0.9003"} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { library(dplyr) - library(forcats) - library(scda) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") + + ADSL <- random.cdisc.data::cadsl # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) - adsl_labels <- var_labels(ADSL) + adsl_labels <- col_labels(ADSL) ADSL <- ADSL %>% mutate( @@ -156,7 +192,7 @@ data <- within(data, { INVID_INVNAM = factor(INVID_INVNAM) ) - var_labels(ADSL) <- c(adsl_labels, "Investigator Number/Name") + col_labels(ADSL) <- c(adsl_labels, c(INVID_INVNAM = "Investigator Number/Name")) }) datanames <- "ADSL" datanames(data) <- datanames @@ -198,5 +234,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/vital-signs/vst01.qmd b/book/tables/vital-signs/vst01.qmd index ce1880a6ff..70bcf3c6f5 100644 --- a/book/tables/vital-signs/vst01.qmd +++ b/book/tables/vital-signs/vst01.qmd @@ -5,21 +5,16 @@ subtitle: Vital Sign Results and Change from Baseline by Visit ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} +```{r setup, echo = FALSE} library(tern) -library(scda) library(dplyr) -library(teal.modules.clinical) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -advs <- synthetic_cdisc_dataset("latest", "advs") +adsl <- random.cdisc.data::cadsl +advs <- random.cdisc.data::cadvs # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. adsl <- df_explicit_na(adsl) @@ -80,6 +75,9 @@ var_labels(advs_f) <- advs_label ## Standard Table +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} split_fun <- drop_split_levels @@ -121,22 +119,38 @@ result <- build_table(lyt = lyt, df = advs_f, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + + + +```{r teal, opts.label = c("skip_if_testing", "app"), eval = packageVersion("teal.modules.clinical") >= "0.9.0.9007"} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADVS <- synthetic_cdisc_dataset("latest", "advs") - advs_label <- var_labels(ADVS) + ADSL <- random.cdisc.data::cadsl + ADVS <- random.cdisc.data::cadvs + advs_label <- col_labels(ADVS) # post-baseline advs_pb <- ADVS %>% @@ -174,7 +188,7 @@ data <- within(data, { ) %>% mutate(AVISIT = droplevels(AVISIT)) - var_labels(ADVS) <- advs_label + col_labels(ADVS) <- advs_label }) datanames <- c("ADSL", "ADVS") datanames(data) <- datanames @@ -217,5 +231,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/tables/vital-signs/vst02.qmd b/book/tables/vital-signs/vst02.qmd index 3c0fe1ecf0..80ae32b905 100644 --- a/book/tables/vital-signs/vst02.qmd +++ b/book/tables/vital-signs/vst02.qmd @@ -5,20 +5,16 @@ subtitle: Vital Sign Abnormalities ------------------------------------------------------------------------ -{{< include ../../test-utils/envir_hook.qmd >}} +{{< include ../../_utils/envir_hook.qmd >}} -::: panel-tabset -## Data Setup - -```{r setup, message=FALSE} -#| code-fold: show +:::: {.panel-tabset} -library(scda) +```{r setup, echo = FALSE} library(dplyr) library(tern) -adsl <- synthetic_cdisc_dataset("latest", "adsl") -advs <- synthetic_cdisc_dataset("latest", "advs") +adsl <- random.cdisc.data::cadsl +advs <- random.cdisc.data::cadvs # Ensure character variables are converted to factors and empty strings # and NAs are explicit missing levels. @@ -33,14 +29,14 @@ advs_f <- advs %>% ANRIND = "Abnormality" ) -# If you want to control which parameters in the table have only `LOW` or only `HIGH` theoretical ranges defined, -# see `tern::h_map_for_count_abnormal` with method "range" or refer to the `EGT02` example. -# For `VST02` we want to keep both directions for all parameters so we will not use `trim_levels_to_map` as the split function. split_fun <- drop_split_levels ``` ## VST02_1 -- Table of Abnormalities
Regardless of Abnormality at Baseline +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant1, test = list(result_v1 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -58,8 +54,15 @@ result <- build_table(lyt = lyt, df = advs_f, alt_counts_df = adsl) result ``` +`r webr_code_labels <- c("setup", "variant1")` +{{< include ../../_utils/webr.qmd >}} +::: + ## VST02_2 -- Table of Abnormalities Among
Subjects Without Abnormality at Baseline +::: {.panel-tabset .nav-justified group="webr"} +## {{< fa regular file-lines sm fw >}} Preview + ```{r variant2, test = list(result_v2 = "result")} lyt <- basic_table(show_colcounts = TRUE) %>% split_cols_by(var = "ACTARM") %>% @@ -77,23 +80,37 @@ result <- build_table(lyt = lyt, df = advs_f, alt_counts_df = adsl) result ``` -{{< include ../../test-utils/save_results.qmd >}} +`r webr_code_labels <- c("setup", "variant2")` +{{< include ../../_utils/webr.qmd >}} +::: + +## Data Setup + +```{r setup} +#| code-fold: show +``` + +:::: + +{{< include ../../_utils/save_results.qmd >}} ## `teal` App -```{r teal, message=FALSE, opts.label=c('skip_if_testing', 'app')} +::: {.panel-tabset .nav-justified} +## {{< fa regular file-lines fa-sm fa-fw >}} Preview + +```{r teal, opts.label = c("skip_if_testing", "app")} library(teal.modules.clinical) ## Data reproducible code data <- teal_data() data <- within(data, { - library(scda) library(dplyr) - ADSL <- synthetic_cdisc_dataset("latest", "adsl") - ADVS <- synthetic_cdisc_dataset("latest", "advs") %>% + ADSL <- random.cdisc.data::cadsl + ADVS <- random.cdisc.data::cadvs %>% mutate(ONTRTFL = ifelse(AVISIT %in% c("SCREENING", "BASELINE"), "", "Y")) %>% - var_relabel(ONTRTFL = "On Treatment Record Flag") + col_relabel(ONTRTFL = "On Treatment Record Flag") }) datanames <- c("ADSL", "ADVS") datanames(data) <- datanames @@ -133,5 +150,7 @@ app <- init( shinyApp(app$ui, app$server) ``` -{{< include ../../repro.qmd >}} +{{< include ../../_utils/shinylive.qmd >}} ::: + +{{< include ../../repro.qmd >}} diff --git a/book/test-utils/envir_hook.qmd b/book/test-utils/envir_hook.qmd deleted file mode 100644 index 39a1d301ad..0000000000 --- a/book/test-utils/envir_hook.qmd +++ /dev/null @@ -1,33 +0,0 @@ -```{r knitr_utils, include=FALSE} -#| renv.ignore: TRUE - -knitr::knit_hooks$set(test = function(options, envir, before = FALSE) { - if (isFALSE(before)) { - if (!exists("tenv", envir = envir)) { - envir$tenv <- new.env() - } - for (i in seq_along(options$test)) { - expr <- substitute(tenv$id <- var, list(id = names(options$test)[i], var = as.name(options$test[[i]]))) - eval(expr, envir = envir) - } - } -}) - -knitr::opts_template$set( - include_if_testing = list( - eval = isTRUE(testthat::is_checking() || testthat::is_testing()), - cache = FALSE - ), - skip_if_testing = list( - eval = isFALSE(testthat::is_checking() || testthat::is_testing()) - ), - app = list( - webshot = "webshot2", - screenshot.force = TRUE, - screenshot.opts = list(delay = 5), - dev = "png", - fig.width = 15, - cache = FALSE - ) -) -``` diff --git a/book/test-utils/save_results.qmd b/book/test-utils/save_results.qmd deleted file mode 100644 index e155667df5..0000000000 --- a/book/test-utils/save_results.qmd +++ /dev/null @@ -1,10 +0,0 @@ -```{r save testenv, include=FALSE, opts.label='include_if_testing'} -#| renv.ignore: TRUE -if (exists("tenv")) { - dirname <- Sys.getenv("QUARTO_TESTTHAT_DATA_PATH") - filename <- paste0(gsub("\\.rmarkdown$", "", knitr::current_input()), ".rds") - filepath <- file.path(dirname, filename) - file.create(filepath) - saveRDS(tenv, filepath) -} -``` diff --git a/book/tlg-index.qmd b/book/tlg-index.qmd index 8d0efa650c..5b751d46bf 100644 --- a/book/tlg-index.qmd +++ b/book/tlg-index.qmd @@ -281,7 +281,7 @@ toc-depth: 4 #### ECG -        [EGL01 -- 'Listing of ECG Data: Safety-Evaluable Patients'](./listings/ECG/egl01.qmd) +        [EGL01 -- Listing of ECG Data: Safety-Evaluable Patients](./listings/ECG/egl01.qmd) #### Exposure @@ -322,7 +322,7 @@ toc-depth: 4 #### Vital Signs -        [VSL01 -- 'Listing of Vital Signs: Safety-Evaluable Patients'](./listings/vital-signs/vsl01.qmd) +        [VSL01 -- Listing of Vital Signs: Safety-Evaluable Patients](./listings/vital-signs/vsl01.qmd) ------------------------------------------------------------------------ @@ -335,6 +335,8 @@ toc-depth: 4         [FSTG02 -- Subgroup Analysis of Survival Duration](./graphs/efficacy/fstg02.qmd) +        [KMG01 -- Kaplan-Meier Plot](./graphs/efficacy/kmg01.qmd) +         [MMRMG01 -- Plots for Mixed-Effect Model Repeated Measures Analysis](./graphs/efficacy/mmrmg01.qmd)         [MMRMG02 -- Forest Plot for Mixed-Effect Model Repeated Measures](./graphs/efficacy/mmrmg02.qmd) @@ -369,8 +371,6 @@ toc-depth: 4         [IPPG01 -- Individual Patient Plot Over Time](./graphs/other/ippg01.qmd) -        [KMG01 -- Kaplan-Meier Plot](./graphs/other/kmg01.qmd) -         [LTG01 -- Lattice Plot of Laboratory Tests by Treatment Group Over Time](./graphs/other/ltg01.qmd)         [MNG01 -- Mean Plot](./graphs/other/mng01.qmd) diff --git a/inst/WORDLIST b/inst/WORDLIST new file mode 100644 index 0000000000..0d24da166c --- /dev/null +++ b/inst/WORDLIST @@ -0,0 +1,3 @@ +pre +testability +TLG diff --git a/package/.Rbuildignore b/package/.Rbuildignore index 48220a28b8..a2d63c9010 100644 --- a/package/.Rbuildignore +++ b/package/.Rbuildignore @@ -15,4 +15,4 @@ ^.*_cache$ _freeze$ \.quarto$ -_site$ \ No newline at end of file +_site$ diff --git a/package/.lintr b/package/.lintr deleted file mode 100644 index 34473d2738..0000000000 --- a/package/.lintr +++ /dev/null @@ -1,5 +0,0 @@ -linters: linters_with_defaults( - line_length_linter = line_length_linter(120), - cyclocomp_linter = NULL, - object_usage_linter = NULL - ) diff --git a/package/DESCRIPTION b/package/DESCRIPTION index f3d7c9cf33..0d1e999ebc 100644 --- a/package/DESCRIPTION +++ b/package/DESCRIPTION @@ -1,7 +1,6 @@ Package: tlg.catalog.pkg Title: Tables, Listings and Graphs Catalog -Version: 0.1.0.9009 -Date: 2023-02-21 +Version: 0.1.0.9027 Authors@R: c( person("Joe", "Zhu", , "joe.zhu@roche.com", role = c("aut", "cre")), person("Pawel", "Rucki", , "pawel.rucki@roche.com", role = "aut"), @@ -14,39 +13,41 @@ Depends: Suggests: binom, broom, + cowplot, DescTools, dplyr, forcats, - formatters (>= 0.5.5), - ggplot2 (>= 3.4.0), - ggpubr, + formatters, + ggplot2, ggrepel, grid, knitr, lubridate, nestcolor, - quarto, + quarto (>= 1.4), + random.cdisc.data, renv, - rlistings (>= 0.2.7), - rtables (>= 0.6.6), + rlistings, + rtables, scales, - scda, - scda.2022 (>= 0.1.5), + shinylive, stats, stringr, - svglite (>= 2.1.2), - teal (>= 0.14.0), - teal.modules.clinical (>= 0.8.16), - teal.modules.general (>= 0.2.16), - tern (>= 0.9.3), - tern.mmrm (>= 0.3.0), + svglite, + teal, + teal.modules.clinical, + teal.modules.general, + teal.transform, + tern, + tern.mmrm, tern.rbmi, - testthat (>= 3.0.0), + testthat, tibble, tidyr, - vdiffr (>= 1.0.0), + vdiffr, + webshot2, withr +Config/testthat/edition: 3 Encoding: UTF-8 Language: en-US RoxygenNote: 7.2.3 -Config/testthat/edition: 3 diff --git a/package/NEWS.md b/package/NEWS.md index 1ba3c7ec36..1f3091ba38 100644 --- a/package/NEWS.md +++ b/package/NEWS.md @@ -1,4 +1,4 @@ -# tlg-catalog 0.1.0.9009 +# `tlg-catalog` 0.1.0.9027 - Reorganize files into `/book` and `/package` for testability purposes. - The TLG Catalog is here! diff --git a/package/README.md b/package/README.md new file mode 100644 index 0000000000..7d67ffa967 --- /dev/null +++ b/package/README.md @@ -0,0 +1,74 @@ +# tlg.catalog.pkg + +This is a dummy package used for testing purposes. For the actual content please navigate to the [book directory](../book). + +The majority of the logic resides in the `tests/` subdirectory, while the package itself remains minimal. +The main purpose of it is to reuse state of the art GitHub Actions and other CI/CD tools for package development on the book content. +This also includes `testthat2` snapshot testing for regression tests. + +## Regression tests + +### Overview + +During tests, as a part of [test setup](./tests/testthat/setup.R), the whole book will be re-rendered. +This is possible because the content of the book is symlinked to the tests directory (symbolic link of `../book` as a `tests/testthat/_book`). +There are dedicated `knitr` hooks and templates available that will save relevant output objects as `.Rds` files when used (see below). +When tests are run, these files are loaded and compared with the expected ones using `testthat2` snapshot testing. + +A _standard_ render will be unaffected. These hooks will be used only during testing. + +### How to use `knitr` hooks and templates? + +As an article author, you need to (i) register the hooks, (ii) use them where appropriate and (iii) save the results. + +(i) Register the hooks + +* At the beggining of the article, add the following: `{{< include ../../_utils/envir_hook.qmd >}}`. +It will register the `knitr` hooks for further use and will not produce any visible changes to the content. + +(ii) Use the hooks + +* For code chunks with output: + * Inside chunk, make sure you assign the output to a variable and print the variable at the end of the chunk to make the output visible in the article. + + Example: `table <- foo(...); table` instead of `foo(...)`. + + * In the chunk header, use the `test` chunk template listing the aforementioned variable with a unique name, using following syntax: `test = list( = "")`. + + Example: `{r, test = list(result_v1 = "table")}` to use `table` and name it `result_v1`. + +* For code chunks without output - do nothing. + +(iii) Save the results + +* At the end of the article (after all chunks with outputs), add `{{< include ../../_utils/save_results.qmd >}}` to save all objects as `.Rds` files. + +This logic has been implemented in many articles already. Please refer to the existing ones for examples. + +If there are no outputs to be tested, you can skip the whole process. +The whole article (all code chunks) will be rendered but no output will be saved and included in tests. +In such a case, for performance reasons, it is recommended to use a dedicated `skip_if_testing` chunk template, _e.g._ `{r, skip_if_testing = TRUE}`. +This will exclude a given code chunk from being executed during testing. + +### How does it work? + +This functionality relies on [`include` Quarto shortcode](https://quarto.org/docs/authoring/includes.html), [`knitr` chunk hooks](https://yihui.org/knitr/hooks/), [`knitr` option templates](https://yihui.org/knitr/options/#option-templates) and [`testthat2` snapshot testing](https://testthat.r-lib.org/articles/snapshotting.html). + +Including `envir_hook.qmd` beforehand will register a few `knitr` hooks for the use throughout the article. +This will not produce any visible changes to the content. +However, when evaluating code chunks where a `test` template is used, the object specified will be copied to a newly created, internal environment, `tenv`. +When `save_results.qmd` is included, the `tenv` object is saved in an `.Rds` file. + +During testing, a `for` loop is run over all articles. +If the `.Rds` file for an article is missing, the test is skipped. +If it is present, it is loaded and its print output is compared with the expected one. + +### How to update individual snapshots? + +Rendering the whole book might be time consuming. +To update a single snapshot, you can temporarily change `test/testthat/setup.R` file to render only the article you need. +A vector of articles is also possible. +After the change, run `devtools::test()` to run tests and invoke dedicated hooks - they work only during testing. +After the test, review snapshot deviations (if any) and remember to revert the changes in `setup.R`. + +Sometimes rendering the whole book cannot be avoided. In those cases, run `devtools::test()` without any additional changes. diff --git a/package/inst/WORDLIST b/package/inst/WORDLIST new file mode 100644 index 0000000000..acf13a4456 --- /dev/null +++ b/package/inst/WORDLIST @@ -0,0 +1,3 @@ +TLG +testability +tlg diff --git a/package/staged_dependencies.yaml b/package/staged_dependencies.yaml index c53a486c91..94afeff34c 100644 --- a/package/staged_dependencies.yaml +++ b/package/staged_dependencies.yaml @@ -4,11 +4,8 @@ current_repo: host: https://github.com subdir: package upstream_repos: - insightsengineering/scda: - repo: insightsengineering/scda - host: https://github.com - insightsengineering/scda.2022: - repo: insightsengineering/scda.2022 + insightsengineering/random.cdisc.data: + repo: insightsengineering/random.cdisc.data host: https://github.com insightsengineering/teal.modules.clinical: repo: insightsengineering/teal.modules.clinical diff --git a/package/tests/testthat/_create_test_files.R b/package/tests/testthat/_create_test_files.R new file mode 100644 index 0000000000..6aaa9e0cd3 --- /dev/null +++ b/package/tests/testthat/_create_test_files.R @@ -0,0 +1,43 @@ +# Script to create test files for all articles in the test book. +# It would not remove existing test files so in case article location or name is changed, the old test file should be removed manually. +# run with `source()`, e.g.: +# source("./tests/testthat/_create_test_files.R") + +article_files <- list.files( + test_book_path, + recursive = TRUE, + include.dirs = TRUE, + full.names = FALSE, + pattern = "*.qmd" +) |> + grep("tables/|listings/|graphs/", x = _, value = TRUE) + +excluded_articles <- c( + # Stan is not reproducible on different platforms + # https://mc-stan.org/docs/2_27/reference-manual/reproducibility-chapter.html + "tables/efficacy/rbmit01.qmd" +) + +article_files <- setdiff(article_files, excluded_articles) + +test_files <- article_files |> + vapply( + X = _, + \(x) { + x_splitted <- strsplit(x, "/")[[1]] + x_splitted[[1]] <- paste0("test-", x_splitted[[1]]) + x_splitted[[3]] <- gsub(".qmd", ".R", x_splitted[[3]]) + paste(x_splitted, collapse = "-") + }, + FUN.VALUE = character(1), + USE.NAMES = FALSE + ) + +for (idx in seq_along(test_files)) { + article_file <- article_files[[idx]] + test_file <- test_files[[idx]] + writeLines( + text = sprintf("test_article(\"%s\")", article_file), + con = file.path(testthat::test_path(), test_file) + ) +} diff --git a/package/tests/testthat/_snaps/development/graphs-other-cig01.md b/package/tests/testthat/_snaps/development/graphs-other-cig01.md new file mode 100644 index 0000000000..a5fec49f00 --- /dev/null +++ b/package/tests/testthat/_snaps/development/graphs-other-cig01.md @@ -0,0 +1,10 @@ +# graphs/other/cig01.qmd table_v6 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Mean (SD) 17.7 (9.9) 18.7 (9.8) 19.5 (9.1) + Median 17.5 18.2 19.0 + diff --git a/package/tests/testthat/_snaps/development/listings-ADA-adal02.md b/package/tests/testthat/_snaps/development/listings-ADA-adal02.md new file mode 100644 index 0000000000..443c13d4c9 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-ADA-adal02.md @@ -0,0 +1,20 @@ +# listings/ADA/adal02.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 134 x 3 + USUBJID `Day 2\n(Day 1)` PTES + + 1 AB12345-BRA-1-id-105 --- Enhanced + 2 AB12345-BRA-1-id-134 --- Enhanced + 3 AB12345-BRA-1-id-42 --- Enhanced + 4 AB12345-BRA-1-id-93 --- Enhanced + 5 AB12345-BRA-11-id-217 --- Enhanced + 6 AB12345-BRA-11-id-345 --- Enhanced + 7 AB12345-BRA-11-id-397 --- Enhanced + 8 AB12345-BRA-11-id-50 --- Enhanced + 9 AB12345-BRA-13-id-177 --- Enhanced + 10 AB12345-BRA-14-id-23 --- Enhanced + # i 124 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-ECG-egl01.md b/package/tests/testthat/_snaps/development/listings-ECG-egl01.md new file mode 100644 index 0000000000..15a62e6a97 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-ECG-egl01.md @@ -0,0 +1,32 @@ +# listings/ECG/egl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 2,400 x 11 + TRT01A CRTNPT AGSXRC AVISIT ADY + + 1 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN BASELINE 149 + 2 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 1 DAY 8 314 + 3 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 2 DAY 15 398 + 4 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 3 DAY 22 470 + 5 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 4 DAY 29 528 + 6 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 5 DAY 36 535 + 7 A: Drug X BRA-1/134 47/M/WHITE BASELINE 227 + 8 A: Drug X BRA-1/134 47/M/WHITE WEEK 1 DAY 8 255 + 9 A: Drug X BRA-1/134 47/M/WHITE WEEK 2 DAY 15 269 + 10 A: Drug X BRA-1/134 47/M/WHITE WEEK 3 DAY 22 357 + AVAL_ANRIND_HR CHG_HR AVAL_ANRIND_QT CHG_QT AVAL_ANRIND_RR CHG_RR + + 1 " 66.94" " NA" " 441.78" " NA" " 896.59" " NA" + 2 " 63.18" " -3.76" " 365.68" " -76.10" "1376.26" " 479.67" + 3 " 57.57" " -9.37" " 355.48" " -86.29" " 799.57" " -97.02" + 4 " 73.36" " 6.42" " 352.45" " -89.33" "1015.00" " 118.41" + 5 " 53.72" " -13.22" " 388.42" " -53.36" "1189.29" " 292.70" + 6 " 58.25" " -8.69" " 291.77" " -150.01" " 936.09" " 39.50" + 7 " 46.99" " NA" " 385.29" " NA" " 835.17" " NA" + 8 " 48.38" " 1.39" " 453.74" " 68.46" " 901.86" " 66.68" + 9 " 35.40/L" " -11.59" " 413.54" " 28.26" " 892.01" " 56.84" + 10 " 60.50" " 13.51" " 394.23" " 8.95" " 490.18/L" " -344.99" + # i 2,390 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-adverse-events-ael01.md b/package/tests/testthat/_snaps/development/listings-adverse-events-ael01.md new file mode 100644 index 0000000000..a8ec6546bd --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-adverse-events-ael01.md @@ -0,0 +1,19 @@ +# listings/adverse-events/ael01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 10 x 4 + AESOC AEDECOD AELLT AETERM + + 1 cl A dcd A.1.1.1.1 llt A.1.1.1.1 trm A.1.1.1.1 + 2 cl A dcd A.1.1.1.2 llt A.1.1.1.2 trm A.1.1.1.2 + 3 cl B dcd B.1.1.1.1 llt B.1.1.1.1 trm B.1.1.1.1 + 4 cl B dcd B.2.1.2.1 llt B.2.1.2.1 trm B.2.1.2.1 + 5 cl B dcd B.2.2.3.1 llt B.2.2.3.1 trm B.2.2.3.1 + 6 cl C dcd C.1.1.1.3 llt C.1.1.1.3 trm C.1.1.1.3 + 7 cl C dcd C.2.1.2.1 llt C.2.1.2.1 trm C.2.1.2.1 + 8 cl D dcd D.1.1.1.1 llt D.1.1.1.1 trm D.1.1.1.1 + 9 cl D dcd D.1.1.4.2 llt D.1.1.4.2 trm D.1.1.4.2 + 10 cl D dcd D.2.1.5.3 llt D.2.1.5.3 trm D.2.1.5.3 + diff --git a/package/tests/testthat/_snaps/development/listings-adverse-events-ael01_nollt.md b/package/tests/testthat/_snaps/development/listings-adverse-events-ael01_nollt.md new file mode 100644 index 0000000000..ca6f38254c --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-adverse-events-ael01_nollt.md @@ -0,0 +1,19 @@ +# listings/adverse-events/ael01_nollt.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 10 x 3 + AESOC AEDECOD AETERM + + 1 cl A dcd A.1.1.1.1 trm A.1.1.1.1 + 2 cl A dcd A.1.1.1.2 trm A.1.1.1.2 + 3 cl B dcd B.1.1.1.1 trm B.1.1.1.1 + 4 cl B dcd B.2.1.2.1 trm B.2.1.2.1 + 5 cl B dcd B.2.2.3.1 trm B.2.2.3.1 + 6 cl C dcd C.1.1.1.3 trm C.1.1.1.3 + 7 cl C dcd C.2.1.2.1 trm C.2.1.2.1 + 8 cl D dcd D.1.1.1.1 trm D.1.1.1.1 + 9 cl D dcd D.1.1.4.2 trm D.1.1.4.2 + 10 cl D dcd D.2.1.5.3 trm D.2.1.5.3 + diff --git a/package/tests/testthat/_snaps/development/listings-adverse-events-ael02.md b/package/tests/testthat/_snaps/development/listings-adverse-events-ael02.md new file mode 100644 index 0000000000..d97d56d1ed --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-adverse-events-ael02.md @@ -0,0 +1,32 @@ +# listings/adverse-events/ael02.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 1,934 x 13 + TRT01A CPID ASR AEDECOD + + 1 A: Drug X BRA-1/id-134 47/M/WHITE dcd B.2.1.2.1 + 2 A: Drug X BRA-1/id-134 47/M/WHITE dcd D.1.1.4.2 + 3 A: Drug X BRA-1/id-134 47/M/WHITE dcd A.1.1.1.2 + 4 A: Drug X BRA-1/id-134 47/M/WHITE dcd A.1.1.1.2 + 5 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd C.2.1.2.1 + 6 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd D.1.1.1.1 + 7 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd C.2.1.2.1 + 8 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 + 9 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd B.2.2.3.1 + 10 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 + Date_First ASTDY Duration Serious AESEV Related Outcome Treated Action + + 1 04NOV2020 162 173 No MODERATE No 5 Yes 2 + 2 04NOV2020 196 166 No MODERATE No 5 No 2 + 3 04NOV2020 321 149 Yes MODERATE No 5 Yes 2 + 4 04NOV2020 393 43 Yes MODERATE No 5 No 5 + 5 01JAN2020 39 506 No MODERATE Yes 2 No 6 + 6 01JAN2020 64 630 Yes SEVERE Yes 1 No 6 + 7 01JAN2020 95 306 No MODERATE Yes 5 No 2 + 8 01JAN2020 160 259 Yes MODERATE No 2 Yes 2 + 9 01JAN2020 292 50 Yes MILD No 3 No 2 + 10 01JAN2020 459 195 Yes MODERATE No 5 Yes 2 + # i 1,924 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-adverse-events-ael02_ed.md b/package/tests/testthat/_snaps/development/listings-adverse-events-ael02_ed.md new file mode 100644 index 0000000000..5fdde611e1 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-adverse-events-ael02_ed.md @@ -0,0 +1,32 @@ +# listings/adverse-events/ael02_ed.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 1,934 x 15 + TRT01A cent_subj ASR AEDECOD ASTDY + + 1 A: Drug X BRA-1/id-134 47/M/WHITE dcd B.2.1.2.1 162 + 2 A: Drug X BRA-1/id-134 47/M/WHITE dcd D.1.1.4.2 196 + 3 A: Drug X BRA-1/id-134 47/M/WHITE dcd A.1.1.1.2 321 + 4 A: Drug X BRA-1/id-134 47/M/WHITE dcd A.1.1.1.2 393 + 5 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd C.2.1.2.1 39 + 6 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd D.1.1.1.1 64 + 7 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd C.2.1.2.1 95 + 8 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 160 + 9 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd B.2.2.3.1 292 + 10 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 459 + TMOD TMOH TMOM ADURN AESER_F AESEV AEREL_F AEOUT_F AECONTRT_F AEACN_F + + 1 7 19 4 173 No MODERATE No 5 Yes 2 + 2 1 20 48 166 No MODERATE No 5 No 2 + 3 28 12 54 149 Yes MODERATE No 5 Yes 2 + 4 12 19 17 43 Yes MODERATE No 5 No 5 + 5 30 9 4 506 No MODERATE Yes 2 No 6 + 6 26 17 10 630 Yes SEVERE Yes 1 No 6 + 7 4 12 58 306 No MODERATE Yes 5 No 2 + 8 24 5 57 259 Yes MODERATE No 2 Yes 2 + 9 9 23 4 50 Yes MILD No 3 No 2 + 10 9 5 4 195 Yes MODERATE No 5 Yes 2 + # i 1,924 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-adverse-events-ael03.md b/package/tests/testthat/_snaps/development/listings-adverse-events-ael03.md new file mode 100644 index 0000000000..a08ecc094d --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-adverse-events-ael03.md @@ -0,0 +1,32 @@ +# listings/adverse-events/ael03.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 786 x 13 + TRT01A CPID ASR AEDECOD + + 1 A: Drug X BRA-1/id-134 47/M/WHITE dcd A.1.1.1.2 + 2 A: Drug X BRA-1/id-134 47/M/WHITE dcd A.1.1.1.2 + 3 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd D.1.1.1.1 + 4 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 + 5 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd B.2.2.3.1 + 6 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 + 7 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd B.1.1.1.1 + 8 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd A.1.1.1.2 + 9 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN dcd B.1.1.1.1 + 10 A: Drug X BRA-1/id-93 34/F/ASIAN dcd D.1.1.1.1 + Date_First ASTDY Duration AESEV Related Outcome Treated Action SERREAS + + 1 04NOV2020 321 149 MODERATE No 5 Yes 2 4 + 2 04NOV2020 393 43 MODERATE No 5 No 5 5 + 3 01JAN2020 64 630 SEVERE Yes 1 No 6 1 + 4 01JAN2020 160 259 MODERATE No 2 Yes 2 4 + 5 01JAN2020 292 50 MILD No 3 No 2 4 + 6 01JAN2020 459 195 MODERATE No 5 Yes 2 5 + 7 01JAN2020 470 131 SEVERE Yes 1 No 6 1 + 8 01JAN2020 475 113 MODERATE No 4 Yes 2 4 + 9 01JAN2020 641 15 SEVERE Yes 1 Yes 6 1 + 10 20JUN2020 316 250 SEVERE Yes 1 No 6 1 + # i 776 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-adverse-events-ael04.md b/package/tests/testthat/_snaps/development/listings-adverse-events-ael04.md new file mode 100644 index 0000000000..5374e89d14 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-adverse-events-ael04.md @@ -0,0 +1,32 @@ +# listings/adverse-events/ael04.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 70 x 8 + TRT01A ID AGSXRC TRTSD EOSDY + + 1 A: Drug X BRA-1/id-134 47/M/WHITE 04NOV2020 473 + 2 A: Drug X BRA-1/id-93 34/F/ASIAN 20JUN2020 610 + 3 A: Drug X BRA-11/id-217 43/M/ASIAN 28SEP2019 871 + 4 A: Drug X BRA-15/id-36 38/F/ASIAN 08JAN2020 767 + 5 A: Drug X CAN-11/id-139 31/M/ASIAN 15SEP2020 519 + 6 A: Drug X CHN-1/id-123 27/F/ASIAN 28JAN2020 750 + 7 A: Drug X CHN-1/id-199 27/M/BLACK OR AFRICAN AMERICAN 08JAN2020 773 + 8 A: Drug X CHN-1/id-235 39/M/ASIAN 13JUL2019 950 + 9 A: Drug X CHN-1/id-62 36/F/WHITE 22NOV2020 455 + 10 A: Drug X CHN-12/id-258 45/M/WHITE 01MAR2020 721 + DTHADY DTHCAUS ADTHAUT + + 1 496 ADVERSE EVENT Yes + 2 657 ADVERSE EVENT Yes + 3 893 ADVERSE EVENT Yes + 4 812 DISEASE PROGRESSION Yes + 5 563 ADVERSE EVENT Yes + 6 750 DISEASE PROGRESSION Yes + 7 779 DISEASE PROGRESSION Yes + 8 968 ADVERSE EVENT Yes + 9 497 ADVERSE EVENT Yes + 10 756 SUICIDE No + # i 60 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml01.md b/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml01.md new file mode 100644 index 0000000000..1f4a508414 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml01.md @@ -0,0 +1,44 @@ +# listings/concomitant-medications/cml01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 3,685 x 14 + TRT01A ID AGSXRC CMDECOD + + 1 A: Drug X BRA-1/id-134 47/M/WHITE medname A_2/3 + 2 A: Drug X BRA-1/id-134 47/M/WHITE medname A_2/3 + 3 A: Drug X BRA-1/id-134 47/M/WHITE medname B_1/4 + 4 A: Drug X BRA-1/id-134 47/M/WHITE medname B_1/4 + 5 A: Drug X BRA-1/id-134 47/M/WHITE medname B_1/4 + 6 A: Drug X BRA-1/id-134 47/M/WHITE medname C_1/2 + 7 A: Drug X BRA-1/id-134 47/M/WHITE medname C_1/2 + 8 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN medname A_2/3 + 9 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN medname A_2/3 + 10 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN medname A_2/3 + TRTSD CMASTD ASTDY ADURN CMSTRFL CMENRFL CMDOSE CMDOSU CMDOSFRQ + + 1 04NOV2020 21SEP2021 321 -148 No No 30 mg/breath Q4H + 2 04NOV2020 02DEC2021 393 -42 No No 41 umol/L TWICE + 3 04NOV2020 15APR2021 162 -172 No No 25 ug/kg/day Q4H + 4 04NOV2020 15APR2021 162 -172 No No 25 ug/kg/day Q4H + 5 04NOV2020 15APR2021 162 -172 No No 25 ug/kg/day Q4H + 6 04NOV2020 19MAY2021 196 -165 No No 22 ug/mL TID + 7 04NOV2020 19MAY2021 196 -165 No No 22 ug/mL TID + 8 01JAN2020 09JUN2020 160 -258 No Yes 48 DROP QD + 9 01JAN2020 04APR2021 459 -194 No Yes 57 ug/kg/day Q4W + 10 01JAN2020 15APR2021 470 -130 No Yes 83 ug/kg/day Q4H + CMROUTE + + 1 INTRAMUSCULAR + 2 UNKNOWN + 3 INTRAVENOUS + 4 INTRAVENOUS + 5 INTRAVENOUS + 6 INHALED + 7 INHALED + 8 INTRAVENOUS + 9 NASAL + 10 UNKNOWN + # i 3,675 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml02a_gl.md b/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml02a_gl.md new file mode 100644 index 0000000000..4098b5e778 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml02a_gl.md @@ -0,0 +1,26 @@ +# listings/concomitant-medications/cml02a_gl.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 17 x 3 + ATC2 CMDECOD CMTRT + + 1 ATCCLAS2 A medname A_1/3 A_1/3 + 2 ATCCLAS2 A medname A_2/3 A_2/3 + 3 ATCCLAS2 A medname A_3/3 A_3/3 + 4 ATCCLAS2 A p2 medname A_3/3 A_3/3 + 5 ATCCLAS2 B medname B_1/4 B_1/4 + 6 ATCCLAS2 B medname B_2/4 B_2/4 + 7 ATCCLAS2 B medname B_3/4 B_3/4 + 8 ATCCLAS2 B medname B_4/4 B_4/4 + 9 ATCCLAS2 B p2 medname B_1/4 B_1/4 + 10 ATCCLAS2 B p2 medname B_2/4 B_2/4 + 11 ATCCLAS2 B p3 medname B_1/4 B_1/4 + 12 ATCCLAS2 B p3 medname B_2/4 B_2/4 + 13 ATCCLAS2 C medname C_1/2 C_1/2 + 14 ATCCLAS2 C medname C_2/2 C_2/2 + 15 ATCCLAS2 C p2 medname C_1/2 C_1/2 + 16 ATCCLAS2 C p2 medname C_2/2 C_2/2 + 17 ATCCLAS2 C p3 medname C_2/2 C_2/2 + diff --git a/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml02b_gl.md b/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml02b_gl.md new file mode 100644 index 0000000000..ea52fe4918 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-concomitant-medications-cml02b_gl.md @@ -0,0 +1,26 @@ +# listings/concomitant-medications/cml02b_gl.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 17 x 6 + ATC1 ATC2 ATC3 ATC4 CMDECOD CMTRT + + 1 ATCCLAS1 A ATCCLAS2 A ATCCLAS3 A ATCCLAS4 A medname A_2/3 A_2/3 + 2 ATCCLAS1 A ATCCLAS2 A ATCCLAS3 A ATCCLAS4 A medname A_3/3 A_3/3 + 3 ATCCLAS1 A ATCCLAS2 A ATCCLAS3 A ATCCLAS4 A medname A_1/3 A_1/3 + 4 ATCCLAS1 A p2 ATCCLAS2 A p2 ATCCLAS3 A p2 ATCCLAS4 A p2 medname A_3/3 A_3/3 + 5 ATCCLAS1 B ATCCLAS2 B ATCCLAS3 B ATCCLAS4 B medname B_1/4 B_1/4 + 6 ATCCLAS1 B ATCCLAS2 B ATCCLAS3 B ATCCLAS4 B medname B_4/4 B_4/4 + 7 ATCCLAS1 B ATCCLAS2 B ATCCLAS3 B ATCCLAS4 B medname B_2/4 B_2/4 + 8 ATCCLAS1 B ATCCLAS2 B ATCCLAS3 B ATCCLAS4 B medname B_3/4 B_3/4 + 9 ATCCLAS1 B p2 ATCCLAS2 B p2 ATCCLAS3 B p2 ATCCLAS4 B p2 medname B_1/4 B_1/4 + 10 ATCCLAS1 B p2 ATCCLAS2 B p2 ATCCLAS3 B p2 ATCCLAS4 B p2 medname B_2/4 B_2/4 + 11 ATCCLAS1 B p3 ATCCLAS2 B p3 ATCCLAS3 B p3 ATCCLAS4 B p3 medname B_1/4 B_1/4 + 12 ATCCLAS1 B p3 ATCCLAS2 B p3 ATCCLAS3 B p3 ATCCLAS4 B p3 medname B_2/4 B_2/4 + 13 ATCCLAS1 C ATCCLAS2 C ATCCLAS3 C ATCCLAS4 C medname C_1/2 C_1/2 + 14 ATCCLAS1 C ATCCLAS2 C ATCCLAS3 C ATCCLAS4 C medname C_2/2 C_2/2 + 15 ATCCLAS1 C p2 ATCCLAS2 C p2 ATCCLAS3 C p2 ATCCLAS4 C p2 medname C_1/2 C_1/2 + 16 ATCCLAS1 C p2 ATCCLAS2 C p2 ATCCLAS3 C p2 ATCCLAS4 C p2 medname C_2/2 C_2/2 + 17 ATCCLAS1 C p3 ATCCLAS2 C p3 ATCCLAS3 C p3 ATCCLAS4 C p3 medname C_2/2 C_2/2 + diff --git a/package/tests/testthat/_snaps/development/listings-development-safety-update-report-dsur4.md b/package/tests/testthat/_snaps/development/listings-development-safety-update-report-dsur4.md new file mode 100644 index 0000000000..d987443dc6 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-development-safety-update-report-dsur4.md @@ -0,0 +1,20 @@ +# listings/development-safety-update-report/dsur4.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 70 x 3 + ARM ID DTHCAUS + + 1 A: Drug X CHN-3/id-128 ADVERSE EVENT + 2 A: Drug X RUS-1/id-52 DISEASE PROGRESSION + 3 A: Drug X CHN-1/id-235 ADVERSE EVENT + 4 A: Drug X CHN-5/id-108 MISSING + 5 A: Drug X CHN-17/id-182 LOST TO FOLLOW UP + 6 A: Drug X BRA-11/id-217 ADVERSE EVENT + 7 A: Drug X CHN-15/id-14 DISEASE PROGRESSION + 8 A: Drug X CHN-2/id-274 SUICIDE + 9 A: Drug X USA-11/id-339 UNKNOWN + 10 A: Drug X BRA-15/id-36 DISEASE PROGRESSION + # i 60 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-disposition-dsl01.md b/package/tests/testthat/_snaps/development/listings-disposition-dsl01.md new file mode 100644 index 0000000000..014409fddd --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-disposition-dsl01.md @@ -0,0 +1,32 @@ +# listings/disposition/dsl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 23 x 6 + TRT01A ID ASR SSADM + + 1 A: Drug X RUS-18/id-359 47/F/BLACK OR AFRICAN AMERICAN 08JUN2019 + 2 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN 01JAN2020 + 3 A: Drug X CHN-11/id-256 23/M/ASIAN 17MAR2020 + 4 A: Drug X CHN-1/id-26 29/M/WHITE 16JUL2020 + 5 A: Drug X CHN-1/id-62 36/F/WHITE 22NOV2020 + 6 B: Placebo CHN-7/id-28 40/M/AMERICAN INDIAN OR ALASKA NATIVE 11MAR2019 + 7 B: Placebo CHN-13/id-102 37/M/ASIAN 23MAR2019 + 8 B: Placebo CHN-3/id-333 30/F/BLACK OR AFRICAN AMERICAN 13JAN2020 + 9 B: Placebo USA-12/id-226 30/M/WHITE 29JAN2020 + 10 B: Placebo CHN-9/id-147 26/F/ASIAN 06FEB2020 + STDWD DISCONT + + 1 1096 No + 2 NA No + 3 1096 No + 4 1096 No + 5 455 Yes + 6 1096 No + 7 1096 No + 8 NA No + 9 NA No + 10 NA No + # i 13 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-disposition-dsl02.md b/package/tests/testthat/_snaps/development/listings-disposition-dsl02.md new file mode 100644 index 0000000000..a0eec028b8 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-disposition-dsl02.md @@ -0,0 +1,21 @@ +# listings/disposition/dsl02.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 5 x 8 + TRT01A ID ASR + + 1 A: Drug X CHN-1/id-62 36/F/WHITE + 2 B: Placebo CHN-9/id-11 28/F/NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER + 3 C: Combination USA-11/id-136 38/F/ASIAN + 4 C: Combination USA-11/id-100 40/F/ASIAN + 5 C: Combination CHN-11/id-91 44/M/BLACK OR AFRICAN AMERICAN + SSADTM EOSDY SSAEDY RANDEDY DCSREAS + + 1 2020-11-22 00:00:00 455 454 455 DEATH + 2 2021-01-27 00:00:00 388 387 388 DEATH + 3 2019-10-02 00:00:00 865 864 868 DEATH + 4 2020-03-10 00:00:00 705 705 707 LACK OF EFFICACY + 5 2020-05-29 00:00:00 625 625 626 DEATH + diff --git a/package/tests/testthat/_snaps/development/listings-efficacy-oncl01.md b/package/tests/testthat/_snaps/development/listings-efficacy-oncl01.md new file mode 100644 index 0000000000..d36d551388 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-efficacy-oncl01.md @@ -0,0 +1,68 @@ +# listings/efficacy/oncl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 1,200 x 9 + TRT01A ID AVAL + + 1 A: Drug X BRA-1/id-105 7 + 2 A: Drug X BRA-1/id-105 7 + 3 A: Drug X BRA-1/id-105 7 + 4 A: Drug X BRA-1/id-134 7 + 5 A: Drug X BRA-1/id-134 7 + 6 A: Drug X BRA-1/id-134 7 + 7 A: Drug X BRA-1/id-42 7 + 8 A: Drug X BRA-1/id-42 7 + 9 A: Drug X BRA-1/id-42 7 + 10 A: Drug X BRA-1/id-93 7 + `Best Confirmed Overall Response by Investigator` + + 1 CR + 2 CR + 3 CR + 4 CR + 5 CR + 6 CR + 7 PR + 8 PR + 9 PR + 10 CR + `Investigator End Of Induction Response` `Overall Survival (DAYS)` + + 1 CR "402.6" + 2 CR "402.6" + 3 CR "402.6" + 4 CR " 90.1" + 5 CR " 90.1" + 6 CR " 90.1" + 7 PR "407.0" + 8 PR "407.0" + 9 PR "407.0" + 10 PD "316.0" + `Progression Free Survival (DAYS)` trigeventpfs + + 1 "235.7" Disease Progression + 2 "235.7" + 3 "235.7" + 4 " 90.1" Death + 5 " 90.1" Death + 6 " 90.1" Death + 7 "204.6" Disease Progression + 8 "204.6" + 9 "204.6" + 10 "255.7" + `Duration of Confirmed Response (DAYS)` + + 1 "119.6" + 2 "119.6" + 3 "119.6" + 4 " 90.1" + 5 " 90.1" + 6 " 90.1" + 7 "193.9" + 8 "193.9" + 9 "193.9" + 10 "140.3" + # i 1,190 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-exposure-exl01.md b/package/tests/testthat/_snaps/development/listings-exposure-exl01.md new file mode 100644 index 0000000000..983a2e6339 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-exposure-exl01.md @@ -0,0 +1,32 @@ +# listings/exposure/exl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 2,800 x 9 + TRT01A CRTNPT AVISIT EXSTDY EXENDY AVAL AVALU EXDOSFRQ + + 1 A: Drug X BRA-1/id-105 SCREENING -1 -1 960 mg ONCE + 2 A: Drug X BRA-1/id-105 BASELINE 1 1 960 mg ONCE + 3 A: Drug X BRA-1/id-105 WEEK 1 DAY 8 8 8 720 mg ONCE + 4 A: Drug X BRA-1/id-105 WEEK 2 DAY 15 15 15 480 mg ONCE + 5 A: Drug X BRA-1/id-105 WEEK 3 DAY 22 22 22 480 mg ONCE + 6 A: Drug X BRA-1/id-105 WEEK 4 DAY 29 29 29 720 mg ONCE + 7 A: Drug X BRA-1/id-105 WEEK 5 DAY 36 36 36 720 mg ONCE + 8 A: Drug X BRA-1/id-134 SCREENING -1 -1 960 mg ONCE + 9 A: Drug X BRA-1/id-134 BASELINE 1 1 720 mg ONCE + 10 A: Drug X BRA-1/id-134 WEEK 1 DAY 8 8 8 720 mg ONCE + EXROUTE + + 1 INTRAVENOUS + 2 INTRAVENOUS + 3 SUBCUTANEOUS + 4 INTRAVENOUS + 5 INTRAVENOUS + 6 INTRAVENOUS + 7 INTRAVENOUS + 8 INTRAVENOUS + 9 INTRAVENOUS + 10 INTRAVENOUS + # i 2,790 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-lab-results-lbl01.md b/package/tests/testthat/_snaps/development/listings-lab-results-lbl01.md new file mode 100644 index 0000000000..d0a736f072 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-lab-results-lbl01.md @@ -0,0 +1,32 @@ +# listings/lab-results/lbl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 2,800 x 7 + TRT01A CPID ADY DLD `ALT\n(U/L / NCI CTCAE grade)` + + 1 A: Drug X BRA-1/id-105 80 NA " 4.30 / L4" + 2 A: Drug X BRA-1/id-105 149 69 "24.70" + 3 A: Drug X BRA-1/id-105 314 165 "24.87" + 4 A: Drug X BRA-1/id-105 398 84 " 3.67 / L3" + 5 A: Drug X BRA-1/id-105 470 72 "18.55" + 6 A: Drug X BRA-1/id-105 528 58 " 7.73" + 7 A: Drug X BRA-1/id-105 535 7 "23.51" + 8 A: Drug X BRA-1/id-134 225 NA " 7.37" + 9 A: Drug X BRA-1/id-134 227 2 "16.42" + 10 A: Drug X BRA-1/id-134 255 28 "11.16" + `CRP\n(mg/L / NCI CTCAE grade)` `IGA\n(g/L / NCI CTCAE grade)` + + 1 " 9.09" " 2.84" + 2 " 9.15" " 2.93" + 3 "10.89 / H2" " 2.66" + 4 " 8.14" " 2.86" + 5 "10.59 / H3" " 2.88" + 6 "10.09 / H3" " 2.93" + 7 " 9.20" " 2.88" + 8 "10.46 / H1" " 2.86" + 9 " 7.43 / L1" " 2.76" + 10 " 9.41" " 2.75" + # i 2,790 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-lab-results-lbl01_rls.md b/package/tests/testthat/_snaps/development/listings-lab-results-lbl01_rls.md new file mode 100644 index 0000000000..3373e85058 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-lab-results-lbl01_rls.md @@ -0,0 +1,20 @@ +# listings/lab-results/lbl01_rls.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 2,800 x 7 + TRT01A CPID ADY DLD `ALT\n(U/L)` `CRP\n(mg/L)` `IGA\n(g/L)` + + 1 A: Drug X BRA-1/id-105 80 NA " 4.30 / L" " 9.09" " 2.84" + 2 A: Drug X BRA-1/id-105 149 69 "24.70" " 9.15" " 2.93" + 3 A: Drug X BRA-1/id-105 314 165 "24.87" "10.89 / H" " 2.66" + 4 A: Drug X BRA-1/id-105 398 84 " 3.67 / L" " 8.14" " 2.86" + 5 A: Drug X BRA-1/id-105 470 72 "18.55" "10.59 / H" " 2.88" + 6 A: Drug X BRA-1/id-105 528 58 " 7.73" "10.09 / H" " 2.93" + 7 A: Drug X BRA-1/id-105 535 7 "23.51" " 9.20" " 2.88" + 8 A: Drug X BRA-1/id-134 225 NA " 7.37" "10.46 / H" " 2.86" + 9 A: Drug X BRA-1/id-134 227 2 "16.42" " 7.43 / L" " 2.76" + 10 A: Drug X BRA-1/id-134 255 28 "11.16" " 9.41" " 2.75" + # i 2,790 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-lab-results-lbl02a.md b/package/tests/testthat/_snaps/development/listings-lab-results-lbl02a.md new file mode 100644 index 0000000000..a361c6dc13 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-lab-results-lbl02a.md @@ -0,0 +1,32 @@ +# listings/lab-results/lbl02a.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 1,645 x 9 + TRT01A LBTEST_U CPID ADY + + 1 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 80 + 2 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 398 + 3 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-93 207 + 4 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-11/id-397 326 + 5 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-14/id-23 594 + 6 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-2/id-296 281 + 7 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-2/id-296 734 + 8 A: Drug X Alanine Aminotransferase Measurement (U/L) CAN-1/id-18 465 + 9 A: Drug X Alanine Aminotransferase Measurement (U/L) CHN-1/id-133 127 + 10 A: Drug X Alanine Aminotransferase Measurement (U/L) CHN-1/id-133 197 + ADTM DLD AVAL LBNRNG ANRIND_GR + + 1 27MAY2020 0 " 4.3" 7.0 - 55.0 L4 + 2 10APR2021 318 " 3.7" 7.0 - 55.0 L3 + 3 13JAN2021 0 " 6.1" 7.0 - 55.0 L1 + 4 19MAY2021 0 " 1.5" 7.0 - 55.0 L1 + 5 22JUN2021 0 " 0.6" 7.0 - 55.0 L1 + 6 30OCT2021 0 " 2.6" 7.0 - 55.0 L1 + 7 26JAN2023 453 " 3.9" 7.0 - 55.0 L1 + 8 12APR2022 0 " 1.8" 7.0 - 55.0 L2 + 9 13DEC2020 0 " 5.6" 7.0 - 55.0 L2 + 10 21FEB2021 70 " 1.2" 7.0 - 55.0 L4 + # i 1,635 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-lab-results-lbl02a_rls.md b/package/tests/testthat/_snaps/development/listings-lab-results-lbl02a_rls.md new file mode 100644 index 0000000000..b271f1b6a8 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-lab-results-lbl02a_rls.md @@ -0,0 +1,32 @@ +# listings/lab-results/lbl02a_rls.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 8,400 x 11 + TRT01A LBTEST_U CPID ADY + + 1 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 80 + 2 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 149 + 3 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 314 + 4 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 398 + 5 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 470 + 6 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 528 + 7 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-105 535 + 8 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-134 225 + 9 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-134 227 + 10 A: Drug X Alanine Aminotransferase Measurement (U/L) BRA-1/id-134 255 + DLD AVAL PCHG STD_RNG LBNRNG CRC ANRIND + + 1 0 " 4.3" " NA" 5.5 - 31.1 7 - 55 40% / 40% "LL" + 2 69 "24.7" " 0.0" 5.5 - 31.1 7 - 55 40% / 40% "" + 3 165 "24.9" " 0.7" 5.5 - 31.1 7 - 55 40% / 40% "" + 4 84 " 3.7" " -85.2" 5.5 - 31.1 7 - 55 40% / 40% "LL" + 5 72 "18.5" " -24.9" 5.5 - 31.1 7 - 55 40% / 40% "" + 6 58 " 7.7" " -68.7" 5.5 - 31.1 7 - 55 40% / 40% "" + 7 7 "23.5" " -4.8" 5.5 - 31.1 7 - 55 40% / 40% "" + 8 0 " 7.4" " NA" 5.5 - 31.1 7 - 55 40% / 40% "" + 9 2 "16.4" " 0.0" 5.5 - 31.1 7 - 55 40% / 40% "" + 10 28 "11.2" " -32.0" 5.5 - 31.1 7 - 55 40% / 40% "" + # i 8,390 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-lab-results-lbl02b.md b/package/tests/testthat/_snaps/development/listings-lab-results-lbl02b.md new file mode 100644 index 0000000000..80f9442d34 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-lab-results-lbl02b.md @@ -0,0 +1,32 @@ +# listings/lab-results/lbl02b.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 1,112 x 10 + TRT01A LBTEST CPID ADY ADTM + + 1 A: Drug X Alanine Aminotransferase Measurement BRA-1/id-105 80 27MAY2020 + 2 A: Drug X Alanine Aminotransferase Measurement BRA-1/id-105 398 10APR2021 + 3 A: Drug X Alanine Aminotransferase Measurement CAN-1/id-18 465 12APR2022 + 4 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-133 127 13DEC2020 + 5 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-133 197 21FEB2021 + 6 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-199 277 11OCT2020 + 7 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-199 672 10NOV2021 + 8 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-235 348 25JUN2020 + 9 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-275 364 01JUN2021 + 10 A: Drug X Alanine Aminotransferase Measurement CHN-1/id-277 483 12MAY2022 + DLD AVAL AVALU LBNRNG ANRIND_GR + + 1 0 " 4.3" U/L 7.0 - 55.0 L4 + 2 318 " 3.7" U/L 7.0 - 55.0 L3 + 3 0 " 1.8" U/L 7.0 - 55.0 L2 + 4 0 " 5.6" U/L 7.0 - 55.0 L2 + 5 70 " 1.2" U/L 7.0 - 55.0 L4 + 6 0 " 5.3" U/L 7.0 - 55.0 L4 + 7 395 " 6.8" U/L 7.0 - 55.0 L2 + 8 0 " 3.0" U/L 7.0 - 55.0 L3 + 9 0 " 5.1" U/L 7.0 - 55.0 L2 + 10 0 " 1.1" U/L 7.0 - 55.0 L4 + # i 1,102 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-medical-history-mhl01.md b/package/tests/testthat/_snaps/development/listings-medical-history-mhl01.md new file mode 100644 index 0000000000..ea9fa8f4a5 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-medical-history-mhl01.md @@ -0,0 +1,32 @@ +# listings/medical-history/mhl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 1,934 x 11 + TRT01A ID ASR MHBODSYS MHDECOD + + 1 A: Drug X BRA-1/id-134 47/M/WHITE cl A trm A_2/2 + 2 A: Drug X BRA-1/id-134 47/M/WHITE cl A trm A_2/2 + 3 A: Drug X BRA-1/id-134 47/M/WHITE cl B trm B_2/3 + 4 A: Drug X BRA-1/id-134 47/M/WHITE cl D trm D_2/3 + 5 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN cl A trm A_2/2 + 6 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN cl A trm A_2/2 + 7 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN cl A trm A_2/2 + 8 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN cl B trm B_1/3 + 9 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN cl B trm B_1/3 + 10 A: Drug X BRA-1/id-42 36/M/BLACK OR AFRICAN AMERICAN cl B trm B_3/3 + TRTSDTM ASTDTM ASTDY AENDTM AENDY ATIREL + + 1 04NOV2020 21SEP2021 321 16FEB2022 469 PRIOR_CONCOMITANT + 2 04NOV2020 02DEC2021 393 13JAN2022 435 PRIOR_CONCOMITANT + 3 04NOV2020 15APR2021 162 04OCT2021 334 PRIOR_CONCOMITANT + 4 04NOV2020 19MAY2021 196 31OCT2021 361 PRIOR_CONCOMITANT + 5 01JAN2020 09JUN2020 160 22FEB2021 418 PRIOR_CONCOMITANT + 6 01JAN2020 04APR2021 459 15OCT2021 653 PRIOR_CONCOMITANT + 7 01JAN2020 20APR2021 475 10AUG2021 587 PRIOR_CONCOMITANT + 8 01JAN2020 15APR2021 470 23AUG2021 600 PRIOR_CONCOMITANT + 9 01JAN2020 03OCT2021 641 17OCT2021 655 PRIOR_CONCOMITANT + 10 01JAN2020 19OCT2020 292 07DEC2020 341 PRIOR_CONCOMITANT + # i 1,924 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkcl01.md b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkcl01.md new file mode 100644 index 0000000000..6c9e746e66 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkcl01.md @@ -0,0 +1,20 @@ +# listings/pharmacokinetic/pkcl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 2,660 x 6 + ARM USUBJID VISIT NFRLT AFRLT AVAL + + 1 A: Drug X AB12345-BRA-1-id-105 Day 1 0 0 0 + 2 A: Drug X AB12345-BRA-1-id-105 Day 1 0.5 0.5 10.4 + 3 A: Drug X AB12345-BRA-1-id-105 Day 1 1 1 14.0 + 4 A: Drug X AB12345-BRA-1-id-105 Day 1 1.5 1.5 14.1 + 5 A: Drug X AB12345-BRA-1-id-105 Day 1 2 2 12.7 + 6 A: Drug X AB12345-BRA-1-id-105 Day 1 3 3 8.80 + 7 A: Drug X AB12345-BRA-1-id-105 Day 1 4 4 5.46 + 8 A: Drug X AB12345-BRA-1-id-105 Day 1 8 8 0.562 + 9 A: Drug X AB12345-BRA-1-id-105 Day 1 12 12 0.049 + 10 A: Drug X AB12345-BRA-1-id-105 Day 2 24 24 0 + # i 2,650 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkcl02.md b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkcl02.md new file mode 100644 index 0000000000..9b37b4a1d2 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkcl02.md @@ -0,0 +1,140 @@ +# listings/pharmacokinetic/pkcl02.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 532 x 13 + TRT01A USUBJID VISIT + + 1 A: Drug X AB12345-BRA-1-id-105 Day 1 + 2 A: Drug X AB12345-BRA-1-id-105 Day 2 + 3 A: Drug X AB12345-BRA-1-id-134 Day 1 + 4 A: Drug X AB12345-BRA-1-id-134 Day 2 + 5 A: Drug X AB12345-BRA-1-id-42 Day 1 + 6 A: Drug X AB12345-BRA-1-id-42 Day 2 + 7 A: Drug X AB12345-BRA-1-id-93 Day 1 + 8 A: Drug X AB12345-BRA-1-id-93 Day 2 + 9 A: Drug X AB12345-BRA-11-id-217 Day 1 + 10 A: Drug X AB12345-BRA-11-id-217 Day 2 + `UR_Conc (ug/mL) -\nUrine Collection\nInterval:\nredose` + + 1 0 + 2 NA + 3 0 + 4 NA + 5 0 + 6 NA + 7 0 + 8 NA + 9 0 + 10 NA + `Vurine (mL) -\nUrine Collection\nInterval:\nredose` + + 1 714. + 2 NA + 3 1069. + 4 NA + 5 817. + 6 NA + 7 865. + 8 NA + 9 725. + 10 NA + `UR_Conc (ug/mL) -\nUrine Collection\nInterval (hours):\n0 - 4` + + 1 5.46 + 2 NA + 3 4.06 + 4 NA + 5 4.28 + 6 NA + 7 4.32 + 8 NA + 9 6.22 + 10 NA + `Vurine (mL) -\nUrine Collection\nInterval (hours):\n0 - 4` + + 1 96.9 + 2 NA + 3 145. + 4 NA + 5 111. + 6 NA + 7 117. + 8 NA + 9 98.4 + 10 NA + `UR_Conc (ug/mL) -\nUrine Collection\nInterval (hours):\n4 - 8` + + 1 0.562 + 2 NA + 3 0.178 + 4 NA + 5 0.305 + 6 NA + 7 0.278 + 8 NA + 9 0.672 + 10 NA + `Vurine (mL) -\nUrine Collection\nInterval (hours):\n4 - 8` + + 1 235. + 2 NA + 3 352. + 4 NA + 5 269. + 6 NA + 7 285. + 8 NA + 9 239. + 10 NA + `UR_Conc (ug/mL) -\nUrine Collection\nInterval (hours):\n8 - 12` + + 1 0.049 + 2 NA + 3 0.006 + 4 NA + 5 0.018 + 6 NA + 7 0.015 + 8 NA + 9 0.059 + 10 NA + `Vurine (mL) -\nUrine Collection\nInterval (hours):\n8 - 12` + + 1 385. + 2 NA + 3 576. + 4 NA + 5 441. + 6 NA + 7 466. + 8 NA + 9 391. + 10 NA + `UR_Conc (ug/mL) -\nUrine Collection\nInterval (hours):\n0 - 24` + + 1 NA + 2 0 + 3 NA + 4 0 + 5 NA + 6 0 + 7 NA + 8 0 + 9 NA + 10 0 + `Vurine (mL) -\nUrine Collection\nInterval (hours):\n0 - 24` + + 1 NA + 2 735. + 3 NA + 4 1080. + 5 NA + 6 737. + 7 NA + 8 757. + 9 NA + 10 1185. + # i 522 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl01.md b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl01.md new file mode 100644 index 0000000000..2a10fe1684 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl01.md @@ -0,0 +1,32 @@ +# listings/pharmacokinetic/pkpl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 798 x 6 + TRT01A USUBJID AVISIT `AUC Infinity Obs (day*ug/mL)` + + 1 A: Drug X AB12345-BRA-1-id-105 SCREENING 145. + 2 A: Drug X AB12345-BRA-1-id-105 CYCLE 1 DAY 1 246. + 3 A: Drug X AB12345-BRA-1-id-105 CYCLE 1 DAY 2 225. + 4 A: Drug X AB12345-BRA-1-id-134 SCREENING 157. + 5 A: Drug X AB12345-BRA-1-id-134 CYCLE 1 DAY 1 249. + 6 A: Drug X AB12345-BRA-1-id-134 CYCLE 1 DAY 2 231. + 7 A: Drug X AB12345-BRA-1-id-42 SCREENING 194. + 8 A: Drug X AB12345-BRA-1-id-42 CYCLE 1 DAY 1 211. + 9 A: Drug X AB12345-BRA-1-id-42 CYCLE 1 DAY 2 168. + 10 A: Drug X AB12345-BRA-1-id-93 SCREENING 187. + `Max Conc (ug/mL)` `Total CL Obs (ml/day/kg)` + + 1 35.5 5.16 + 2 31.2 4.41 + 3 43.5 4.81 + 4 32.1 6.04 + 5 21.8 4.56 + 6 21.1 6.95 + 7 20.5 6.34 + 8 26.8 3.51 + 9 34.8 4.12 + 10 27.4 3.40 + # i 788 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl02.md b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl02.md new file mode 100644 index 0000000000..f21a93c727 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl02.md @@ -0,0 +1,44 @@ +# listings/pharmacokinetic/pkpl02.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 798 x 7 + TRT01A USUBJID AVISIT `Renal CL (L/hr)` + + 1 A: Drug X AB12345-BRA-1-id-105 SCREENING 0.0538 + 2 A: Drug X AB12345-BRA-1-id-105 CYCLE 1 DAY 1 0.0481 + 3 A: Drug X AB12345-BRA-1-id-105 CYCLE 1 DAY 2 0.0524 + 4 A: Drug X AB12345-BRA-1-id-134 SCREENING 0.0548 + 5 A: Drug X AB12345-BRA-1-id-134 CYCLE 1 DAY 1 0.0464 + 6 A: Drug X AB12345-BRA-1-id-134 CYCLE 1 DAY 2 0.0543 + 7 A: Drug X AB12345-BRA-1-id-42 SCREENING 0.0480 + 8 A: Drug X AB12345-BRA-1-id-42 CYCLE 1 DAY 1 0.0601 + 9 A: Drug X AB12345-BRA-1-id-42 CYCLE 1 DAY 2 0.0222 + 10 A: Drug X AB12345-BRA-1-id-93 SCREENING 0.0429 + `Renal CL Norm by Dose (L/hr/mg)` `Amt Rec from T1 to T2 (mg)` + + 1 0.00442 2.15 + 2 0.00418 1.78 + 3 0.00575 1.78 + 4 0.00489 1.69 + 5 0.00281 1.03 + 6 0.00480 2.08 + 7 0.00621 1.49 + 8 0.00424 2.00 + 9 0.00415 1.65 + 10 0.00451 0.882 + `Pct Rec from T1 to T2 (%)` + + 1 17.8 + 2 13.5 + 3 11.8 + 4 14.7 + 5 15.2 + 6 16.6 + 7 12.5 + 8 16.1 + 9 10.1 + 10 19.8 + # i 788 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl04.md b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl04.md new file mode 100644 index 0000000000..ebdce6c38b --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-pharmacokinetic-pkpl04.md @@ -0,0 +1,68 @@ +# listings/pharmacokinetic/pkpl04.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 266 x 7 + USUBJID `AUC Infinity Obs (day*ug/mL)\nPlasma Drug X` + + 1 AB12345-BRA-1-id-105 246. + 2 AB12345-BRA-1-id-134 249. + 3 AB12345-BRA-1-id-141 204. + 4 AB12345-BRA-1-id-265 196. + 5 AB12345-BRA-1-id-42 211. + 6 AB12345-BRA-1-id-93 160. + 7 AB12345-BRA-11-id-171 218. + 8 AB12345-BRA-11-id-217 272. + 9 AB12345-BRA-11-id-237 148. + 10 AB12345-BRA-11-id-321 206. + `AUC Infinity Obs (day*ug/mL)\nPlasma Drug Y` + + 1 NA + 2 NA + 3 192. + 4 219. + 5 NA + 6 NA + 7 181. + 8 NA + 9 194. + 10 216. + `AUC Infinity Obs (day*ug/mL)\nPlasma Drug X/Plasma Drug Y` + + 1 NA + 2 NA + 3 1.06 + 4 0.898 + 5 NA + 6 NA + 7 1.20 + 8 NA + 9 0.765 + 10 0.952 + `Max Conc (ug/mL)\nPlasma Drug X` `Max Conc (ug/mL)\nPlasma Drug Y` + + 1 31.2 NA + 2 21.8 NA + 3 29.5 38.9 + 4 35.6 34.2 + 5 26.8 NA + 6 17.5 NA + 7 30.4 31.6 + 8 34.3 NA + 9 32.9 38.7 + 10 33.0 28.5 + `Max Conc (ug/mL)\nPlasma Drug X/Plasma Drug Y` + + 1 NA + 2 NA + 3 0.760 + 4 1.04 + 5 NA + 6 NA + 7 0.961 + 8 NA + 9 0.850 + 10 1.16 + # i 256 more rows + diff --git a/package/tests/testthat/_snaps/development/listings-vital-signs-vsl01.md b/package/tests/testthat/_snaps/development/listings-vital-signs-vsl01.md new file mode 100644 index 0000000000..5ae6d8b595 --- /dev/null +++ b/package/tests/testthat/_snaps/development/listings-vital-signs-vsl01.md @@ -0,0 +1,56 @@ +# listings/vital-signs/vsl01.qmd lsting development + + Code + print(data_snap[[i]]) + Output + # A tibble: 2,000 x 17 + TRT01A CRTNPT AGSXRC AVISIT ADY + + 1 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 1 DAY 8 189 + 2 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 2 DAY 15 323 + 3 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 3 DAY 22 492 + 4 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 4 DAY 29 550 + 5 A: Drug X BRA-1/105 38/M/BLACK OR AFRICAN AMERICAN WEEK 5 DAY 36 628 + 6 A: Drug X BRA-1/134 47/M/WHITE WEEK 1 DAY 8 203 + 7 A: Drug X BRA-1/134 47/M/WHITE WEEK 2 DAY 15 326 + 8 A: Drug X BRA-1/134 47/M/WHITE WEEK 3 DAY 22 363 + 9 A: Drug X BRA-1/134 47/M/WHITE WEEK 4 DAY 29 367 + 10 A: Drug X BRA-1/134 47/M/WHITE WEEK 5 DAY 36 417 + AVAL_ANRIND_WEIGHT CHG_WEIGHT AVAL_ANRIND_TEMP CHG_TEMP AVAL_ANRIND_DIABP + + 1 " 90.96" " 24.62" " 36.79" " -1.88" "101.10" + 2 " 41.40" " -24.93" " 36.52" " -2.14" "111.02" + 3 " 60.55" " -5.78" " 35.03/L" " -3.64" " 88.35" + 4 " 69.69" " 3.36" " 35.71/L" " -2.95" "100.74" + 5 " 81.64" " 15.30" " 36.01/L" " -2.65" "123.17/H" + 6 " 42.95" " -12.51" " 36.39" " -1.38" "112.71" + 7 " 20.36/L" " -35.09" " 35.75/L" " -2.03" " 98.42" + 8 " 46.33" " -9.12" " 35.43/L" " -2.34" " 97.88" + 9 " 43.83" " -11.62" " 36.01/L" " -1.76" " 98.97" + 10 " 31.75/L" " -23.71" " 36.35" " -1.42" "124.26/H" + CHG_DIABP AVAL_ANRIND_SYSBP CHG_SYSBP AVAL_ANRIND_PULSE CHG_PULSE + + 1 " -12.65" 181.05/H " 3.70" " 84.91" " -2.05" + 2 " -2.72" 132.47 " -44.88" " 71.54" " -15.42" + 3 " -25.39" 112.67/L " -64.68" " 33.75/L" " -53.22" + 4 " -13.00" 194.88/H " 17.53" " 97.51" " 10.54" + 5 " 9.43" 140.33 " -37.02" " 62.50" " -24.47" + 6 " 26.38" 148.69 " -52.75" " 69.12" " 3.72" + 7 " 12.09" 188.08/H " -13.36" " 68.79" " 3.40" + 8 " 11.55" 160.05 " -41.39" " 90.21" " 24.81" + 9 " 12.65" 132.19 " -69.25" " 88.39" " 23.00" + 10 " 37.94" 134.30 " -67.14" " 88.64" " 23.25" + AVAL_ANRIND_RESP CHG_RESP + + 1 " 18.34" " 1.13" + 2 " 9.81/L" " -7.40" + 3 " 21.23/H" " 4.02" + 4 " 12.50" " -4.71" + 5 " 10.91/L" " -6.30" + 6 " 15.31" " -2.84" + 7 " 17.60" " -0.55" + 8 " 18.15" " 0.00" + 9 " 19.62" " 1.48" + 10 " 20.08/H" " 1.94" + # i 1,990 more rows + diff --git a/package/tests/testthat/_snaps/development/tables-ADA-adat01.md b/package/tests/testthat/_snaps/development/tables-ADA-adat01.md new file mode 100644 index 0000000000..55baa454a9 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ADA-adat01.md @@ -0,0 +1,33 @@ +# tables/ADA/adat01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Baseline Prevalence and Incidence of Treatment Emergent ADA + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination B: Placebo All Drug X + (N=134) (N=132) (N=0) (N=134) (N=266) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Baseline Prevalence of ADAs + Baseline evaluable patients 134 132 0 0 266 + Patient with a positive sample at baseline 63 (47.0%) 64 (48.5%) 0 0 127 (47.7%) + Patient with no positive samples at baseline 71 68 0 0 139 + Incidence of Treatment Emergent ADAs + Post-baseline evaluable patients 134 132 0 0 266 + Patient positive for Treatment Emergent ADA 0 0 0 0 0 + Treatment-induced ADA 0 0 0 0 0 + Treatment-enhanced ADA 0 0 0 0 0 + Patient negative for Treatment Emergent ADA 0 0 0 0 0 + Treatment unaffected 0 0 0 0 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient = a patient with an ADA assay result from a baseline sample(s) + Post-baseline evaluable patient = a patient with an ADA assay result from at least one post-baseline sample Number of patients positive for Treatment Emergent + ADA = the number (and percentage) of post-baseline evaluable patients determined to have treatment-induced ADA or treatment-enhanced ADA during the study period. + Treatment-induced ADA = a patient with negative or missing baseline ADA result(s) and at least one positive post-baseline ADA result. + Treatment-enhanced ADA = a patient with positive ADA result at baseline who has one or more post-baseline titer results that are at least 0.60 t.u. greater than the baseline titer result. + Number of patients negative for Treatment Emergent ADA = number of post-baseline evaluable patients with negative or missing baseline ADA result(s) and all negative post-baseline results, or a patient who is treatment unaffected. + Treatment unaffected = A post-baseline evaluable patient with a positive ADA result at baseline and (a) where all post-baseline titer results are less than 0.60 t.u. greater than the baseline titer result, OR (b) where all post-baseline results are negative or missing. + For any positive sample with titer result less than the minimum reportable titer or any positive sample where a titer cannot be obtained, titer value is imputed as equal to the minimum reportable titer. + diff --git a/package/tests/testthat/_snaps/development/tables-ADA-adat02.md b/package/tests/testthat/_snaps/development/tables-ADA-adat02.md new file mode 100644 index 0000000000..1034555a2d --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ADA-adat02.md @@ -0,0 +1,34 @@ +# tables/ADA/adat02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Patients with Treatment-Induced ADA, PK Population + Protocol: A: Drug X Antibody + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination + (N=134) (N=132) (N=0) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Post-baseline evaluable patients 134 132 266 + Treatment-induced ADA patients 0 0 64 (24.1%) + Treatment-induced ADA patients with + Transient ADA 0 0 0 + Persistent ADA 0 0 0 + Median time to onset of ADA (weeks) NA NA 0.1 + ADA titer range (min - max) NA NA NA + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic + Antibodies) + Treatment-induced ADA = negative or missing baseline. + ADA result(s) and at least one positive post-baseline ADA result. + Transient ADA = ADA positive result detected (a) at only one post-baseline + sampling timepoint (excluding last timepoint) OR (b) at 2 or more timepoints + during treatment where the first and last ADA positive samples are separated + by a period of < 16 weeks, irrespective of any negative samples in between. + Persistent ADA = ADA positive result detected (a) at the last post-baseline + sampling timepoint, OR (b) at 2 or more time points during treatment where + the first and last ADA positive samples are separated by a period β‰₯ 16 + weeks, irrespective of any negative samples in between. + diff --git a/package/tests/testthat/_snaps/development/tables-ADA-adat03.md b/package/tests/testthat/_snaps/development/tables-ADA-adat03.md new file mode 100644 index 0000000000..ab86f4d095 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ADA-adat03.md @@ -0,0 +1,31 @@ +# tables/ADA/adat03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Serum Concentrations (ΞΌg/mL) at Timepoints Where ADA Samples Were Collected and Analyzed + + Protocol: A: Drug X Antibody + Analyte: R1800000 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Number Samples with + Treatment Group of Measurable Concentration + Visit Samples {1} Mean SD Median Minimum Maximum CV (%) Geometric Mean ≀ 15ΞΌg/mL {2} + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X (N=536) + Day 1 402 0 0 0 0 0 NA NA 402 (100%) + Day 2 134 16.2 1.63 16.2 12.6 19.9 10.0 16.1 39 (29.1%) + + C: Combination (N=792) + Day 1 528 0 0 0 0 0 NA NA 528 (100%) + Day 2 264 24.7 8.65 22.5 12.6 39.5 35.0 23.2 28 (10.6%) + + Overall 1328 6.54 11.0 0 0 39.5 167.5 NA 997 (75.1%) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Refers to the total no. of measurable ADA samples that have a corresponding measurable drug concentration sample (i.e. results with valid numeric values and LTRs). LTR results on post-dose samples are replaced by aaa Β΅g/mL i.e. half of MQC value. + {2} - In validation, the assay was able to detect yyy ng/mL of surrogate ADA in the presence of zzz Β΅g/mL of [drug]. BLQ = Below Limit of Quantitation, LTR = Lower than Reportable, MQC = Minimum Quantifiable Concentration, ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies). RXXXXXXX is also known as [drug] + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + diff --git a/package/tests/testthat/_snaps/development/tables-ADA-adat04a.md b/package/tests/testthat/_snaps/development/tables-ADA-adat04a.md new file mode 100644 index 0000000000..fe457863ff --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ADA-adat04a.md @@ -0,0 +1,37 @@ +# tables/ADA/adat04a.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Baseline Prevalence and Incidence of Treatment Emergent NAbs + Protocol: A: Drug X Antibody + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination B: Placebo All Drug X + (N=134) (N=132) (N=0) (N=134) (N=266) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Baseline Prevalence of NAbs + Baseline evaluable patients for ADA 134 132 0 0 266 + Patients with a positive ADA sample at baseline 63 64 0 0 127 + Patients with a positive NAb sample at baseline 0 0 0 0 0 + Patient with no positive NAb samples at baseline 0 0 0 0 0 + Incidence of Treatment Emergent NAbs + Post-baseline evaluable patients for ADA 134 132 0 0 266 + Patients positive for ADA 66 59 0 0 125 + Patients positive for Treatment Emergent NAb 0 0 0 0 0 + Treatment-induced NAb 0 0 0 0 0 + Treatment-enhanced NAb 0 0 0 0 0 + Patients negative for NAb 0 0 0 0 0 + Treatment unaffected 0 0 0 0 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) + Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) + Post-baseline evaluable patient for ADA = a patient with an ADA assay result from at least one post-baseline sample + Post-baseline evaluable patient for NAb = a patient with a NAb assay result from at least one post-baseline sample + Number of patients positive for ADA = the number of post-baseline evaluable patients for ADA determined to have Treatment Emergent ADA during the study period. + Number of patients positive for Treatment Emergent NAb = the number (and percentage) of post-baseline evaluable patients for ADA determined to have treatment-induced NAb or treatment-enhanced NAb during the study period. + Treatment-induced = a patient with negative or missing baseline result(s) and at least one positive post-baseline result. Treatment-enhanced = a patient with positive result at baseline who has one or more post-baseline titer results that are at least 0.60 t.u. greater than the baseline titer result. + Number of patients negative for Treatment Emergent NAb = number of post-baseline evaluable patients with negative or missing baseline NAb result(s) and all negative post-baseline NAb results, or a patient who is NAb treatment unaffected. + Treatment unaffected = A post-baseline evaluable patient with a positive result at baseline and (a) where all post-baseline titer results are less than 0.60 t.u. greater than the baseline titer result, OR (b) where all post-baseline results are negative or missing. For any positive sample with titer result less than the minimum reportable titer or any positive sample where a titer cannot be obtained, titer value is imputed as equal to the minimum reportable titer. + diff --git a/package/tests/testthat/_snaps/development/tables-ADA-adat04b.md b/package/tests/testthat/_snaps/development/tables-ADA-adat04b.md new file mode 100644 index 0000000000..c73b06a076 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ADA-adat04b.md @@ -0,0 +1,27 @@ +# tables/ADA/adat04b.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Baseline Prevalence and Incidence of Neutralizing Antibodies (NAbs) + Protocol: A: Drug X Antibody + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination B: Placebo All Drug X + (N=134) (N=132) (N=0) (N=134) (N=266) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Baseline Prevalence of NAbs + Baseline evaluable patients for ADA 134 132 0 0 266 + Patients with a positive ADA sample at baseline 63 64 0 0 127 + Patients with a positive NAb sample at baseline 0 0 0 0 0 + Patients with no positive NAb sample at baseline 0 0 0 0 0 + Incidence of NAbs + Post-baseline evaluable patients for ADA 134 132 0 0 266 + Patients positive for ADA 66 59 0 0 125 + Patients positive for NAb 0 0 0 0 0 + Patients negative for NAb 134 132 0 0 266 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) Post-baseline evaluable patient for ADA = a patient with an ADA assay result from at least one post-baseline sample Post-baseline evaluable patient for NAb = a patient with a NAb assay result from at least one post-baseline sample Number of patients positive for ADA = the number of post-baseline evaluable patients for ADA determined to have Treatment Emergent ADA during the study period. + Number of patients positive for NAb = the number (and percentage) of post-baseline evaluable patients for ADA determined to have at least one positive post-baseline NAb result during the study period. Number of patients negative for NAb = number of post-baseline evaluable patients with all negative post-baseline NAb results. + diff --git a/package/tests/testthat/_snaps/development/tables-ECG-egt01.md b/package/tests/testthat/_snaps/development/tables-ECG-egt01.md new file mode 100644 index 0000000000..a63fe0339f --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ECG-egt01.md @@ -0,0 +1,104 @@ +# tables/ECG/egt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Change from Change from Change from + Parameter Value at Visit Baseline Value at Visit Baseline Value at Visit Baseline + Analysis Visit (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Heart Rate + BASELINE + n 134 134 132 + Mean (SD) 71.45 (17.93) 69.83 (20.72) 69.34 (20.95) + Median 72.70 73.35 71.96 + Min - Max 9.09 - 106.91 13.49 - 115.52 11.63 - 115.49 + WEEK 1 DAY 8 + n 134 134 134 134 132 132 + Mean (SD) 70.19 (20.27) -1.26 (25.97) 69.43 (20.80) -0.40 (29.73) 68.65 (18.06) -0.69 (27.81) + Median 70.70 -2.20 70.46 -0.52 68.57 -0.76 + Min - Max 8.53 - 127.50 -50.97 - 89.16 16.85 - 129.14 -68.18 - 88.38 16.87 - 115.60 -68.25 - 67.20 + WEEK 2 DAY 15 + n 134 134 134 134 132 132 + Mean (SD) 70.32 (19.56) -1.13 (26.26) 71.11 (20.56) 1.28 (31.35) 69.19 (18.06) -0.15 (28.61) + Median 70.88 -1.10 72.52 -0.31 69.30 -1.55 + Min - Max 17.14 - 116.32 -85.03 - 67.52 9.22 - 120.54 -73.07 - 81.44 29.62 - 120.50 -67.75 - 66.29 + WEEK 3 DAY 22 + n 134 134 134 134 132 132 + Mean (SD) 68.25 (20.17) -3.20 (28.66) 68.95 (20.56) -0.88 (30.14) 70.88 (20.28) 1.54 (27.28) + Median 68.79 -2.17 67.80 1.19 70.12 0.14 + Min - Max 13.33 - 131.73 -81.20 - 72.57 23.98 - 130.41 -73.03 - 103.31 20.91 - 116.79 -64.51 - 72.52 + WEEK 4 DAY 29 + n 134 134 134 134 132 132 + Mean (SD) 70.06 (18.41) -1.38 (26.59) 71.60 (20.34) 1.77 (30.26) 71.02 (20.59) 1.68 (29.60) + Median 69.33 -4.54 72.21 -0.88 70.52 3.81 + Min - Max 22.30 - 116.51 -58.07 - 77.32 17.53 - 129.06 -64.32 - 85.34 10.35 - 117.30 -65.91 - 105.67 + WEEK 5 DAY 36 + n 134 134 134 134 132 132 + Mean (SD) 66.41 (19.74) -5.04 (27.11) 71.25 (18.92) 1.42 (27.08) 71.26 (18.56) 1.92 (29.59) + Median 65.40 -6.83 70.86 0.64 73.29 1.74 + Min - Max 23.89 - 110.38 -73.26 - 57.24 25.86 - 125.73 -71.15 - 67.37 23.89 - 117.19 -58.23 - 68.86 + QT Duration + BASELINE + n 134 134 132 + Mean (SD) 336.83 (117.96) 351.00 (98.44) 352.60 (105.11) + Median 344.41 351.48 347.96 + Min - Max 86.98 - 665.40 98.90 - 641.92 105.68 - 628.14 + WEEK 1 DAY 8 + n 134 134 134 134 132 132 + Mean (SD) 342.57 (101.09) 5.74 (159.94) 363.95 (102.34) 12.94 (140.73) 359.42 (105.16) 6.83 (147.13) + Median 347.26 -1.78 356.54 13.73 363.84 8.69 + Min - Max 91.63 - 591.42 -346.44 - 452.75 114.92 - 656.45 -317.53 - 416.35 51.91 - 611.88 -473.19 - 358.00 + WEEK 2 DAY 15 + n 134 134 134 134 132 132 + Mean (SD) 353.24 (93.93) 16.41 (162.10) 345.93 (96.78) -5.08 (152.51) 335.69 (98.61) -16.91 (138.45) + Median 351.10 16.72 346.83 -9.68 320.96 -22.27 + Min - Max 138.01 - 587.30 -414.07 - 389.16 146.42 - 556.07 -440.28 - 364.76 104.91 - 562.34 -326.55 - 325.27 + WEEK 3 DAY 22 + n 134 134 134 134 132 132 + Mean (SD) 370.12 (101.57) 33.28 (152.78) 343.41 (102.58) -7.59 (138.80) 346.95 (94.96) -5.65 (144.65) + Median 378.21 39.59 335.12 -15.89 352.15 9.11 + Min - Max 118.14 - 615.18 -391.72 - 520.09 63.37 - 566.51 -311.28 - 293.76 126.09 - 580.81 -412.11 - 410.01 + WEEK 4 DAY 29 + n 134 134 134 134 132 132 + Mean (SD) 345.77 (95.97) 8.94 (145.65) 354.38 (108.29) 3.37 (142.39) 341.36 (106.75) -11.24 (145.65) + Median 340.13 5.58 346.70 -17.13 352.30 -11.87 + Min - Max 110.12 - 616.58 -393.34 - 456.04 80.82 - 687.69 -439.90 - 364.80 4.95 - 570.61 -480.94 - 330.67 + WEEK 5 DAY 36 + n 134 134 134 134 132 132 + Mean (SD) 358.90 (97.69) 22.07 (155.68) 338.65 (99.26) -12.36 (130.46) 349.30 (95.77) -3.30 (136.00) + Median 351.96 5.89 344.17 0.40 350.32 12.68 + Min - Max 88.38 - 661.12 -353.30 - 539.84 31.25 - 563.90 -338.85 - 352.75 119.02 - 581.83 -311.45 - 295.53 + RR Duration + BASELINE + n 134 134 132 + Mean (SD) 1028.42 (286.38) 1027.48 (324.00) 1074.62 (277.33) + Median 1041.86 1047.27 1080.87 + Min - Max 34.33 - 1783.71 5.29 - 1877.19 289.60 - 1617.06 + WEEK 1 DAY 8 + n 134 134 134 134 132 132 + Mean (SD) 990.15 (318.74) -38.26 (446.40) 1061.59 (269.14) 34.10 (401.76) 1039.64 (284.39) -34.98 (406.04) + Median 963.88 -86.50 1061.50 66.91 1014.78 -97.83 + Min - Max 110.82 - 2014.56 -1014.82 - 1389.40 276.83 - 1711.99 -942.16 - 993.82 498.21 - 1937.47 -958.61 - 908.90 + WEEK 2 DAY 15 + n 134 134 134 134 132 132 + Mean (SD) 1013.37 (304.13) -15.05 (425.81) 1109.40 (318.23) 81.92 (453.11) 1045.21 (277.51) -29.41 (380.84) + Median 1040.69 40.49 1117.76 69.27 1034.64 -15.33 + Min - Max 164.19 - 1677.10 -1216.10 - 1053.15 160.73 - 2048.73 -1127.10 - 1148.61 252.84 - 1722.33 -859.27 - 871.54 + WEEK 3 DAY 22 + n 134 134 134 134 132 132 + Mean (SD) 1013.99 (304.99) -14.43 (406.53) 1118.35 (296.53) 90.86 (409.57) 1036.59 (268.52) -38.03 (421.48) + Median 1027.23 -50.54 1134.60 52.03 1030.72 -60.72 + Min - Max 357.04 - 1798.65 -882.94 - 1080.26 97.14 - 1825.43 -887.06 - 1166.15 446.02 - 1713.38 -984.79 - 902.37 + WEEK 4 DAY 29 + n 134 134 134 134 132 132 + Mean (SD) 1033.31 (313.92) 4.89 (483.15) 1079.76 (298.94) 52.28 (429.25) 1027.55 (295.86) -47.07 (378.23) + Median 1050.40 5.60 1051.61 69.55 1023.36 -49.52 + Min - Max 54.33 - 1979.43 -1345.93 - 1195.41 347.94 - 1762.04 -826.43 - 1191.83 341.62 - 2144.86 -1002.03 - 1048.66 + WEEK 5 DAY 36 + n 134 134 134 134 132 132 + Mean (SD) 1072.33 (282.90) 43.92 (379.05) 1058.45 (271.01) 30.97 (436.03) 1029.04 (271.21) -45.58 (405.53) + Median 1067.33 55.87 1068.95 33.61 1065.26 -34.40 + Min - Max 352.97 - 2000.56 -1028.79 - 1418.57 208.83 - 1794.73 -978.97 - 1365.13 436.28 - 1794.07 -962.18 - 1329.88 + diff --git a/package/tests/testthat/_snaps/development/tables-ECG-egt02.md b/package/tests/testthat/_snaps/development/tables-ECG-egt02.md new file mode 100644 index 0000000000..fad9c0fea4 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ECG-egt02.md @@ -0,0 +1,36 @@ +# tables/ECG/egt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Assessment A: Drug X B: Placebo C: Combination + Abnormality (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Heart Rate + Low 40/134 (29.9%) 43/134 (32.1%) 37/132 (28%) + High 39/134 (29.1%) 45/134 (33.6%) 36/132 (27.3%) + QT Duration + Low 33/134 (24.6%) 44/134 (32.8%) 47/132 (35.6%) + High 30/134 (22.4%) 42/134 (31.3%) 34/132 (25.8%) + RR Duration + Low 45/134 (33.6%) 26/134 (19.4%) 38/132 (28.8%) + High 29/134 (21.6%) 49/134 (36.6%) 27/132 (20.5%) + +# tables/ECG/egt02.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Assessment A: Drug X B: Placebo C: Combination + Abnormality (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Heart Rate + Low 39/128 (30.5%) 42/124 (33.9%) 33/117 (28.2%) + High 37/127 (29.1%) 43/129 (33.3%) 31/122 (25.4%) + QT Duration + Low 29/113 (25.7%) 42/126 (33.3%) 43/124 (34.7%) + High 30/125 (24%) 40/130 (30.8%) 30/119 (25.2%) + RR Duration + Low 45/129 (34.9%) 26/123 (21.1%) 37/126 (29.4%) + High 27/127 (21.3%) 43/122 (35.2%) 25/125 (20%) + diff --git a/package/tests/testthat/_snaps/development/tables-ECG-egt03.md b/package/tests/testthat/_snaps/development/tables-ECG-egt03.md new file mode 100644 index 0000000000..be711ba632 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ECG-egt03.md @@ -0,0 +1,48 @@ +# tables/ECG/egt03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Planned Arm Code Minimum Post-Baseline Assessment + Baseline Reference Range Indicator LOW NORMAL HIGH Missing + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A (N=134) + LOW 1 (0.7%) 5 (3.7%) 0 0 + NORMAL 36 (26.9%) 83 (61.9%) 0 1 (0.7%) + HIGH 2 (1.5%) 4 (3%) 0 0 + Missing 1 (0.7%) 0 0 1 (0.7%) + ARM B (N=134) + LOW 1 (0.7%) 9 (6.7%) 0 0 + NORMAL 40 (29.9%) 75 (56%) 0 2 (1.5%) + HIGH 1 (0.7%) 4 (3%) 0 0 + Missing 1 (0.7%) 1 (0.7%) 0 0 + ARM C (N=132) + LOW 4 (3%) 11 (8.3%) 0 0 + NORMAL 31 (23.5%) 75 (56.8%) 0 0 + HIGH 1 (0.8%) 8 (6.1%) 0 1 (0.8%) + Missing 1 (0.8%) 0 0 0 + +# tables/ECG/egt03.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Planned Arm Code Maximum Post-Baseline Assessment + Baseline Reference Range Indicator LOW NORMAL HIGH Missing + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A (N=134) + LOW 0 2 (1.5%) 4 (3%) 0 + NORMAL 0 88 (65.7%) 31 (23.1%) 1 (0.7%) + HIGH 0 5 (3.7%) 1 (0.7%) 0 + Missing 0 0 1 (0.7%) 1 (0.7%) + ARM B (N=134) + LOW 0 8 (6%) 2 (1.5%) 0 + NORMAL 0 76 (56.7%) 39 (29.1%) 2 (1.5%) + HIGH 0 3 (2.2%) 2 (1.5%) 0 + Missing 0 1 (0.7%) 1 (0.7%) 0 + ARM C (N=132) + LOW 0 12 (9.1%) 3 (2.3%) 0 + NORMAL 0 79 (59.8%) 27 (20.5%) 0 + HIGH 0 5 (3.8%) 4 (3%) 1 (0.8%) + Missing 0 0 1 (0.8%) 0 + diff --git a/package/tests/testthat/_snaps/development/tables-ECG-egt04.md b/package/tests/testthat/_snaps/development/tables-ECG-egt04.md new file mode 100644 index 0000000000..7b053f9593 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ECG-egt04.md @@ -0,0 +1,21 @@ +# tables/ECG/egt04.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Description of Planned Arm Post-Baseline + Baseline Normal Abnormal Missing + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X (N=134) + Normal 20 (14.9%) 81 (60.4%) 1 (0.7%) + Abnormal 11 (8.2%) 19 (14.2%) 0 + Missing 0 1 (0.7%) 1 (0.7%) + B: Placebo (N=134) + Normal 18 (13.4%) 81 (60.4%) 2 (1.5%) + Abnormal 3 (2.2%) 28 (20.9%) 0 + Missing 0 2 (1.5%) 0 + C: Combination (N=132) + Normal 26 (19.7%) 69 (52.3%) 1 (0.8%) + Abnormal 6 (4.5%) 29 (22%) 0 + Missing 1 (0.8%) 0 0 + diff --git a/package/tests/testthat/_snaps/development/tables-ECG-egt05_qtcat.md b/package/tests/testthat/_snaps/development/tables-ECG-egt05_qtcat.md new file mode 100644 index 0000000000..008ecc1401 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-ECG-egt05_qtcat.md @@ -0,0 +1,78 @@ +# tables/ECG/egt05_qtcat.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Parameter + Analysis Visit A: Drug X B: Placebo C: Combination + Category (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + QT Duration + BASELINE + Value at Visit + n 134 134 132 + <=450 msec 115 (85.8%) 117 (87.3%) 104 (78.8%) + >450 to <=480 msec 6 (4.5%) 10 (7.5%) 9 (6.8%) + >480 to <= 500 msec 4 (3%) 3 (2.2%) 6 (4.5%) + >500 msec 9 (6.7%) 4 (3%) 13 (9.8%) + WEEK 1 DAY 8 + Value at Visit + n 134 134 132 + <=450 msec 113 (84.3%) 106 (79.1%) 106 (80.3%) + >450 to <=480 msec 10 (7.5%) 10 (7.5%) 11 (8.3%) + >480 to <= 500 msec 4 (3%) 4 (3%) 3 (2.3%) + >500 msec 7 (5.2%) 14 (10.4%) 12 (9.1%) + Change from Baseline + n 134 134 132 + <=30 msec 76 (56.7%) 75 (56%) 75 (56.8%) + >30 to <=60 msec 7 (5.2%) 13 (9.7%) 11 (8.3%) + >60 msec 51 (38.1%) 46 (34.3%) 46 (34.8%) + WEEK 2 DAY 15 + Value at Visit + n 134 134 132 + <=450 msec 111 (82.8%) 114 (85.1%) 112 (84.8%) + >450 to <=480 msec 10 (7.5%) 9 (6.7%) 9 (6.8%) + >480 to <= 500 msec 7 (5.2%) 2 (1.5%) 5 (3.8%) + >500 msec 6 (4.5%) 9 (6.7%) 6 (4.5%) + Change from Baseline + n 134 134 132 + <=30 msec 71 (53%) 87 (64.9%) 89 (67.4%) + >30 to <=60 msec 11 (8.2%) 9 (6.7%) 9 (6.8%) + >60 msec 52 (38.8%) 38 (28.4%) 34 (25.8%) + WEEK 3 DAY 22 + Value at Visit + n 134 134 132 + <=450 msec 106 (79.1%) 112 (83.6%) 118 (89.4%) + >450 to <=480 msec 13 (9.7%) 7 (5.2%) 3 (2.3%) + >480 to <= 500 msec 4 (3%) 5 (3.7%) 2 (1.5%) + >500 msec 11 (8.2%) 10 (7.5%) 9 (6.8%) + Change from Baseline + n 134 134 132 + <=30 msec 63 (47%) 80 (59.7%) 81 (61.4%) + >30 to <=60 msec 14 (10.4%) 8 (6%) 11 (8.3%) + >60 msec 57 (42.5%) 46 (34.3%) 40 (30.3%) + WEEK 4 DAY 29 + Value at Visit + n 134 134 132 + <=450 msec 117 (87.3%) 103 (76.9%) 114 (86.4%) + >450 to <=480 msec 7 (5.2%) 14 (10.4%) 6 (4.5%) + >480 to <= 500 msec 4 (3%) 7 (5.2%) 3 (2.3%) + >500 msec 6 (4.5%) 10 (7.5%) 9 (6.8%) + Change from Baseline + n 134 134 132 + <=30 msec 79 (59%) 80 (59.7%) 79 (59.8%) + >30 to <=60 msec 11 (8.2%) 7 (5.2%) 10 (7.6%) + >60 msec 44 (32.8%) 47 (35.1%) 43 (32.6%) + WEEK 5 DAY 36 + Value at Visit + n 134 134 132 + <=450 msec 107 (79.9%) 117 (87.3%) 112 (84.8%) + >450 to <=480 msec 16 (11.9%) 5 (3.7%) 13 (9.8%) + >480 to <= 500 msec 5 (3.7%) 9 (6.7%) 3 (2.3%) + >500 msec 6 (4.5%) 3 (2.2%) 4 (3%) + Change from Baseline + n 134 134 132 + <=30 msec 72 (53.7%) 82 (61.2%) 73 (55.3%) + >30 to <=60 msec 10 (7.5%) 11 (8.2%) 11 (8.3%) + >60 msec 52 (38.8%) 41 (30.6%) 48 (36.4%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet01.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet01.md new file mode 100644 index 0000000000..174a1346eb --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet01.md @@ -0,0 +1,107 @@ +# tables/adverse-events/aet01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) + Total number of patients withdrawn from study due to an AE 3 (2.2%) 6 (4.5%) 5 (3.8%) + Total number of patients with at least one + AE with fatal outcome 5 (3.7%) 5 (3.7%) 6 (4.5%) + Serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + Serious AE leading to withdrawal from treatment 6 (4.5%) 12 (9.0%) 9 (6.8%) + Serious AE leading to dose modification/interruption 36 (26.9%) 40 (29.9%) 47 (35.6%) + Related Serious AE 64 (47.8%) 52 (38.8%) 64 (48.5%) + AE leading to withdrawal from treatment 20 (14.9%) 24 (17.9%) 26 (19.7%) + AE leading to dose modification/interruption 63 (47.0%) 70 (52.2%) 77 (58.3%) + Related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) + Related AE leading to withdrawal from treatment 10 (7.5%) 9 (6.7%) 12 (9.1%) + Related AE leading to dose modification/interruption 44 (32.8%) 44 (32.8%) 51 (38.6%) + Severe AE (at greatest intensity) 77 (57.5%) 70 (52.2%) 79 (59.8%) + +# tables/adverse-events/aet01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) + Total number of patients withdrawn from study due to an AE 3 (2.2%) 6 (4.5%) 5 (3.8%) + Total number of patients with at least one + AE with fatal outcome 5 (3.7%) 5 (3.7%) 6 (4.5%) + Serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + Serious AE leading to withdrawal from treatment 6 (4.5%) 12 (9.0%) 9 (6.8%) + Serious AE leading to dose modification/interruption 36 (26.9%) 40 (29.9%) 47 (35.6%) + Related Serious AE 64 (47.8%) 52 (38.8%) 64 (48.5%) + AE leading to withdrawal from treatment 20 (14.9%) 24 (17.9%) 26 (19.7%) + AE leading to dose modification/interruption 63 (47.0%) 70 (52.2%) 77 (58.3%) + Related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) + Related AE leading to withdrawal from treatment 10 (7.5%) 9 (6.7%) 12 (9.1%) + Related AE leading to dose modification/interruption 44 (32.8%) 44 (32.8%) 51 (38.6%) + Grade 3-5 AE 90 (67.2%) 83 (61.9%) 93 (70.5%) + Total number of patients with at least one + C.1.1.1.3/B.2.2.3.1 AESI (BROAD) 58 (43.3%) 60 (44.8%) 66 (50.0%) + SMQ 02 Reference Name 0 0 0 + D.2.1.5.3/A.1.1.1.1 AESI 62 (46.3%) 61 (45.5%) 76 (57.6%) + +# tables/adverse-events/aet01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) + Total number of patients withdrawn from study due to an AE 3 (2.2%) 6 (4.5%) 5 (3.8%) + Total number of patients withdrawn informed consent 1 (0.7%) 1 (0.7%) 1 (0.8%) + Total number of patients with at least one + AE with fatal outcome 5 (3.7%) 5 (3.7%) 6 (4.5%) + Serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + AE leading to withdrawal from treatment 20 (14.9%) 24 (17.9%) 26 (19.7%) + Related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) + Grade 3-5 AE 90 (67.2%) 83 (61.9%) 93 (70.5%) + Grade 4/5 AE 77 (57.5%) 70 (52.2%) 79 (59.8%) + +# tables/adverse-events/aet01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) + Total number of patients withdrawn from study due to an AE 3 (2.2%) 6 (4.5%) 5 (3.8%) + Total number of patients with at least one + AE with fatal outcome 5 (3.7%) 5 (3.7%) 6 (4.5%) + Serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + AE leading to withdrawal from treatment 20 (14.9%) 24 (17.9%) 26 (19.7%) + AE leading to dose modification/interruption 63 (47.0%) 70 (52.2%) 77 (58.3%) + Related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) + Grade 3-5 AE 90 (67.2%) 83 (61.9%) 93 (70.5%) + Total number of unique preferred terms which are + Serious AE 4 4 4 + AE leading to dose modification/interruption 10 10 10 + Related AE 5 5 5 + Grade 3-5 AE 5 5 5 + Grade 4/5 AE 3 3 3 + Total number of adverse events which are + Serious AE 204 194 245 + AE leading to dose modification/interruption 123 135 158 + Related AE 231 231 290 + Grade 3-5 AE 249 229 277 + Grade 4/5 AE 143 134 168 + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet01_aesi.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet01_aesi.md new file mode 100644 index 0000000000..f1584653fb --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet01_aesi.md @@ -0,0 +1,156 @@ +# tables/adverse-events/aet01_aesi.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of patients with at least one AE by worst grade + Grade 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + Grade 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + Grade 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 (fatal outcome) 64 (47.8%) 52 (38.8%) 64 (48.5%) + Total number of patients with study drug withdrawn due to AE 22 (16.4%) 21 (15.7%) 28 (21.2%) + Total number of patients with dose modified/interrupted due to AE 55 (41.0%) 62 (46.3%) 64 (48.5%) + Total number of patients with treatment received for AE 80 (59.7%) 80 (59.7%) 89 (67.4%) + Total number of patients with all non-fatal AEs resolved 17 (12.7%) 12 (9.0%) 11 (8.3%) + Total number of patients with at least one unresolved or ongoing non-fatal AE 83 (61.9%) 86 (64.2%) 92 (69.7%) + Total number of patients with at least one serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + Total number of patients with at least one related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) + +# tables/adverse-events/aet01_aesi.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of patients with at least one AE by worst grade + Grade 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + Grade 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + Grade 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 (fatal outcome) 64 (47.8%) 52 (38.8%) 64 (48.5%) + Total number of patients with study drug withdrawn due to AE 22 (16.4%) 21 (15.7%) 28 (21.2%) + Total number of patients with dose modified/interrupted due to AE 55 (41.0%) 62 (46.3%) 64 (48.5%) + Total number of patients with treatment received for AE 80 (59.7%) 80 (59.7%) 89 (67.4%) + Total number of patients with all non-fatal AEs resolved 17 (12.7%) 12 (9.0%) 11 (8.3%) + No. of patients with study drug withdrawn due to resolved AE 0 1 (0.7%) 2 (1.5%) + No. of patients with dose modified/interrupted due to resolved AE 3 (2.2%) 4 (3.0%) 2 (1.5%) + No. of patients with treatment received for resolved AE 9 (6.7%) 7 (5.2%) 7 (5.3%) + Total number of patients with at least one unresolved or ongoing non-fatal AE 83 (61.9%) 86 (64.2%) 92 (69.7%) + No. of patients with study drug withdrawn due to unresolved or ongoing AE 22 (16.4%) 20 (14.9%) 26 (19.7%) + No. of patients with dose modified/interrupted due to unresolved or ongoing AE 52 (38.8%) 58 (43.3%) 62 (47.0%) + No. of patients with treatment received for unresolved or ongoing AE 71 (53.0%) 73 (54.5%) 82 (62.1%) + Total number of patients with at least one serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + No. of patients with study drug withdrawn due to serious AE 9 (6.7%) 4 (3.0%) 10 (7.6%) + No. of patients with treatment received for serious AE 21 (15.7%) 22 (16.4%) 28 (21.2%) + No. of patients with dose modified/interrupted due to serious AE 59 (44.0%) 58 (43.3%) 53 (40.2%) + Total number of patients with at least one related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) + No. of patients with study drug withdrawn due to related AE 5 (3.7%) 10 (7.5%) 7 (5.3%) + No. of patients with dose modified/interrupted due to related AE 24 (17.9%) 32 (23.9%) 34 (25.8%) + No. of patients with treatment received for related AE 53 (39.6%) 58 (43.3%) 60 (45.5%) + No. of patients with serious, related AE 64 (47.8%) 52 (38.8%) 64 (48.5%) + +# tables/adverse-events/aet01_aesi.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one AE 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of AEs 502 480 604 + Total number of patients with at least one AE by worst grade + Grade 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + Grade 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + Grade 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 (fatal outcome) 64 (47.8%) 52 (38.8%) 64 (48.5%) + Total number of patients with study drug 1 withdrawn due to AE 22 (16.4%) 21 (15.7%) 28 (21.2%) + Total number of patients with study drug 2 withdrawn due to AE 22 (16.4%) 21 (15.7%) 28 (21.2%) + Total number of patients with dose of study drug 1 modified/interrupted due to AE 55 (41.0%) 62 (46.3%) 64 (48.5%) + Total number of patients with dose of study drug 2 modified/interrupted due to AE 55 (41.0%) 62 (46.3%) 64 (48.5%) + Total number of patients with treatment received for AE 80 (59.7%) 80 (59.7%) 89 (67.4%) + Total number of patients with all non-fatal AEs resolved 17 (12.7%) 12 (9.0%) 11 (8.3%) + No. of patients with study drug 1 withdrawn due to resolved AE 0 1 (0.7%) 2 (1.5%) + No. of patients with study drug 2 withdrawn due to resolved AE 0 1 (0.7%) 2 (1.5%) + No. of patients with dose of study drug 1 modified/interrupted due to resolved AE 3 (2.2%) 4 (3.0%) 2 (1.5%) + No. of patients with dose of study drug 2 modified/interrupted due to resolved AE 3 (2.2%) 4 (3.0%) 2 (1.5%) + No. of patients with treatment received for resolved AE 9 (6.7%) 7 (5.2%) 7 (5.3%) + Total number of patients with at least one non-fatal unresolved or ongoing AE 83 (61.9%) 86 (64.2%) 92 (69.7%) + No. of patients with study drug 1 withdrawn due to unresolved or ongoing AE 22 (16.4%) 20 (14.9%) 26 (19.7%) + No. of patients with study drug 2 withdrawn due to unresolved or ongoing AE 22 (16.4%) 20 (14.9%) 26 (19.7%) + No. of patients with dose of study drug 1 modified/interrupted due to unresolved or ongoing AE 52 (38.8%) 58 (43.3%) 62 (47.0%) + No. of patients with dose of study drug 2 modified/interrupted due to unresolved or ongoing AE 52 (38.8%) 58 (43.3%) 62 (47.0%) + No. of patients with treatment received for unresolved or ongoing AE 71 (53.0%) 73 (54.5%) 82 (62.1%) + Total number of patients with at least one serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) + No. of patients with study drug 1 withdrawn due to serious AE 9 (6.7%) 4 (3.0%) 10 (7.6%) + No. of patients with study drug 2 withdrawn due to serious AE 9 (6.7%) 4 (3.0%) 10 (7.6%) + No. of patients with dose of study drug 1 modified/interrupted due to serious AE 21 (15.7%) 22 (16.4%) 28 (21.2%) + No. of patients with dose of study drug 2 modified/interrupted due to serious AE 21 (15.7%) 22 (16.4%) 28 (21.2%) + No. of patients with treatment received for serious AE 59 (44.0%) 58 (43.3%) 53 (40.2%) + Total number of patients with at least one AE related to study drug 1 86 (64.2%) 85 (63.4%) 92 (69.7%) + No. of patients with study drug 1 withdrawn due to AE related to study drug 1 5 (3.7%) 10 (7.5%) 7 (5.3%) + No. of patients with study drug 1 withdrawn due to AE related to study drug 2 5 (3.7%) 10 (7.5%) 7 (5.3%) + No. of patients with dose of study drug 1 modified/interrupted due to AE related to study drug 1 24 (17.9%) 32 (23.9%) 34 (25.8%) + No. of patients with dose of study drug 1 modified/interrupted due to AE related to study drug 2 24 (17.9%) 32 (23.9%) 34 (25.8%) + No. of patients with treatment received for AE related to study drug 1 53 (39.6%) 58 (43.3%) 60 (45.5%) + No. of patients with serious AE related to study drug 1 64 (47.8%) 52 (38.8%) 64 (48.5%) + Total number of patients with at least one AE related to study drug 2 86 (64.2%) 85 (63.4%) 92 (69.7%) + No. of patients with study drug 2 withdrawn due to AE related to study drug 1 5 (3.7%) 10 (7.5%) 7 (5.3%) + No. of patients with study drug 2 withdrawn due to AE related to study drug 2 5 (3.7%) 10 (7.5%) 7 (5.3%) + No. of patients with dose of study drug 2 modified/interrupted due to AE related to study drug 1 24 (17.9%) 32 (23.9%) 34 (25.8%) + No. of patients with dose of study drug 2 modified/interrupted due to AE related to study drug 2 24 (17.9%) 32 (23.9%) 34 (25.8%) + No. of patients with treatment received for AE related to study drug 2 53 (39.6%) 58 (43.3%) 60 (45.5%) + No. of patients with serious AE related to study drug 2 64 (47.8%) 52 (38.8%) 64 (48.5%) + +# tables/adverse-events/aet01_aesi.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Standardized MedDRA Query (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + C.1.1.1.3/B.2.2.3.1 AESI (BROAD) + Total number of patients with at least one AE 58 (43.3%) 60 (44.8%) 66 (50.0%) + Total number of AEs 97 106 122 + Total number of patients with at least one AE by worst grade + Grade 1 22 (16.4%) 26 (19.4%) 30 (22.7%) + Grade 2 0 0 0 + Grade 3 0 0 0 + Grade 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 5 (fatal outcome) 0 0 0 + Total number of patients with study drug withdrawn due to AE 5 (3.7%) 6 (4.5%) 9 (6.8%) + Total number of patients with dose modified/interrupted due to AE 21 (15.7%) 21 (15.7%) 24 (18.2%) + Total number of patients with treatment received for AE 32 (23.9%) 35 (26.1%) 44 (33.3%) + Total number of patients with all non-fatal AEs resolved 7 (5.2%) 9 (6.7%) 8 (6.1%) + Total number of patients with at least one non-fatal unresolved or ongoing AE 51 (38.1%) 51 (38.1%) 58 (43.9%) + Total number of patients with at least one serious AE 38 (28.4%) 40 (29.9%) 45 (34.1%) + Total number of patients with at least one related AE 36 (26.9%) 34 (25.4%) 36 (27.3%) + D.2.1.5.3/A.1.1.1.1 AESI + Total number of patients with at least one AE 62 (46.3%) 61 (45.5%) 76 (57.6%) + Total number of AEs 106 100 139 + Total number of patients with at least one AE by worst grade + Grade 1 62 (46.3%) 61 (45.5%) 76 (57.6%) + Grade 2 0 0 0 + Grade 3 0 0 0 + Grade 4 0 0 0 + Grade 5 (fatal outcome) 0 0 0 + Total number of patients with study drug withdrawn due to AE 6 (4.5%) 8 (6.0%) 4 (3.0%) + Total number of patients with dose modified/interrupted due to AE 23 (17.2%) 20 (14.9%) 26 (19.7%) + Total number of patients with treatment received for AE 33 (24.6%) 37 (27.6%) 33 (25.0%) + Total number of patients with all non-fatal AEs resolved 4 (3.0%) 5 (3.7%) 14 (10.6%) + Total number of patients with at least one non-fatal unresolved or ongoing AE 58 (43.3%) 56 (41.8%) 62 (47.0%) + Total number of patients with at least one serious AE 0 0 0 + Total number of patients with at least one related AE 37 (27.6%) 46 (34.3%) 50 (37.9%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet02.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet02.md new file mode 100644 index 0000000000..7ddd190a6a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet02.md @@ -0,0 +1,439 @@ +# tables/adverse-events/aet02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination All Patients + MedDRA Preferred Term (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 100 (74.6%) 98 (73.1%) 103 (78.0%) 301 (75.2%) + Overall total number of events 502 480 604 1586 + cl A.1 + Total number of patients with at least one adverse event 68 (50.7%) 58 (43.3%) 76 (57.6%) 202 (50.5%) + Total number of events 115 99 137 351 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) 128 (32.0%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) 122 (30.5%) + cl B.1 + Total number of patients with at least one adverse event 38 (28.4%) 37 (27.6%) 36 (27.3%) 111 (27.8%) + Total number of events 44 43 50 137 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) 111 (27.8%) + cl B.2 + Total number of patients with at least one adverse event 62 (46.3%) 56 (41.8%) 74 (56.1%) 192 (48.0%) + Total number of events 102 106 127 335 + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) 119 (29.8%) + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) 123 (30.8%) + cl C.1 + Total number of patients with at least one adverse event 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) + Total number of events 47 51 54 152 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) + cl C.2 + Total number of patients with at least one adverse event 28 (20.9%) 36 (26.9%) 48 (36.4%) 112 (28.0%) + Total number of events 39 40 57 136 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) 112 (28.0%) + cl D.1 + Total number of patients with at least one adverse event 64 (47.8%) 54 (40.3%) 68 (51.5%) 186 (46.5%) + Total number of events 106 84 114 304 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) 120 (30.0%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) 112 (28.0%) + cl D.2 + Total number of patients with at least one adverse event 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) + Total number of events 49 57 65 171 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) + +# tables/adverse-events/aet02.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination All Patients + MedDRA Preferred Term (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 100 (74.6%) 98 (73.1%) 103 (78.0%) 301 (75.2%) + Overall total number of events 502 480 604 1586 + cl A.1 + Total number of patients with at least one adverse event 68 (50.7%) 58 (43.3%) 76 (57.6%) 202 (50.5%) + Total number of events 115 99 137 351 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) 128 (32.0%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) 122 (30.5%) + cl B.2 + Total number of patients with at least one adverse event 62 (46.3%) 56 (41.8%) 74 (56.1%) 192 (48.0%) + Total number of events 102 106 127 335 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) 123 (30.8%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) 119 (29.8%) + cl D.1 + Total number of patients with at least one adverse event 64 (47.8%) 54 (40.3%) 68 (51.5%) 186 (46.5%) + Total number of events 106 84 114 304 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) 120 (30.0%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) 112 (28.0%) + cl D.2 + Total number of patients with at least one adverse event 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) + Total number of events 49 57 65 171 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) + cl C.2 + Total number of patients with at least one adverse event 28 (20.9%) 36 (26.9%) 48 (36.4%) 112 (28.0%) + Total number of events 39 40 57 136 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) 112 (28.0%) + cl B.1 + Total number of patients with at least one adverse event 38 (28.4%) 37 (27.6%) 36 (27.3%) 111 (27.8%) + Total number of events 44 43 50 137 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) 111 (27.8%) + cl C.1 + Total number of patients with at least one adverse event 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) + Total number of events 47 51 54 152 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) + +# tables/adverse-events/aet02.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination All Patients + MedDRA Preferred Term (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 100 (74.6%) 98 (73.1%) 103 (78.0%) 301 (75.2%) + Overall total number of events 502 480 604 1586 + cl A.1 + Total number of patients with at least one adverse event 68 (50.7%) 58 (43.3%) 76 (57.6%) 202 (50.5%) + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) 128 (32.0%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) 122 (30.5%) + Total number of events 115 99 137 351 + cl B.2 + Total number of patients with at least one adverse event 62 (46.3%) 56 (41.8%) 74 (56.1%) 192 (48.0%) + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) 123 (30.8%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) 119 (29.8%) + Total number of events 102 106 127 335 + cl D.1 + Total number of patients with at least one adverse event 64 (47.8%) 54 (40.3%) 68 (51.5%) 186 (46.5%) + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) 120 (30.0%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) 112 (28.0%) + Total number of events 106 84 114 304 + cl D.2 + Total number of patients with at least one adverse event 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) + Total number of events 49 57 65 171 + cl C.2 + Total number of patients with at least one adverse event 28 (20.9%) 36 (26.9%) 48 (36.4%) 112 (28.0%) + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) 112 (28.0%) + Total number of events 39 40 57 136 + cl B.1 + Total number of patients with at least one adverse event 38 (28.4%) 37 (27.6%) 36 (27.3%) 111 (27.8%) + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) 111 (27.8%) + Total number of events 44 43 50 137 + cl C.1 + Total number of patients with at least one adverse event 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) + Total number of events 47 51 54 152 + +# tables/adverse-events/aet02.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + High Level Term A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 100 (74.6%) 98 (73.1%) 103 (78.0%) + Overall total number of events 502 480 604 + cl A.1 + Total number of patients with at least one adverse event 68 (50.7%) 58 (43.3%) 76 (57.6%) + Total number of events 115 99 137 + hlt A.1.1.1 + Total number of patients with at least one adverse event 68 (50.7%) 58 (43.3%) 76 (57.6%) + Total number of events 115 99 137 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + Total number of patients with at least one adverse event 62 (46.3%) 56 (41.8%) 74 (56.1%) + Total number of events 102 106 127 + hlt B.2.2.3 + Total number of patients with at least one adverse event 38 (28.4%) 40 (29.9%) 45 (34.1%) + Total number of events 50 55 68 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + hlt B.2.1.2 + Total number of patients with at least one adverse event 39 (29.1%) 34 (25.4%) 46 (34.8%) + Total number of events 52 51 59 + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + Total number of patients with at least one adverse event 64 (47.8%) 54 (40.3%) 68 (51.5%) + Total number of events 106 84 114 + hlt D.1.1.1 + Total number of patients with at least one adverse event 42 (31.3%) 32 (23.9%) 46 (34.8%) + Total number of events 52 40 64 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + hlt D.1.1.4 + Total number of patients with at least one adverse event 38 (28.4%) 34 (25.4%) 40 (30.3%) + Total number of events 54 44 50 + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + Total number of patients with at least one adverse event 37 (27.6%) 46 (34.3%) 50 (37.9%) + Total number of events 49 57 65 + hlt D.2.1.5 + Total number of patients with at least one adverse event 37 (27.6%) 46 (34.3%) 50 (37.9%) + Total number of events 49 57 65 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + Total number of patients with at least one adverse event 28 (20.9%) 36 (26.9%) 48 (36.4%) + Total number of events 39 40 57 + hlt C.2.1.2 + Total number of patients with at least one adverse event 28 (20.9%) 36 (26.9%) 48 (36.4%) + Total number of events 39 40 57 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + Total number of patients with at least one adverse event 38 (28.4%) 37 (27.6%) 36 (27.3%) + Total number of events 44 43 50 + hlt B.1.1.1 + Total number of patients with at least one adverse event 38 (28.4%) 37 (27.6%) 36 (27.3%) + Total number of events 44 43 50 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + Total number of patients with at least one adverse event 36 (26.9%) 34 (25.4%) 36 (27.3%) + Total number of events 47 51 54 + hlt C.1.1.1 + Total number of patients with at least one adverse event 36 (26.9%) 34 (25.4%) 36 (27.3%) + Total number of events 47 51 54 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 100 (74.6%) 98 (73.1%) 103 (78.0%) + Total number of events 502 480 604 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v6 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 100 (74.6%) 98 (73.1%) 0 + Overall total number of events 502 480 0 + cl A.1 + Total number of patients with at least one adverse event 68 (50.7%) 58 (43.3%) 0 + Total number of events 115 99 0 + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 0 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 0 + cl B.2 + Total number of patients with at least one adverse event 62 (46.3%) 56 (41.8%) 0 + Total number of events 102 106 0 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 0 + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 0 + cl D.1 + Total number of patients with at least one adverse event 64 (47.8%) 54 (40.3%) 0 + Total number of events 106 84 0 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 0 + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 0 + cl D.2 + Total number of patients with at least one adverse event 37 (27.6%) 46 (34.3%) 0 + Total number of events 49 57 0 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 0 + cl B.1 + Total number of patients with at least one adverse event 38 (28.4%) 37 (27.6%) 0 + Total number of events 44 43 0 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 0 + cl C.1 + Total number of patients with at least one adverse event 36 (26.9%) 34 (25.4%) 0 + Total number of events 47 51 0 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 0 + cl C.2 + Total number of patients with at least one adverse event 28 (20.9%) 36 (26.9%) 0 + Total number of events 39 40 0 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 0 + +# tables/adverse-events/aet02.qmd result_v7 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v8 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + High Level Term A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + hlt A.1.1.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + hlt B.2.2.3 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + hlt B.2.1.2 + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + hlt D.1.1.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + hlt D.1.1.4 + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + hlt D.2.1.5 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + hlt C.2.1.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + hlt B.1.1.1 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + hlt C.1.1.1 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v9 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v10 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v11 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + cl B.2 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + cl D.2 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + +# tables/adverse-events/aet02.qmd result_v12 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet02.qmd result_v13 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 45 (33.6%) 31 (23.1%) 52 (39.4%) + cl B.2 + dcd B.2.2.3.1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + dcd D.1.1.1.1 42 (31.3%) 32 (23.9%) 46 (34.8%) + cl D.2 + dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet02_smq.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet02_smq.md new file mode 100644 index 0000000000..c1a2dac35e --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet02_smq.md @@ -0,0 +1,38 @@ +# tables/adverse-events/aet02_smq.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Standardized MedDRA Query ARM A ARM B ARM C + Dictionary-Derived Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 72 (53.7%) 79 (59.0%) 75 (56.8%) + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 72 (53.7%) 79 (59.0%) 75 (56.8%) + Total number of events 119 139 141 + dcd B.2.2.3.1 48 (35.8%) 54 (40.3%) 51 (38.6%) + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) + +# tables/adverse-events/aet02_smq.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Standardized MedDRA Query ARM A ARM B ARM C + Dictionary-Derived Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 95 (70.9%) 103 (76.9%) 108 (81.8%) + D.2.1.5.3/A.1.1.1.1 AESI + Total number of patients with at least one adverse event 74 (55.2%) 80 (59.7%) 87 (65.9%) + Total number of events 126 134 162 + dcd D.2.1.5.3 47 (35.1%) 58 (43.3%) 57 (43.2%) + dcd A.1.1.1.1 50 (37.3%) 45 (33.6%) 63 (47.7%) + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 72 (53.7%) 79 (59.0%) 75 (56.8%) + Total number of events 119 139 141 + dcd B.2.2.3.1 48 (35.8%) 54 (40.3%) 51 (38.6%) + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) + non observed SMQ02NAM level(BROAD) + Total number of patients with at least one adverse event 0 0 0 + Total number of events 0 0 0 + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet03.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet03.md new file mode 100644 index 0000000000..77e90a9f7b --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet03.md @@ -0,0 +1,83 @@ +# tables/adverse-events/aet03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Severity/Intensity (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any Intensity - 100 (74.6%) 98 (73.1%) 103 (78.0%) + MILD 5 (3.7%) 7 (5.2%) 4 (3.0%) + MODERATE 17 (12.7%) 21 (15.7%) 20 (15.2%) + SEVERE 77 (57.5%) 69 (51.5%) 77 (58.3%) + LIFE THREATENING 1 (0.7%) 1 (0.7%) 2 (1.5%) + cl A.1 + - Any Intensity - 68 (50.7%) 58 (43.3%) 76 (57.6%) + MILD 27 (20.1%) 19 (14.2%) 34 (25.8%) + MODERATE 40 (29.9%) 39 (29.1%) 41 (31.1%) + LIFE THREATENING 1 (0.7%) 0 1 (0.8%) + dcd A.1.1.1.1 + - Any Intensity - 45 (33.6%) 31 (23.1%) 52 (39.4%) + MILD 45 (33.6%) 31 (23.1%) 51 (38.6%) + LIFE THREATENING 0 0 1 (0.8%) + dcd A.1.1.1.2 + - Any Intensity - 41 (30.6%) 39 (29.1%) 42 (31.8%) + MODERATE 40 (29.9%) 39 (29.1%) 41 (31.1%) + LIFE THREATENING 1 (0.7%) 0 1 (0.8%) + cl B.2 + - Any Intensity - 62 (46.3%) 56 (41.8%) 74 (56.1%) + MILD 23 (17.2%) 22 (16.4%) 28 (21.2%) + MODERATE 38 (28.4%) 34 (25.4%) 45 (34.1%) + LIFE THREATENING 1 (0.7%) 0 1 (0.8%) + dcd B.2.2.3.1 + - Any Intensity - 38 (28.4%) 40 (29.9%) 45 (34.1%) + MILD 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Intensity - 39 (29.1%) 34 (25.4%) 46 (34.8%) + MODERATE 38 (28.4%) 34 (25.4%) 45 (34.1%) + LIFE THREATENING 1 (0.7%) 0 1 (0.8%) + cl D.1 + - Any Intensity - 64 (47.8%) 54 (40.3%) 68 (51.5%) + MODERATE 21 (15.7%) 22 (16.4%) 22 (16.7%) + SEVERE 42 (31.3%) 32 (23.9%) 44 (33.3%) + LIFE THREATENING 1 (0.7%) 0 2 (1.5%) + dcd D.1.1.1.1 + - Any Intensity - 42 (31.3%) 32 (23.9%) 46 (34.8%) + SEVERE 42 (31.3%) 32 (23.9%) 45 (34.1%) + LIFE THREATENING 0 0 1 (0.8%) + dcd D.1.1.4.2 + - Any Intensity - 38 (28.4%) 34 (25.4%) 40 (30.3%) + MODERATE 37 (27.6%) 34 (25.4%) 39 (29.5%) + LIFE THREATENING 1 (0.7%) 0 1 (0.8%) + cl D.2 + - Any Intensity - 37 (27.6%) 46 (34.3%) 50 (37.9%) + MILD 37 (27.6%) 46 (34.3%) 49 (37.1%) + LIFE THREATENING 0 0 1 (0.8%) + dcd D.2.1.5.3 + - Any Intensity - 37 (27.6%) 46 (34.3%) 50 (37.9%) + MILD 37 (27.6%) 46 (34.3%) 49 (37.1%) + LIFE THREATENING 0 0 1 (0.8%) + cl C.2 + - Any Intensity - 28 (20.9%) 36 (26.9%) 48 (36.4%) + MODERATE 28 (20.9%) 36 (26.9%) 47 (35.6%) + LIFE THREATENING 0 0 1 (0.8%) + dcd C.2.1.2.1 + - Any Intensity - 28 (20.9%) 36 (26.9%) 48 (36.4%) + MODERATE 28 (20.9%) 36 (26.9%) 47 (35.6%) + LIFE THREATENING 0 0 1 (0.8%) + cl B.1 + - Any Intensity - 38 (28.4%) 37 (27.6%) 36 (27.3%) + SEVERE 38 (28.4%) 36 (26.9%) 36 (27.3%) + LIFE THREATENING 0 1 (0.7%) 0 + dcd B.1.1.1.1 + - Any Intensity - 38 (28.4%) 37 (27.6%) 36 (27.3%) + SEVERE 38 (28.4%) 36 (26.9%) 36 (27.3%) + LIFE THREATENING 0 1 (0.7%) 0 + cl C.1 + - Any Intensity - 36 (26.9%) 34 (25.4%) 36 (27.3%) + SEVERE 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Intensity - 36 (26.9%) 34 (25.4%) 36 (27.3%) + SEVERE 36 (26.9%) 34 (25.4%) 36 (27.3%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet04.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet04.md new file mode 100644 index 0000000000..ca812e9623 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet04.md @@ -0,0 +1,847 @@ +# tables/adverse-events/aet04.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-4 26 (19.4%) 31 (23.1%) 29 (22.0%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 3-4 22 (16.4%) 22 (16.4%) 22 (16.7%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 3-4 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet04.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 0 0 + Grade 1-2 10 (7.5%) 0 0 + 1 5 (3.7%) 0 0 + 2 5 (3.7%) 0 0 + Grade 3-4 26 (19.4%) 0 0 + 3 13 (9.7%) 0 0 + 4 13 (9.7%) 0 0 + Grade 5 64 (47.8%) 0 0 + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 0 0 + Grade 1-2 68 (50.7%) 0 0 + 1 27 (20.1%) 0 0 + 2 41 (30.6%) 0 0 + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 0 0 + Grade 1-2 45 (33.6%) 0 0 + 1 45 (33.6%) 0 0 + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 0 0 + Grade 1-2 41 (30.6%) 0 0 + 2 41 (30.6%) 0 0 + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 0 0 + Grade 3-4 22 (16.4%) 0 0 + 3 22 (16.4%) 0 0 + Grade 5 42 (31.3%) 0 0 + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 0 0 + Grade 5 42 (31.3%) 0 0 + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 0 0 + Grade 3-4 38 (28.4%) 0 0 + 3 38 (28.4%) 0 0 + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 0 0 + Grade 1-2 23 (17.2%) 0 0 + 1 23 (17.2%) 0 0 + Grade 3-4 39 (29.1%) 0 0 + 3 39 (29.1%) 0 0 + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 0 0 + Grade 3-4 39 (29.1%) 0 0 + 3 39 (29.1%) 0 0 + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 0 0 + Grade 1-2 38 (28.4%) 0 0 + 1 38 (28.4%) 0 0 + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 0 0 + Grade 5 38 (28.4%) 0 0 + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 0 0 + Grade 5 38 (28.4%) 0 0 + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 0 0 + Grade 1-2 37 (27.6%) 0 0 + 1 37 (27.6%) 0 0 + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 0 0 + Grade 1-2 37 (27.6%) 0 0 + 1 37 (27.6%) 0 0 + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 0 0 + Grade 3-4 36 (26.9%) 0 0 + 4 36 (26.9%) 0 0 + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 0 0 + Grade 3-4 36 (26.9%) 0 0 + 4 36 (26.9%) 0 0 + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 0 0 + Grade 1-2 28 (20.9%) 0 0 + 2 28 (20.9%) 0 0 + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 0 0 + Grade 1-2 28 (20.9%) 0 0 + 2 28 (20.9%) 0 0 + +# tables/adverse-events/aet04.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-4 26 (19.4%) 31 (23.1%) 29 (22.0%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 1 0 0 0 + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + 2 0 0 0 + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + 4 0 0 0 + Grade 5 0 0 0 + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + 4 0 0 0 + Grade 5 0 0 0 + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 22 (16.4%) 22 (16.4%) 22 (16.7%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + 4 0 0 0 + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + 4 0 0 0 + Grade 5 0 0 0 + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 1 0 0 0 + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 1 0 0 0 + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 0 0 0 + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 0 0 0 + 3 0 0 0 + 4 0 0 0 + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 3 0 0 0 + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 5 0 0 0 + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 1-2 0 0 0 + 1 0 0 0 + 2 0 0 0 + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 3 0 0 0 + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 5 0 0 0 + +# tables/adverse-events/aet04.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-5 90 (67.2%) 83 (61.9%) 93 (70.5%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + Grade 3-5 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 3-5 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 3-5 64 (47.8%) 54 (40.3%) 68 (51.5%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 3-5 42 (31.3%) 32 (23.9%) 46 (34.8%) + 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 3-5 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 3-5 38 (28.4%) 37 (27.6%) 36 (27.3%) + 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 3-5 38 (28.4%) 37 (27.6%) 36 (27.3%) + 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-5 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-5 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet04.qmd result_v6 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-4 26 (19.4%) 31 (23.1%) 29 (22.0%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 3-4 22 (16.4%) 22 (16.4%) 22 (16.7%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 3-4 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet04.qmd result_v8 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-4 26 (19.4%) 31 (23.1%) 29 (22.0%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 3-4 22 (16.4%) 22 (16.4%) 22 (16.7%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 3-4 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet04.qmd result_v9 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-4 26 (19.4%) 31 (23.1%) 29 (22.0%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 3-4 22 (16.4%) 22 (16.4%) 22 (16.7%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 3-4 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + +# tables/adverse-events/aet04.qmd result_v11 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class + MedDRA Preferred Term A: Drug X B: Placebo C: Combination + Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + - Any adverse events - + - Any Grade - 100 (74.6%) 98 (73.1%) 103 (78.0%) + Grade 1-2 10 (7.5%) 15 (11.2%) 10 (7.6%) + 1 5 (3.7%) 7 (5.2%) 4 (3.0%) + 2 5 (3.7%) 8 (6.0%) 6 (4.5%) + Grade 3-4 26 (19.4%) 31 (23.1%) 29 (22.0%) + 3 13 (9.7%) 13 (9.7%) 14 (10.6%) + 4 13 (9.7%) 18 (13.4%) 15 (11.4%) + Grade 5 64 (47.8%) 52 (38.8%) 64 (48.5%) + cl A.1 + - Overall - + - Any Grade - 68 (50.7%) 58 (43.3%) 76 (57.6%) + Grade 1-2 68 (50.7%) 58 (43.3%) 76 (57.6%) + 1 27 (20.1%) 19 (14.2%) 34 (25.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + dcd A.1.1.1.1 + - Any Grade - 45 (33.6%) 31 (23.1%) 52 (39.4%) + Grade 1-2 45 (33.6%) 31 (23.1%) 52 (39.4%) + 1 45 (33.6%) 31 (23.1%) 52 (39.4%) + dcd A.1.1.1.2 + - Any Grade - 41 (30.6%) 39 (29.1%) 42 (31.8%) + Grade 1-2 41 (30.6%) 39 (29.1%) 42 (31.8%) + 2 41 (30.6%) 39 (29.1%) 42 (31.8%) + cl B.2 + - Overall - + - Any Grade - 62 (46.3%) 56 (41.8%) 74 (56.1%) + Grade 1-2 23 (17.2%) 22 (16.4%) 28 (21.2%) + 1 23 (17.2%) 22 (16.4%) 28 (21.2%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + dcd B.2.2.3.1 + - Any Grade - 38 (28.4%) 40 (29.9%) 45 (34.1%) + Grade 1-2 38 (28.4%) 40 (29.9%) 45 (34.1%) + 1 38 (28.4%) 40 (29.9%) 45 (34.1%) + dcd B.2.1.2.1 + - Any Grade - 39 (29.1%) 34 (25.4%) 46 (34.8%) + Grade 3-4 39 (29.1%) 34 (25.4%) 46 (34.8%) + 3 39 (29.1%) 34 (25.4%) 46 (34.8%) + cl D.1 + - Overall - + - Any Grade - 64 (47.8%) 54 (40.3%) 68 (51.5%) + Grade 3-4 22 (16.4%) 22 (16.4%) 22 (16.7%) + 3 22 (16.4%) 22 (16.4%) 22 (16.7%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.1.1 + - Any Grade - 42 (31.3%) 32 (23.9%) 46 (34.8%) + Grade 5 42 (31.3%) 32 (23.9%) 46 (34.8%) + dcd D.1.1.4.2 + - Any Grade - 38 (28.4%) 34 (25.4%) 40 (30.3%) + Grade 3-4 38 (28.4%) 34 (25.4%) 40 (30.3%) + 3 38 (28.4%) 34 (25.4%) 40 (30.3%) + cl D.2 + - Overall - + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + dcd D.2.1.5.3 + - Any Grade - 37 (27.6%) 46 (34.3%) 50 (37.9%) + Grade 1-2 37 (27.6%) 46 (34.3%) 50 (37.9%) + 1 37 (27.6%) 46 (34.3%) 50 (37.9%) + cl C.2 + - Overall - + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + dcd C.2.1.2.1 + - Any Grade - 28 (20.9%) 36 (26.9%) 48 (36.4%) + Grade 1-2 28 (20.9%) 36 (26.9%) 48 (36.4%) + 2 28 (20.9%) 36 (26.9%) 48 (36.4%) + cl B.1 + - Overall - + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + dcd B.1.1.1.1 + - Any Grade - 38 (28.4%) 37 (27.6%) 36 (27.3%) + Grade 5 38 (28.4%) 37 (27.6%) 36 (27.3%) + cl C.1 + - Overall - + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + dcd C.1.1.1.3 + - Any Grade - 36 (26.9%) 34 (25.4%) 36 (27.3%) + Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) + 4 36 (26.9%) 34 (25.4%) 36 (27.3%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet04_pi.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet04_pi.md new file mode 100644 index 0000000000..a51df8471d --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet04_pi.md @@ -0,0 +1,150 @@ +# tables/adverse-events/aet04_pi.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 37 0 0 34 0 0 48 0 0 + dcd A.1.1.1.2 36 0 0 36 0 0 38 0 0 + cl B.2 + dcd B.2.2.3.1 36 0 0 40 0 0 39 0 0 + dcd B.2.1.2.1 37 37 0 33 33 0 39 39 0 + cl D.1 + dcd D.1.1.1.1 37 0 37 31 0 31 39 0 39 + dcd D.1.1.4.2 36 36 0 31 31 0 38 38 0 + cl D.2 + dcd D.2.1.5.3 35 0 0 43 0 0 43 0 0 + cl B.1 + dcd B.1.1.1.1 35 0 35 37 0 37 33 0 33 + cl C.2 + dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 + cl C.1 + dcd C.1.1.1.3 32 32 0 34 34 0 33 33 0 + +# tables/adverse-events/aet04_pi.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 37 0 0 34 0 0 48 0 0 + cl D.1 + dcd D.1.1.1.1 37 0 37 31 0 31 39 0 39 + +# tables/adverse-events/aet04_pi.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 37 0 0 34 0 0 48 0 0 + cl B.2 + dcd B.2.2.3.1 36 0 0 40 0 0 39 0 0 + cl D.2 + dcd D.2.1.5.3 35 0 0 43 0 0 43 0 0 + cl C.2 + dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 + +# tables/adverse-events/aet04_pi.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl C.2 + dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 + +# tables/adverse-events/aet04_pi.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 37 0 0 34 0 0 48 0 0 + cl B.2 + dcd B.2.2.3.1 36 0 0 40 0 0 39 0 0 + dcd B.2.1.2.1 37 37 0 33 33 0 39 39 0 + cl D.1 + dcd D.1.1.4.2 36 36 0 31 31 0 38 38 0 + cl D.2 + dcd D.2.1.5.3 35 0 0 43 0 0 43 0 0 + cl C.2 + dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 + cl C.1 + dcd C.1.1.1.3 32 32 0 34 34 0 33 33 0 + +# tables/adverse-events/aet04_pi.qmd result_v6 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 1-2 (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 1-2 (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 1-2 (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 37 37 0 0 34 34 0 0 48 48 0 0 + cl B.2 + dcd B.2.2.3.1 36 36 0 0 40 40 0 0 39 39 0 0 + cl D.2 + dcd D.2.1.5.3 35 35 0 0 43 43 0 0 43 43 0 0 + cl C.2 + dcd C.2.1.2.1 26 26 0 0 36 36 0 0 42 42 0 0 + +# tables/adverse-events/aet04_pi.qmd result_v7 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA System Organ Class Any Grade (%) Grade 3-4 (%) Grade 3-5 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 3-5 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 3-5 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + cl A.1 + dcd A.1.1.1.1 37 0 0 0 34 0 0 0 48 0 0 0 + cl B.2 + dcd B.2.2.3.1 36 0 0 0 40 0 0 0 39 0 0 0 + cl D.2 + dcd D.2.1.5.3 35 0 0 0 43 0 0 0 43 0 0 0 + cl C.2 + dcd C.2.1.2.1 26 0 0 0 36 0 0 0 42 0 0 0 + +# tables/adverse-events/aet04_pi.qmd result_v8 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) Any Grade (%) Grade 3-4 (%) Grade 5 (%) + MedDRA Preferred Term (N=134) (N=134) (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + dcd D.2.1.5.3 35 0 0 43 0 0 43 0 0 + dcd A.1.1.1.1 37 0 0 34 0 0 48 0 0 + dcd B.2.2.3.1 36 0 0 40 0 0 39 0 0 + dcd A.1.1.1.2 36 0 0 36 0 0 38 0 0 + dcd B.2.1.2.1 37 37 0 33 33 0 39 39 0 + dcd D.1.1.1.1 37 0 37 31 0 31 39 0 39 + dcd D.1.1.4.2 36 36 0 31 31 0 38 38 0 + dcd B.1.1.1.1 35 0 35 37 0 37 33 0 33 + dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 + dcd C.1.1.1.3 32 32 0 34 34 0 33 33 0 + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet05.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet05.md new file mode 100644 index 0000000000..ec7095df6b --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet05.md @@ -0,0 +1,26 @@ +# tables/adverse-events/aet05.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total patient-years at risk 162.4 103.9 172.6 + Number of adverse events observed 78 104 67 + AE rate per 100 patient-years 48.03 100.14 38.82 + 95% CI (37.37, 58.69) (80.89, 119.38) (29.53, 48.12) + +# tables/adverse-events/aet05.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total patient-years at risk 162.4 103.9 172.6 + Number of adverse events observed 78 104 67 + AE rate per 100 patient-years 48.03 100.14 38.82 + 95% CI (37.97, 59.94) (81.82, 121.34) (30.09, 49.30) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet05_all.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet05_all.md new file mode 100644 index 0000000000..ea2f254de3 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet05_all.md @@ -0,0 +1,26 @@ +# tables/adverse-events/aet05_all.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total patient-years at risk 337.9 331.8 341.6 + Number of adverse events observed 343 380 397 + AE rate per 100 patient-years 101.51 114.51 116.22 + 95% CI (90.77, 112.25) (103.00, 126.02) (104.79, 127.65) + +# tables/adverse-events/aet05_all.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total patient-years at risk 337.9 331.8 341.6 + Number of adverse events observed 343 380 397 + AE rate per 100 patient-years 101.51 114.51 116.22 + 95% CI (91.05, 112.84) (103.28, 126.62) (105.07, 128.24) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet06.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet06.md new file mode 100644 index 0000000000..6dd69395b6 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet06.md @@ -0,0 +1,242 @@ +# tables/adverse-events/aet06.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Body System or Organ Class F M F M F M + Dictionary-Derived Term (N=79) (N=55) (N=82) (N=52) (N=70) (N=62) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 72 (91.1%) 50 (90.9%) 77 (93.9%) 46 (88.5%) 65 (92.9%) 55 (88.7%) + Overall total number of events 377 232 419 203 378 325 + cl A.1 + Total number of patients with at least one adverse event 53 (67.1%) 25 (45.5%) 51 (62.2%) 24 (46.2%) 43 (61.4%) 46 (74.2%) + Total number of events 85 47 93 37 86 74 + dcd A.1.1.1.1 34 (43.0%) 16 (29.1%) 31 (37.8%) 14 (26.9%) 33 (47.1%) 30 (48.4%) + dcd A.1.1.1.2 32 (40.5%) 16 (29.1%) 33 (40.2%) 15 (28.8%) 24 (34.3%) 26 (41.9%) + cl B.2 + Total number of patients with at least one adverse event 46 (58.2%) 33 (60.0%) 45 (54.9%) 29 (55.8%) 44 (62.9%) 41 (66.1%) + Total number of events 81 48 86 52 64 79 + dcd B.2.2.3.1 30 (38.0%) 18 (32.7%) 32 (39.0%) 22 (42.3%) 26 (37.1%) 25 (40.3%) + dcd B.2.1.2.1 29 (36.7%) 20 (36.4%) 30 (36.6%) 14 (26.9%) 22 (31.4%) 30 (48.4%) + cl D.1 + Total number of patients with at least one adverse event 45 (57.0%) 34 (61.8%) 40 (48.8%) 27 (51.9%) 41 (58.6%) 39 (62.9%) + Total number of events 72 55 64 42 73 62 + dcd D.1.1.1.1 25 (31.6%) 25 (45.5%) 29 (35.4%) 13 (25.0%) 27 (38.6%) 24 (38.7%) + dcd D.1.1.4.2 30 (38.0%) 18 (32.7%) 22 (26.8%) 20 (38.5%) 27 (38.6%) 23 (37.1%) + cl D.2 + Total number of patients with at least one adverse event 26 (32.9%) 21 (38.2%) 40 (48.8%) 18 (34.6%) 34 (48.6%) 23 (37.1%) + Total number of events 35 27 49 23 43 31 + dcd D.2.1.5.3 26 (32.9%) 21 (38.2%) 40 (48.8%) 18 (34.6%) 34 (48.6%) 23 (37.1%) + cl B.1 + Total number of patients with at least one adverse event 28 (35.4%) 19 (34.5%) 33 (40.2%) 16 (30.8%) 24 (34.3%) 19 (30.6%) + Total number of events 33 23 36 24 35 27 + dcd B.1.1.1.1 28 (35.4%) 19 (34.5%) 33 (40.2%) 16 (30.8%) 24 (34.3%) 19 (30.6%) + cl C.2 + Total number of patients with at least one adverse event 23 (29.1%) 12 (21.8%) 36 (43.9%) 12 (23.1%) 30 (42.9%) 25 (40.3%) + Total number of events 32 16 39 14 33 32 + dcd C.2.1.2.1 23 (29.1%) 12 (21.8%) 36 (43.9%) 12 (23.1%) 30 (42.9%) 25 (40.3%) + cl C.1 + Total number of patients with at least one adverse event 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + Total number of events 39 16 52 11 44 20 + dcd C.1.1.1.3 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + +# tables/adverse-events/aet06.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Body System or Organ Class LOW MEDIUM HIGH LOW MEDIUM HIGH LOW MEDIUM HIGH + Dictionary-Derived Term (N=50) (N=37) (N=47) (N=45) (N=56) (N=33) (N=40) (N=42) (N=50) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 46 (92.0%) 34 (91.9%) 42 (89.4%) 40 (88.9%) 53 (94.6%) 30 (90.9%) 36 (90.0%) 39 (92.9%) 45 (90.0%) + Overall total number of events 248 166 195 196 261 165 220 258 225 + cl A.1 + Total number of patients with at least one adverse event 31 (62.0%) 19 (51.4%) 28 (59.6%) 25 (55.6%) 31 (55.4%) 19 (57.6%) 28 (70.0%) 30 (71.4%) 31 (62.0%) + Total number of events 53 34 45 46 54 30 61 51 48 + dcd A.1.1.1.1 22 (44.0%) 10 (27.0%) 18 (38.3%) 14 (31.1%) 20 (35.7%) 11 (33.3%) 21 (52.5%) 24 (57.1%) 18 (36.0%) + dcd A.1.1.1.2 17 (34.0%) 13 (35.1%) 18 (38.3%) 18 (40.0%) 18 (32.1%) 12 (36.4%) 18 (45.0%) 14 (33.3%) 18 (36.0%) + cl B.2 + Total number of patients with at least one adverse event 34 (68.0%) 21 (56.8%) 24 (51.1%) 23 (51.1%) 33 (58.9%) 18 (54.5%) 24 (60.0%) 27 (64.3%) 34 (68.0%) + Total number of events 53 37 39 40 61 37 40 47 56 + dcd B.2.2.3.1 21 (42.0%) 13 (35.1%) 14 (29.8%) 18 (40.0%) 22 (39.3%) 14 (42.4%) 16 (40.0%) 15 (35.7%) 20 (40.0%) + dcd B.2.1.2.1 21 (42.0%) 11 (29.7%) 17 (36.2%) 11 (24.4%) 21 (37.5%) 12 (36.4%) 13 (32.5%) 17 (40.5%) 22 (44.0%) + cl D.1 + Total number of patients with at least one adverse event 34 (68.0%) 21 (56.8%) 24 (51.1%) 18 (40.0%) 33 (58.9%) 16 (48.5%) 25 (62.5%) 31 (73.8%) 24 (48.0%) + Total number of events 51 35 41 27 49 30 45 53 37 + dcd D.1.1.1.1 19 (38.0%) 16 (43.2%) 15 (31.9%) 13 (28.9%) 19 (33.9%) 10 (30.3%) 14 (35.0%) 22 (52.4%) 15 (30.0%) + dcd D.1.1.4.2 21 (42.0%) 9 (24.3%) 18 (38.3%) 9 (20.0%) 20 (35.7%) 13 (39.4%) 17 (42.5%) 18 (42.9%) 15 (30.0%) + cl D.2 + Total number of patients with at least one adverse event 20 (40.0%) 12 (32.4%) 15 (31.9%) 19 (42.2%) 22 (39.3%) 17 (51.5%) 13 (32.5%) 23 (54.8%) 21 (42.0%) + Total number of events 27 13 22 23 26 23 17 33 24 + dcd D.2.1.5.3 20 (40.0%) 12 (32.4%) 15 (31.9%) 19 (42.2%) 22 (39.3%) 17 (51.5%) 13 (32.5%) 23 (54.8%) 21 (42.0%) + cl B.1 + Total number of patients with at least one adverse event 14 (28.0%) 14 (37.8%) 19 (40.4%) 15 (33.3%) 24 (42.9%) 10 (30.3%) 14 (35.0%) 15 (35.7%) 14 (28.0%) + Total number of events 16 19 21 18 25 17 19 25 18 + dcd B.1.1.1.1 14 (28.0%) 14 (37.8%) 19 (40.4%) 15 (33.3%) 24 (42.9%) 10 (30.3%) 14 (35.0%) 15 (35.7%) 14 (28.0%) + cl C.2 + Total number of patients with at least one adverse event 18 (36.0%) 8 (21.6%) 9 (19.1%) 15 (33.3%) 22 (39.3%) 11 (33.3%) 18 (45.0%) 17 (40.5%) 20 (40.0%) + Total number of events 27 9 12 18 23 12 20 20 25 + dcd C.2.1.2.1 18 (36.0%) 8 (21.6%) 9 (19.1%) 15 (33.3%) 22 (39.3%) 11 (33.3%) 18 (45.0%) 17 (40.5%) 20 (40.0%) + cl C.1 + Total number of patients with at least one adverse event 17 (34.0%) 14 (37.8%) 12 (25.5%) 17 (37.8%) 17 (30.4%) 12 (36.4%) 12 (30.0%) 17 (40.5%) 14 (28.0%) + Total number of events 21 19 15 24 23 16 18 29 17 + dcd C.1.1.1.3 17 (34.0%) 14 (37.8%) 12 (25.5%) 17 (37.8%) 17 (30.4%) 12 (36.4%) 12 (30.0%) 17 (40.5%) 14 (28.0%) + +# tables/adverse-events/aet06.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Body System or Organ Class <18.5 18.5 - 24.9 25 - 29.9 >30 <18.5 18.5 - 24.9 25 - 29.9 >30 <18.5 18.5 - 24.9 25 - 29.9 >30 + Dictionary-Derived Term (N=44) (N=17) (N=11) (N=62) (N=37) (N=18) (N=10) (N=69) (N=28) (N=20) (N=18) (N=66) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 41 (93.2%) 14 (82.4%) 11 (100%) 56 (90.3%) 35 (94.6%) 16 (88.9%) 9 (90.0%) 63 (91.3%) 25 (89.3%) 19 (95.0%) 15 (83.3%) 61 (92.4%) + Overall total number of events 186 80 66 277 174 89 47 312 137 129 100 337 + cl A.1 + Total number of patients with at least one adverse event 23 (52.3%) 12 (70.6%) 7 (63.6%) 36 (58.1%) 19 (51.4%) 10 (55.6%) 6 (60.0%) 40 (58.0%) 16 (57.1%) 13 (65.0%) 14 (77.8%) 46 (69.7%) + Total number of events 38 22 13 59 35 22 6 67 30 23 30 77 + dcd A.1.1.1.1 14 (31.8%) 7 (41.2%) 3 (27.3%) 26 (41.9%) 12 (32.4%) 6 (33.3%) 4 (40.0%) 23 (33.3%) 12 (42.9%) 7 (35.0%) 13 (72.2%) 31 (47.0%) + dcd A.1.1.1.2 15 (34.1%) 8 (47.1%) 5 (45.5%) 20 (32.3%) 12 (32.4%) 8 (44.4%) 2 (20.0%) 26 (37.7%) 9 (32.1%) 7 (35.0%) 7 (38.9%) 27 (40.9%) + cl B.2 + Total number of patients with at least one adverse event 23 (52.3%) 10 (58.8%) 8 (72.7%) 38 (61.3%) 21 (56.8%) 8 (44.4%) 7 (70.0%) 38 (55.1%) 16 (57.1%) 16 (80.0%) 12 (66.7%) 41 (62.1%) + Total number of events 37 19 12 61 41 18 12 67 28 28 18 69 + dcd B.2.2.3.1 13 (29.5%) 7 (41.2%) 6 (54.5%) 22 (35.5%) 14 (37.8%) 7 (38.9%) 6 (60.0%) 27 (39.1%) 7 (25.0%) 13 (65.0%) 5 (27.8%) 26 (39.4%) + dcd B.2.1.2.1 14 (31.8%) 8 (47.1%) 4 (36.4%) 23 (37.1%) 14 (37.8%) 6 (33.3%) 4 (40.0%) 20 (29.0%) 13 (46.4%) 8 (40.0%) 8 (44.4%) 23 (34.8%) + cl D.1 + Total number of patients with at least one adverse event 24 (54.5%) 9 (52.9%) 8 (72.7%) 38 (61.3%) 18 (48.6%) 5 (27.8%) 7 (70.0%) 37 (53.6%) 15 (53.6%) 12 (60.0%) 11 (61.1%) 42 (63.6%) + Total number of events 38 11 17 61 30 11 14 51 30 23 16 66 + dcd D.1.1.1.1 13 (29.5%) 7 (41.2%) 7 (63.6%) 23 (37.1%) 13 (35.1%) 3 (16.7%) 4 (40.0%) 22 (31.9%) 12 (42.9%) 6 (30.0%) 8 (44.4%) 25 (37.9%) + dcd D.1.1.4.2 16 (36.4%) 4 (23.5%) 6 (54.5%) 22 (35.5%) 10 (27.0%) 4 (22.2%) 5 (50.0%) 23 (33.3%) 10 (35.7%) 9 (45.0%) 6 (33.3%) 25 (37.9%) + cl D.2 + Total number of patients with at least one adverse event 14 (31.8%) 7 (41.2%) 5 (45.5%) 21 (33.9%) 14 (37.8%) 10 (55.6%) 4 (40.0%) 30 (43.5%) 13 (46.4%) 10 (50.0%) 7 (38.9%) 27 (40.9%) + Total number of events 20 7 10 25 17 14 5 36 18 15 10 31 + dcd D.2.1.5.3 14 (31.8%) 7 (41.2%) 5 (45.5%) 21 (33.9%) 14 (37.8%) 10 (55.6%) 4 (40.0%) 30 (43.5%) 13 (46.4%) 10 (50.0%) 7 (38.9%) 27 (40.9%) + cl B.1 + Total number of patients with at least one adverse event 17 (38.6%) 5 (29.4%) 7 (63.6%) 18 (29.0%) 14 (37.8%) 8 (44.4%) 4 (40.0%) 23 (33.3%) 7 (25.0%) 10 (50.0%) 7 (38.9%) 19 (28.8%) + Total number of events 22 5 7 22 16 11 4 29 11 12 8 31 + dcd B.1.1.1.1 17 (38.6%) 5 (29.4%) 7 (63.6%) 18 (29.0%) 14 (37.8%) 8 (44.4%) 4 (40.0%) 23 (33.3%) 7 (25.0%) 10 (50.0%) 7 (38.9%) 19 (28.8%) + cl C.2 + Total number of patients with at least one adverse event 14 (31.8%) 4 (23.5%) 2 (18.2%) 15 (24.2%) 15 (40.5%) 5 (27.8%) 4 (40.0%) 24 (34.8%) 10 (35.7%) 13 (65.0%) 8 (44.4%) 24 (36.4%) + Total number of events 17 9 3 19 15 6 5 27 12 16 9 28 + dcd C.2.1.2.1 14 (31.8%) 4 (23.5%) 2 (18.2%) 15 (24.2%) 15 (40.5%) 5 (27.8%) 4 (40.0%) 24 (34.8%) 10 (35.7%) 13 (65.0%) 8 (44.4%) 24 (36.4%) + cl C.1 + Total number of patients with at least one adverse event 11 (25.0%) 4 (23.5%) 4 (36.4%) 24 (38.7%) 13 (35.1%) 6 (33.3%) 1 (10.0%) 26 (37.7%) 6 (21.4%) 7 (35.0%) 6 (33.3%) 24 (36.4%) + Total number of events 14 7 4 30 20 7 1 35 8 12 9 35 + dcd C.1.1.1.3 11 (25.0%) 4 (23.5%) 4 (36.4%) 24 (38.7%) 13 (35.1%) 6 (33.3%) 1 (10.0%) 26 (37.7%) 6 (21.4%) 7 (35.0%) 6 (33.3%) 24 (36.4%) + +# tables/adverse-events/aet06.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Body System or Organ Class WHITE NON-WHITE WHITE NON-WHITE WHITE NON-WHITE + Dictionary-Derived Term (N=27) (N=107) (N=26) (N=108) (N=21) (N=111) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 26 (96.3%) 96 (89.7%) 25 (96.2%) 98 (90.7%) 21 (100%) 99 (89.2%) + Overall total number of events 109 500 144 478 114 589 + cl A.1 + Total number of patients with at least one adverse event 16 (59.3%) 62 (57.9%) 21 (80.8%) 54 (50.0%) 15 (71.4%) 74 (66.7%) + Total number of events 30 102 37 93 25 135 + dcd A.1.1.1.1 9 (33.3%) 41 (38.3%) 14 (53.8%) 31 (28.7%) 10 (47.6%) 53 (47.7%) + dcd A.1.1.1.2 11 (40.7%) 37 (34.6%) 13 (50.0%) 35 (32.4%) 9 (42.9%) 41 (36.9%) + cl B.2 + Total number of patients with at least one adverse event 15 (55.6%) 64 (59.8%) 16 (61.5%) 58 (53.7%) 12 (57.1%) 73 (65.8%) + Total number of events 18 111 28 110 17 126 + dcd B.2.2.3.1 4 (14.8%) 44 (41.1%) 10 (38.5%) 44 (40.7%) 5 (23.8%) 46 (41.4%) + dcd B.2.1.2.1 12 (44.4%) 37 (34.6%) 9 (34.6%) 35 (32.4%) 7 (33.3%) 45 (40.5%) + cl D.1 + Total number of patients with at least one adverse event 18 (66.7%) 61 (57.0%) 15 (57.7%) 52 (48.1%) 14 (66.7%) 66 (59.5%) + Total number of events 27 100 23 83 27 108 + dcd D.1.1.1.1 11 (40.7%) 39 (36.4%) 14 (53.8%) 28 (25.9%) 12 (57.1%) 39 (35.1%) + dcd D.1.1.4.2 11 (40.7%) 37 (34.6%) 7 (26.9%) 35 (32.4%) 9 (42.9%) 41 (36.9%) + cl D.2 + Total number of patients with at least one adverse event 6 (22.2%) 41 (38.3%) 15 (57.7%) 43 (39.8%) 9 (42.9%) 48 (43.2%) + Total number of events 6 56 18 54 12 62 + dcd D.2.1.5.3 6 (22.2%) 41 (38.3%) 15 (57.7%) 43 (39.8%) 9 (42.9%) 48 (43.2%) + cl B.1 + Total number of patients with at least one adverse event 12 (44.4%) 35 (32.7%) 7 (26.9%) 42 (38.9%) 6 (28.6%) 37 (33.3%) + Total number of events 15 41 8 52 8 54 + dcd B.1.1.1.1 12 (44.4%) 35 (32.7%) 7 (26.9%) 42 (38.9%) 6 (28.6%) 37 (33.3%) + cl C.2 + Total number of patients with at least one adverse event 5 (18.5%) 30 (28.0%) 11 (42.3%) 37 (34.3%) 11 (52.4%) 44 (39.6%) + Total number of events 8 40 12 41 12 53 + dcd C.2.1.2.1 5 (18.5%) 30 (28.0%) 11 (42.3%) 37 (34.3%) 11 (52.4%) 44 (39.6%) + cl C.1 + Total number of patients with at least one adverse event 5 (18.5%) 38 (35.5%) 13 (50.0%) 33 (30.6%) 8 (38.1%) 35 (31.5%) + Total number of events 5 50 18 45 13 51 + dcd C.1.1.1.3 5 (18.5%) 38 (35.5%) 13 (50.0%) 33 (30.6%) 8 (38.1%) 35 (31.5%) + +# tables/adverse-events/aet06.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class A: Drug X B: Placebo C: Combination + High Level Term F M F M F M + Dictionary-Derived Term (N=79) (N=55) (N=82) (N=52) (N=70) (N=62) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 72 (91.1%) 50 (90.9%) 77 (93.9%) 46 (88.5%) 65 (92.9%) 55 (88.7%) + Overall total number of events 377 232 419 203 378 325 + cl A.1 + Total number of patients with at least one adverse event 53 (67.1%) 25 (45.5%) 51 (62.2%) 24 (46.2%) 43 (61.4%) 46 (74.2%) + Total number of events 85 47 93 37 86 74 + hlt A.1.1.1 + Total number of patients with at least one adverse event 53 (67.1%) 25 (45.5%) 51 (62.2%) 24 (46.2%) 43 (61.4%) 46 (74.2%) + Total number of events 85 47 93 37 86 74 + dcd A.1.1.1.1 34 (43.0%) 16 (29.1%) 31 (37.8%) 14 (26.9%) 33 (47.1%) 30 (48.4%) + dcd A.1.1.1.2 32 (40.5%) 16 (29.1%) 33 (40.2%) 15 (28.8%) 24 (34.3%) 26 (41.9%) + cl B.2 + Total number of patients with at least one adverse event 46 (58.2%) 33 (60.0%) 45 (54.9%) 29 (55.8%) 44 (62.9%) 41 (66.1%) + Total number of events 81 48 86 52 64 79 + hlt B.2.2.3 + Total number of patients with at least one adverse event 30 (38.0%) 18 (32.7%) 32 (39.0%) 22 (42.3%) 26 (37.1%) 25 (40.3%) + Total number of events 40 24 43 33 37 40 + dcd B.2.2.3.1 30 (38.0%) 18 (32.7%) 32 (39.0%) 22 (42.3%) 26 (37.1%) 25 (40.3%) + hlt B.2.1.2 + Total number of patients with at least one adverse event 29 (36.7%) 20 (36.4%) 30 (36.6%) 14 (26.9%) 22 (31.4%) 30 (48.4%) + Total number of events 41 24 43 19 27 39 + dcd B.2.1.2.1 29 (36.7%) 20 (36.4%) 30 (36.6%) 14 (26.9%) 22 (31.4%) 30 (48.4%) + cl D.1 + Total number of patients with at least one adverse event 45 (57.0%) 34 (61.8%) 40 (48.8%) 27 (51.9%) 41 (58.6%) 39 (62.9%) + Total number of events 72 55 64 42 73 62 + hlt D.1.1.1 + Total number of patients with at least one adverse event 25 (31.6%) 25 (45.5%) 29 (35.4%) 13 (25.0%) 27 (38.6%) 24 (38.7%) + Total number of events 32 29 36 15 39 32 + dcd D.1.1.1.1 25 (31.6%) 25 (45.5%) 29 (35.4%) 13 (25.0%) 27 (38.6%) 24 (38.7%) + hlt D.1.1.4 + Total number of patients with at least one adverse event 30 (38.0%) 18 (32.7%) 22 (26.8%) 20 (38.5%) 27 (38.6%) 23 (37.1%) + Total number of events 40 26 28 27 34 30 + dcd D.1.1.4.2 30 (38.0%) 18 (32.7%) 22 (26.8%) 20 (38.5%) 27 (38.6%) 23 (37.1%) + cl D.2 + Total number of patients with at least one adverse event 26 (32.9%) 21 (38.2%) 40 (48.8%) 18 (34.6%) 34 (48.6%) 23 (37.1%) + Total number of events 35 27 49 23 43 31 + hlt D.2.1.5 + Total number of patients with at least one adverse event 26 (32.9%) 21 (38.2%) 40 (48.8%) 18 (34.6%) 34 (48.6%) 23 (37.1%) + Total number of events 35 27 49 23 43 31 + dcd D.2.1.5.3 26 (32.9%) 21 (38.2%) 40 (48.8%) 18 (34.6%) 34 (48.6%) 23 (37.1%) + cl B.1 + Total number of patients with at least one adverse event 28 (35.4%) 19 (34.5%) 33 (40.2%) 16 (30.8%) 24 (34.3%) 19 (30.6%) + Total number of events 33 23 36 24 35 27 + hlt B.1.1.1 + Total number of patients with at least one adverse event 28 (35.4%) 19 (34.5%) 33 (40.2%) 16 (30.8%) 24 (34.3%) 19 (30.6%) + Total number of events 33 23 36 24 35 27 + dcd B.1.1.1.1 28 (35.4%) 19 (34.5%) 33 (40.2%) 16 (30.8%) 24 (34.3%) 19 (30.6%) + cl C.2 + Total number of patients with at least one adverse event 23 (29.1%) 12 (21.8%) 36 (43.9%) 12 (23.1%) 30 (42.9%) 25 (40.3%) + Total number of events 32 16 39 14 33 32 + hlt C.2.1.2 + Total number of patients with at least one adverse event 23 (29.1%) 12 (21.8%) 36 (43.9%) 12 (23.1%) 30 (42.9%) 25 (40.3%) + Total number of events 32 16 39 14 33 32 + dcd C.2.1.2.1 23 (29.1%) 12 (21.8%) 36 (43.9%) 12 (23.1%) 30 (42.9%) 25 (40.3%) + cl C.1 + Total number of patients with at least one adverse event 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + Total number of events 39 16 52 11 44 20 + hlt C.1.1.1 + Total number of patients with at least one adverse event 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + Total number of events 39 16 52 11 44 20 + dcd C.1.1.1.3 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet06_smq.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet06_smq.md new file mode 100644 index 0000000000..282261f12b --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet06_smq.md @@ -0,0 +1,56 @@ +# tables/adverse-events/aet06_smq.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + Standardized MedDRA Query F M F M F M + Dictionary-Derived Term (N=79) (N=55) (N=82) (N=52) (N=70) (N=62) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 47 (59.5%) 25 (45.5%) 51 (62.2%) 28 (53.8%) 42 (60.0%) 33 (53.2%) + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 47 (59.5%) 25 (45.5%) 51 (62.2%) 28 (53.8%) 42 (60.0%) 33 (53.2%) + Total number of events 79 40 95 44 81 60 + dcd B.2.2.3.1 30 (38.0%) 18 (32.7%) 32 (39.0%) 22 (42.3%) 26 (37.1%) 25 (40.3%) + dcd C.1.1.1.3 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + +# tables/adverse-events/aet06_smq.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + Standardized MedDRA Query F M F M F M + Dictionary-Derived Term (N=79) (N=55) (N=82) (N=52) (N=70) (N=62) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 59 (74.7%) 36 (65.5%) 68 (82.9%) 35 (67.3%) 61 (87.1%) 47 (75.8%) + D.2.1.5.3/A.1.1.1.1 AESI + Total number of patients with at least one adverse event 45 (57.0%) 29 (52.7%) 54 (65.9%) 26 (50.0%) 50 (71.4%) 37 (59.7%) + Total number of events 78 48 91 43 88 74 + dcd D.2.1.5.3 26 (32.9%) 21 (38.2%) 40 (48.8%) 18 (34.6%) 34 (48.6%) 23 (37.1%) + dcd A.1.1.1.1 34 (43.0%) 16 (29.1%) 31 (37.8%) 14 (26.9%) 33 (47.1%) 30 (48.4%) + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 47 (59.5%) 25 (45.5%) 51 (62.2%) 28 (53.8%) 42 (60.0%) 33 (53.2%) + Total number of events 79 40 95 44 81 60 + dcd B.2.2.3.1 30 (38.0%) 18 (32.7%) 32 (39.0%) 22 (42.3%) 26 (37.1%) 25 (40.3%) + dcd C.1.1.1.3 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) + non observed SMQ02NAM level(BROAD) + Total number of patients with at least one adverse event 0 0 0 0 0 0 + Total number of events 0 0 0 0 0 0 + +# tables/adverse-events/aet06_smq.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + Standardized MedDRA Query < 65 >= 65 < 65 >= 65 < 65 >= 65 + Dictionary-Derived Term (N=134) (N=0) (N=134) (N=0) (N=131) (N=1) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 72 (53.7%) 0 79 (59.0%) 0 75 (57.3%) 0 + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 72 (53.7%) 0 79 (59.0%) 0 75 (57.3%) 0 + Total number of events 119 0 139 0 141 0 + dcd B.2.2.3.1 48 (35.8%) 0 54 (40.3%) 0 51 (38.9%) 0 + dcd C.1.1.1.3 43 (32.1%) 0 46 (34.3%) 0 43 (32.8%) 0 + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet07.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet07.md new file mode 100644 index 0000000000..37a81376ac --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet07.md @@ -0,0 +1,24 @@ +# tables/adverse-events/aet07.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + B: Placebo C: Combination + MedDRA SOC and Preferred Term (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of deaths 70 (52.2%) 75 (56.8%) + cl D.1 / dcd D.1.1.1.1 42 (31.3%) 51 (38.6%) + cl B.1 / dcd B.1.1.1.1 49 (36.6%) 43 (32.6%) + +# tables/adverse-events/aet07.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + MedDRA SOC and Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of deaths 0 70 (52.2%) 75 (56.8%) + cl D.1 / dcd D.1.1.1.1 0 42 (31.3%) 51 (38.6%) + cl B.1 / dcd B.1.1.1.1 0 49 (36.6%) 43 (32.6%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet09.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet09.md new file mode 100644 index 0000000000..b820f6bed8 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet09.md @@ -0,0 +1,78 @@ +# tables/adverse-events/aet09.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class A: Drug X B: Placebo C: Combination All Patients + Dictionary-Derived Term (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event related to study drug 105 (78.4%) 108 (80.6%) 109 (82.6%) 322 (80.5%) + Overall total number of events related to study drug 282 299 336 917 + cl D.2 + Total number of patients with at least one adverse event related to study drug 47 (35.1%) 58 (43.3%) 57 (43.2%) 162 (40.5%) + Total number of events related to study drug 62 72 74 208 + dcd D.2.1.5.3 47 (35.1%) 58 (43.3%) 57 (43.2%) 162 (40.5%) + cl D.1 + Total number of patients with at least one adverse event related to study drug 50 (37.3%) 42 (31.3%) 51 (38.6%) 143 (35.8%) + Total number of events related to study drug 61 51 71 183 + dcd D.1.1.1.1 50 (37.3%) 42 (31.3%) 51 (38.6%) 143 (35.8%) + cl B.1 + Total number of patients with at least one adverse event related to study drug 47 (35.1%) 49 (36.6%) 43 (32.6%) 139 (34.8%) + Total number of events related to study drug 56 60 62 178 + dcd B.1.1.1.1 47 (35.1%) 49 (36.6%) 43 (32.6%) 139 (34.8%) + cl C.2 + Total number of patients with at least one adverse event related to study drug 35 (26.1%) 48 (35.8%) 55 (41.7%) 138 (34.5%) + Total number of events related to study drug 48 53 65 166 + dcd C.2.1.2.1 35 (26.1%) 48 (35.8%) 55 (41.7%) 138 (34.5%) + cl C.1 + Total number of patients with at least one adverse event related to study drug 43 (32.1%) 46 (34.3%) 43 (32.6%) 132 (33.0%) + Total number of events related to study drug 55 63 64 182 + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) 132 (33.0%) + +# tables/adverse-events/aet09.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class + High Level Term A: Drug X B: Placebo C: Combination + Dictionary-Derived Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event related to study drug 105 (78.4%) 108 (80.6%) 109 (82.6%) + Overall total number of events related to study drug 282 299 336 + cl D.2 + Total number of patients with at least one adverse event related to study drug 47 (35.1%) 58 (43.3%) 57 (43.2%) + Total number of events related to study drug 62 72 74 + hlt D.2.1.5 + Total number of patients with at least one adverse event related to study drug 47 (35.1%) 58 (43.3%) 57 (43.2%) + Total number of events related to study drug 62 72 74 + dcd D.2.1.5.3 47 (35.1%) 58 (43.3%) 57 (43.2%) + cl D.1 + Total number of patients with at least one adverse event related to study drug 50 (37.3%) 42 (31.3%) 51 (38.6%) + Total number of events related to study drug 61 51 71 + hlt D.1.1.1 + Total number of patients with at least one adverse event related to study drug 50 (37.3%) 42 (31.3%) 51 (38.6%) + Total number of events related to study drug 61 51 71 + dcd D.1.1.1.1 50 (37.3%) 42 (31.3%) 51 (38.6%) + cl B.1 + Total number of patients with at least one adverse event related to study drug 47 (35.1%) 49 (36.6%) 43 (32.6%) + Total number of events related to study drug 56 60 62 + hlt B.1.1.1 + Total number of patients with at least one adverse event related to study drug 47 (35.1%) 49 (36.6%) 43 (32.6%) + Total number of events related to study drug 56 60 62 + dcd B.1.1.1.1 47 (35.1%) 49 (36.6%) 43 (32.6%) + cl C.2 + Total number of patients with at least one adverse event related to study drug 35 (26.1%) 48 (35.8%) 55 (41.7%) + Total number of events related to study drug 48 53 65 + hlt C.2.1.2 + Total number of patients with at least one adverse event related to study drug 35 (26.1%) 48 (35.8%) 55 (41.7%) + Total number of events related to study drug 48 53 65 + dcd C.2.1.2.1 35 (26.1%) 48 (35.8%) 55 (41.7%) + cl C.1 + Total number of patients with at least one adverse event related to study drug 43 (32.1%) 46 (34.3%) 43 (32.6%) + Total number of events related to study drug 55 63 64 + hlt C.1.1.1 + Total number of patients with at least one adverse event related to study drug 43 (32.1%) 46 (34.3%) 43 (32.6%) + Total number of events related to study drug 55 63 64 + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet09_smq.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet09_smq.md new file mode 100644 index 0000000000..21e960e707 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet09_smq.md @@ -0,0 +1,35 @@ +# tables/adverse-events/aet09_smq.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Standardized MedDRA Query ARM A ARM B ARM C + Dictionary-Derived Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 43 (32.1%) 46 (34.3%) 43 (32.6%) + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 43 (32.1%) 46 (34.3%) 43 (32.6%) + Total number of events 55 63 64 + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) + +# tables/adverse-events/aet09_smq.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Standardized MedDRA Query ARM A ARM B ARM C + Dictionary-Derived Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one adverse event 69 (51.5%) 78 (58.2%) 77 (58.3%) + D.2.1.5.3/A.1.1.1.1 AESI + Total number of patients with at least one adverse event 47 (35.1%) 58 (43.3%) 57 (43.2%) + Total number of events 62 72 74 + dcd D.2.1.5.3 47 (35.1%) 58 (43.3%) 57 (43.2%) + C.1.1.1.3/B.2.2.3.1 AESI(BROAD) + Total number of patients with at least one adverse event 43 (32.1%) 46 (34.3%) 43 (32.6%) + Total number of events 55 63 64 + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) + non observed SMQ02NAM level(BROAD) + Total number of patients with at least one adverse event 0 0 0 + Total number of events 0 0 0 + diff --git a/package/tests/testthat/_snaps/development/tables-adverse-events-aet10.md b/package/tests/testthat/_snaps/development/tables-adverse-events-aet10.md new file mode 100644 index 0000000000..240895fc4a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-adverse-events-aet10.md @@ -0,0 +1,37 @@ +# tables/adverse-events/aet10.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + dcd D.2.1.5.3 47 (35.1%) 58 (43.3%) 57 (43.2%) 162 (40.5%) + dcd A.1.1.1.1 50 (37.3%) 45 (33.6%) 63 (47.7%) 158 (39.5%) + dcd B.2.2.3.1 48 (35.8%) 54 (40.3%) 51 (38.6%) 153 (38.2%) + dcd A.1.1.1.2 48 (35.8%) 48 (35.8%) 50 (37.9%) 146 (36.5%) + dcd B.2.1.2.1 49 (36.6%) 44 (32.8%) 52 (39.4%) 145 (36.2%) + dcd D.1.1.1.1 50 (37.3%) 42 (31.3%) 51 (38.6%) 143 (35.8%) + dcd D.1.1.4.2 48 (35.8%) 42 (31.3%) 50 (37.9%) 140 (35.0%) + dcd B.1.1.1.1 47 (35.1%) 49 (36.6%) 43 (32.6%) 139 (34.8%) + dcd C.2.1.2.1 35 (26.1%) 48 (35.8%) 55 (41.7%) 138 (34.5%) + dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) 132 (33.0%) + +# tables/adverse-events/aet10.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + dcd D.2.1.5.3 47 (35.1%) 58 (43.3%) 57 (43.2%) 162 (40.5%) + dcd A.1.1.1.1 50 (37.3%) 45 (33.6%) 63 (47.7%) 158 (39.5%) + dcd B.2.2.3.1 48 (35.8%) 54 (40.3%) 51 (38.6%) 153 (38.2%) + dcd A.1.1.1.2 48 (35.8%) 48 (35.8%) 50 (37.9%) 146 (36.5%) + dcd B.2.1.2.1 49 (36.6%) 44 (32.8%) 52 (39.4%) 145 (36.2%) + dcd D.1.1.1.1 50 (37.3%) 42 (31.3%) 51 (38.6%) 143 (35.8%) + dcd D.1.1.4.2 48 (35.8%) 42 (31.3%) 50 (37.9%) 140 (35.0%) + dcd B.1.1.1.1 47 (35.1%) 49 (36.6%) 43 (32.6%) 139 (34.8%) + dcd C.2.1.2.1 35 (26.1%) 48 (35.8%) 55 (41.7%) 138 (34.5%) + diff --git a/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01.md b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01.md new file mode 100644 index 0000000000..a3bd8ecfd0 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01.md @@ -0,0 +1,95 @@ +# tables/concomitant-medications/cmt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Medication Class A: Drug X B: Placebo C: Combination + Standardized Medication Name (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + medcl A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + medcl B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + medcl C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + +# tables/concomitant-medications/cmt01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Medication Class A: Drug X B: Placebo C: Combination + Standardized Medication Name (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 89 (66.4%) 95 (70.9%) 106 (80.3%) + Total number of treatments 194 208 243 + medcl A + Total number of patients with at least one treatment 54 (40.3%) 49 (36.6%) 69 (52.3%) + Total number of treatments 71 70 99 + medname A_1/3 54 (40.3%) 49 (36.6%) 69 (52.3%) + medcl B + Total number of patients with at least one treatment 76 (56.7%) 80 (59.7%) 81 (61.4%) + Total number of treatments 123 138 144 + medname B_2/4 52 (38.8%) 55 (41.0%) 56 (42.4%) + medname B_3/4 47 (35.1%) 47 (35.1%) 52 (39.4%) + +# tables/concomitant-medications/cmt01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Medication Class A: Drug X B: Placebo C: Combination + Standardized Medication Name (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + medcl A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + medcl B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + medcl C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + +# tables/concomitant-medications/cmt01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Medication Class A: Drug X B: Placebo C: Combination All Patients + Standardized Medication Name (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment (%) 117 (87.3%) 116 (86.6%) 116 (87.9%) 349 (87.2%) + Total number of treatments 415 414 460 1289 + medcl C + Total number of patients with at least one treatment (%) 82 (61.2%) 84 (62.7%) 89 (67.4%) 255 (63.7%) + Total number of treatments 140 140 155 435 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) 170 (42.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) 157 (39.2%) + medcl B + Total number of patients with at least one treatment (%) 83 (61.9%) 74 (55.2%) 88 (66.7%) 245 (61.3%) + Total number of treatments 141 137 162 440 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) 168 (42.0%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) 150 (37.5%) + medcl A + Total number of patients with at least one treatment (%) 75 (56.0%) 79 (59.0%) 81 (61.4%) 235 (58.8%) + Total number of treatments 134 137 143 414 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) 159 (39.8%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) 147 (36.8%) + diff --git a/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01a.md b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01a.md new file mode 100644 index 0000000000..6e4e320fff --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01a.md @@ -0,0 +1,180 @@ +# tables/concomitant-medications/cmt01a.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ATC Level 2 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + ATCCLAS2 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS2 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + Total number of treatments 58 66 64 + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS2 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS2 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS2 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS2 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS2 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS2 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + Total number of treatments 69 73 80 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + +# tables/concomitant-medications/cmt01a.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ATC Level 1 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + ATCCLAS1 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS1 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + Total number of treatments 58 66 64 + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS1 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS1 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS1 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS1 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS1 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS1 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + Total number of treatments 69 73 80 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + +# tables/concomitant-medications/cmt01a.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + ATC Level 2 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + ATCCLAS2 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS2 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS2 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS2 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS2 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + Total number of treatments 69 73 80 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + ATCCLAS2 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS2 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS2 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + Total number of treatments 58 66 64 + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + +# tables/concomitant-medications/cmt01a.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + ATC Level 2 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + ATCCLAS2 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS2 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS2 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS2 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS2 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS2 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS2 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS2 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + diff --git a/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01b.md b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01b.md new file mode 100644 index 0000000000..da49e7eb96 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt01b.md @@ -0,0 +1,210 @@ +# tables/concomitant-medications/cmt01b.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ATC Level 1 Text + ATC Level 2 Text + ATC Level 3 Text + ATC Level 4 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + ATCCLAS1 A + ATCCLAS2 A + ATCCLAS3 A + ATCCLAS4 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS1 A p2 + ATCCLAS2 A p2 + ATCCLAS3 A p2 + ATCCLAS4 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + Total number of treatments 58 66 64 + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS1 B + ATCCLAS2 B + ATCCLAS3 B + ATCCLAS4 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS1 B p2 + ATCCLAS2 B p2 + ATCCLAS3 B p2 + ATCCLAS4 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS1 B p3 + ATCCLAS2 B p3 + ATCCLAS3 B p3 + ATCCLAS4 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS1 C + ATCCLAS2 C + ATCCLAS3 C + ATCCLAS4 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS1 C p2 + ATCCLAS2 C p2 + ATCCLAS3 C p2 + ATCCLAS4 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS1 C p3 + ATCCLAS2 C p3 + ATCCLAS3 C p3 + ATCCLAS4 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + Total number of treatments 69 73 80 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + +# tables/concomitant-medications/cmt01b.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ATC Level 3 Text + ATC Level 2 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) + Total number of treatments 415 414 460 + ATCCLAS3 A + ATCCLAS2 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS3 A p2 + ATCCLAS2 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + Total number of treatments 58 66 64 + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS3 B + ATCCLAS2 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS3 B p2 + ATCCLAS2 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS3 B p3 + ATCCLAS2 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS3 C + ATCCLAS2 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS3 C p2 + ATCCLAS2 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS3 C p3 + ATCCLAS2 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + Total number of treatments 69 73 80 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + +# tables/concomitant-medications/cmt01b.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + ATC Level 1 Text + ATC Level 2 Text + ATC Level 3 Text + ATC Level 4 Text A: Drug X B: Placebo C: Combination + Other Treatment (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ATCCLAS1 A + ATCCLAS2 A + ATCCLAS3 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + Total number of treatments 134 137 143 + ATCCLAS4 A + Total number of patients with at least one treatment 75 (56.0%) 79 (59.0%) 81 (61.4%) + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS1 A p2 + ATCCLAS2 A p2 + ATCCLAS3 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + Total number of treatments 58 66 64 + ATCCLAS4 A p2 + Total number of patients with at least one treatment 45 (33.6%) 54 (40.3%) 48 (36.4%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) + ATCCLAS1 B + ATCCLAS2 B + ATCCLAS3 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + Total number of treatments 141 137 162 + ATCCLAS4 B + Total number of patients with at least one treatment 83 (61.9%) 74 (55.2%) 88 (66.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) + ATCCLAS1 B p2 + ATCCLAS2 B p2 + ATCCLAS3 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + ATCCLAS4 B p2 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS1 B p3 + ATCCLAS2 B p3 + ATCCLAS3 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + Total number of treatments 75 82 83 + ATCCLAS4 B p3 + Total number of patients with at least one treatment 52 (38.8%) 57 (42.5%) 59 (44.7%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) + ATCCLAS1 C + ATCCLAS2 C + ATCCLAS3 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + ATCCLAS4 C + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS1 C p2 + ATCCLAS2 C p2 + ATCCLAS3 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + Total number of treatments 140 140 155 + ATCCLAS4 C p2 + Total number of patients with at least one treatment 82 (61.2%) 84 (62.7%) 89 (67.4%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) + ATCCLAS1 C p3 + ATCCLAS2 C p3 + ATCCLAS3 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + Total number of treatments 69 73 80 + ATCCLAS4 C p3 + Total number of patients with at least one treatment 52 (38.8%) 58 (43.3%) 60 (45.5%) + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) + diff --git a/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt02_pt.md b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt02_pt.md new file mode 100644 index 0000000000..376a08810a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-concomitant-medications-cmt02_pt.md @@ -0,0 +1,17 @@ +# tables/concomitant-medications/cmt02_pt.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + Other Treatment (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one treatment 117 (87.3%) 116 (86.6%) 116 (87.9%) 349 (87.2%) + Total number of treatments 415 414 460 1289 + medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) 170 (42.5%) + medname B_1/4 52 (38.8%) 57 (42.5%) 59 (44.7%) 168 (42.0%) + medname A_2/3 53 (39.6%) 50 (37.3%) 56 (42.4%) 159 (39.8%) + medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) 157 (39.2%) + medname B_4/4 50 (37.3%) 45 (33.6%) 55 (41.7%) 150 (37.5%) + medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) 147 (36.8%) + diff --git a/package/tests/testthat/_snaps/development/tables-deaths-dtht01.md b/package/tests/testthat/_snaps/development/tables-deaths-dtht01.md new file mode 100644 index 0000000000..44d893d99a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-deaths-dtht01.md @@ -0,0 +1,88 @@ +# tables/deaths/dtht01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + Primary Cause of Death + n 25 23 22 70 + ADVERSE EVENT 9 (36%) 7 (30.4%) 10 (45.5%) 26 (37.1%) + PROGRESSIVE DISEASE 8 (32%) 6 (26.1%) 6 (27.3%) 20 (28.6%) + OTHER 8 (32%) 10 (43.5%) 6 (27.3%) 24 (34.3%) + +# tables/deaths/dtht01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + Primary Cause of Death + n 25 23 22 70 + ADVERSE EVENT 9 (36%) 7 (30.4%) 10 (45.5%) 26 (37.1%) + PROGRESSIVE DISEASE 8 (32%) 6 (26.1%) 6 (27.3%) 20 (28.6%) + OTHER 8 (32%) 10 (43.5%) 6 (27.3%) 24 (34.3%) + LOST TO FOLLOW UP 2 (25%) 2 (20%) 2 (33.3%) 6 (25%) + MISSING 2 (25%) 3 (30%) 2 (33.3%) 7 (29.2%) + Post-study reporting of death 1 (12.5%) 2 (20%) 1 (16.7%) 4 (16.7%) + SUICIDE 2 (25%) 2 (20%) 1 (16.7%) 5 (20.8%) + UNKNOWN 1 (12.5%) 1 (10%) 0 2 (8.3%) + Days from last drug administration + n 25 23 22 70 + <=30 14 (56%) 11 (47.8%) 14 (63.6%) 39 (55.7%) + >30 11 (44%) 12 (52.2%) 8 (36.4%) 31 (44.3%) + Primary cause by days from last study drug administration + <=30 + n 14 11 14 39 + ADVERSE EVENT 4 (28.6%) 2 (18.2%) 6 (42.9%) 12 (30.8%) + PROGRESSIVE DISEASE 6 (42.9%) 3 (27.3%) 4 (28.6%) 13 (33.3%) + OTHER 4 (28.6%) 6 (54.5%) 4 (28.6%) 14 (35.9%) + >30 + n 11 12 8 31 + ADVERSE EVENT 5 (45.5%) 5 (41.7%) 4 (50%) 14 (45.2%) + PROGRESSIVE DISEASE 2 (18.2%) 3 (25%) 2 (25%) 7 (22.6%) + OTHER 4 (36.4%) 4 (33.3%) 2 (25%) 10 (32.3%) + +# tables/deaths/dtht01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + Primary Cause of Death + n 25 23 22 70 + ADVERSE EVENT 9 (36%) 7 (30.4%) 10 (45.5%) 26 (37.1%) + PROGRESSIVE DISEASE 8 (32%) 6 (26.1%) 6 (27.3%) 20 (28.6%) + OTHER 8 (32%) 10 (43.5%) 6 (27.3%) 24 (34.3%) + Post-study reportings of death 1 (12.5%) 2 (20.0%) 1 (16.7%) 4 (16.7%) + All other causes 7 (87.5%) 8 (80.0%) 5 (83.3%) 20 (83.3%) + +# tables/deaths/dtht01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of deaths 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + Primary Cause of Death + n 25 23 22 70 + ADVERSE EVENT 9 (36%) 7 (30.4%) 10 (45.5%) 26 (37.1%) + PROGRESSIVE DISEASE 8 (32%) 6 (26.1%) 6 (27.3%) 20 (28.6%) + OTHER 8 (32%) 10 (43.5%) 6 (27.3%) 24 (34.3%) + Post-study reportings of death 1 (12.5%) 2 (20.0%) 1 (16.7%) 4 (16.7%) + All other causes 7 (87.5%) 8 (80.0%) 5 (83.3%) 20 (83.3%) + LOST TO FOLLOW UP 2 (28.6%) 2 (25%) 2 (40%) 6 (30%) + SUICIDE 2 (28.6%) 2 (25%) 1 (20%) 5 (25%) + UNKNOWN 1 (14.3%) 1 (12.5%) 0 2 (10%) + MISSING 2 (28.6%) 3 (37.5%) 2 (40%) 7 (35%) + diff --git a/package/tests/testthat/_snaps/development/tables-demography-dmt01.md b/package/tests/testthat/_snaps/development/tables-demography-dmt01.md new file mode 100644 index 0000000000..1966b58cc3 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-demography-dmt01.md @@ -0,0 +1,202 @@ +# tables/demography/dmt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age (yr) + n 134 134 132 400 + Mean (SD) 33.8 (6.6) 35.4 (7.9) 35.4 (7.7) 34.9 (7.4) + Median 33.0 35.0 35.0 34.0 + Min - Max 21.0 - 50.0 21.0 - 62.0 20.0 - 69.0 20.0 - 69.0 + Age Group + n 134 134 132 400 + 18-40 113 (84.3%) 103 (76.9%) 106 (80.3%) 322 (80.5%) + 41-64 21 (15.7%) 31 (23.1%) 25 (18.9%) 77 (19.2%) + >=65 0 0 1 (0.8%) 1 (0.2%) + Sex + n 134 134 132 400 + Female 79 (59%) 82 (61.2%) 70 (53%) 231 (57.8%) + Male 55 (41%) 52 (38.8%) 62 (47%) 169 (42.2%) + Ethnicity + n 134 134 132 400 + HISPANIC OR LATINO 15 (11.2%) 18 (13.4%) 15 (11.4%) 48 (12%) + NOT HISPANIC OR LATINO 104 (77.6%) 103 (76.9%) 101 (76.5%) 308 (77%) + NOT REPORTED 6 (4.5%) 10 (7.5%) 11 (8.3%) 27 (6.8%) + UNKNOWN 9 (6.7%) 3 (2.2%) 5 (3.8%) 17 (4.2%) + Race + n 134 134 132 400 + ASIAN 68 (50.7%) 67 (50%) 73 (55.3%) 208 (52%) + BLACK OR AFRICAN AMERICAN 31 (23.1%) 28 (20.9%) 32 (24.2%) 91 (22.8%) + WHITE 27 (20.1%) 26 (19.4%) 21 (15.9%) 74 (18.5%) + AMERICAN INDIAN OR ALASKA NATIVE 8 (6%) 11 (8.2%) 6 (4.5%) 25 (6.2%) + MULTIPLE 0 1 (0.7%) 0 1 (0.2%) + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0 1 (0.7%) 0 1 (0.2%) + OTHER 0 0 0 0 + UNKNOWN 0 0 0 0 + Continous Level Biomarker 1 + n 134 134 132 400 + Mean (SD) 6.0 (3.6) 5.7 (3.3) 5.6 (3.5) 5.8 (3.4) + Median 5.4 4.8 4.6 4.8 + Min - Max 0.4 - 17.7 0.6 - 14.2 0.2 - 21.4 0.2 - 21.4 + +# tables/demography/dmt01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age (yr) + n 134 134 132 + Mean (SD) 33.8 (6.6) 35.4 (7.9) 35.4 (7.7) + Median 33.0 35.0 35.0 + Min - Max 21.0 - 50.0 21.0 - 62.0 20.0 - 69.0 + Age Group + n 134 134 132 + 18-40 113 (84.3%) 103 (76.9%) 106 (80.3%) + 41-64 21 (15.7%) 31 (23.1%) 25 (18.9%) + >=65 0 0 1 (0.8%) + Sex + n 134 134 132 + Female 79 (59%) 82 (61.2%) 70 (53%) + Male 55 (41%) 52 (38.8%) 62 (47%) + Ethnicity + n 134 134 132 + HISPANIC OR LATINO 15 (11.2%) 18 (13.4%) 15 (11.4%) + NOT HISPANIC OR LATINO 104 (77.6%) 103 (76.9%) 101 (76.5%) + NOT REPORTED 6 (4.5%) 10 (7.5%) 11 (8.3%) + UNKNOWN 9 (6.7%) 3 (2.2%) 5 (3.8%) + Race + n 134 134 132 + ASIAN 68 (50.7%) 67 (50%) 73 (55.3%) + BLACK OR AFRICAN AMERICAN 31 (23.1%) 28 (20.9%) 32 (24.2%) + WHITE 27 (20.1%) 26 (19.4%) 21 (15.9%) + AMERICAN INDIAN OR ALASKA NATIVE 8 (6%) 11 (8.2%) 6 (4.5%) + MULTIPLE 0 1 (0.7%) 0 + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0 1 (0.7%) 0 + OTHER 0 0 0 + UNKNOWN 0 0 0 + Biomarker 1 Categories + n 134 134 132 + LOW 33 (24.6%) 41 (30.6%) 38 (28.8%) + MEDIUM 84 (62.7%) 76 (56.7%) 80 (60.6%) + HIGH 17 (12.7%) 17 (12.7%) 14 (10.6%) + +# tables/demography/dmt01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age + n 134 134 132 + Mean (SD) 33.8 (6.6) 35.4 (7.9) 35.4 (7.7) + Median 33.0 35.0 35.0 + Min - Max 21.0 - 50.0 21.0 - 62.0 20.0 - 69.0 + Sex + n 134 134 132 + Female 79 (59%) 82 (61.2%) 70 (53%) + Male 55 (41%) 52 (38.8%) 62 (47%) + Race + n 134 134 132 + ASIAN 68 (50.7%) 67 (50%) 73 (55.3%) + BLACK OR AFRICAN AMERICAN 31 (23.1%) 28 (20.9%) 32 (24.2%) + WHITE 27 (20.1%) 26 (19.4%) 21 (15.9%) + AMERICAN INDIAN OR ALASKA NATIVE 8 (6%) 11 (8.2%) 6 (4.5%) + MULTIPLE 0 1 (0.7%) 0 + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0 1 (0.7%) 0 + OTHER 0 0 0 + UNKNOWN 0 0 0 + A + n 38 44 40 + Mean (SD) 5.8 (3.8) 5.4 (3.2) 5.1 (3.2) + Median 5.1 4.5 3.8 + Min - Max 0.4 - 17.7 1.4 - 14.2 1.5 - 14.0 + B + n 47 45 43 + Mean (SD) 6.1 (3.6) 5.8 (3.6) 5.7 (3.4) + Median 5.2 4.8 5.1 + Min - Max 1.6 - 17.2 0.6 - 13.3 0.2 - 16.5 + C + n 49 45 49 + Mean (SD) 6.0 (3.4) 5.9 (3.2) 6.0 (3.8) + Median 5.8 5.6 4.5 + Min - Max 0.5 - 15.1 1.5 - 13.9 1.2 - 21.4 + +# tables/demography/dmt01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age (yr) + n 134 134 132 + Mean (SD) 33.8 (6.6) 35.4 (7.9) 35.4 (7.7) + Median 33.0 35.0 35.0 + Min - Max 21.0 - 50.0 21.0 - 62.0 20.0 - 69.0 + Sex + n 134 134 132 + Female 79 (59%) 82 (61.2%) 70 (53%) + Male 55 (41%) 52 (38.8%) 62 (47%) + Race + n 134 134 132 + ASIAN 68 (50.7%) 67 (50%) 73 (55.3%) + BLACK OR AFRICAN AMERICAN 31 (23.1%) 28 (20.9%) 32 (24.2%) + WHITE 27 (20.1%) 26 (19.4%) 21 (15.9%) + AMERICAN INDIAN OR ALASKA NATIVE 8 (6%) 11 (8.2%) 6 (4.5%) + MULTIPLE 0 1 (0.7%) 0 + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0 1 (0.7%) 0 + OTHER 0 0 0 + UNKNOWN 0 0 0 + Diastolic Blood Pressure + n 134 134 132 + Mean (SD) 96.5 (19.9) 101.1 (19.9) 102.8 (19.5) + Median 96.0 100.4 102.0 + Min - Max 44.3 - 136.6 29.2 - 143.8 49.4 - 153.5 + Systolic Blood Pressure + n 134 134 132 + Mean (SD) 151.7 (31.5) 149.5 (26.5) 144.7 (30.1) + Median 150.1 153.0 146.5 + Min - Max 69.1 - 231.2 87.2 - 220.9 71.8 - 220.2 + +# tables/demography/dmt01.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age (yr) + n 134 134 132 + Mean (SD) 33.8 (6.6) 35.4 (7.9) 35.4 (7.7) + Median 33.0 35.0 35.0 + Min - Max 21.0 - 50.0 21.0 - 62.0 20.0 - 69.0 + Sex + n 134 134 132 + Female 79 (59%) 82 (61.2%) 70 (53%) + Male 55 (41%) 52 (38.8%) 62 (47%) + Race + n 134 134 132 + ASIAN 68 (50.7%) 67 (50%) 73 (55.3%) + BLACK OR AFRICAN AMERICAN 31 (23.1%) 28 (20.9%) 32 (24.2%) + WHITE 27 (20.1%) 26 (19.4%) 21 (15.9%) + AMERICAN INDIAN OR ALASKA NATIVE 8 (6%) 11 (8.2%) 6 (4.5%) + MULTIPLE 0 1 (0.7%) 0 + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0 1 (0.7%) 0 + OTHER 0 0 0 + UNKNOWN 0 0 0 + Baseline BMI + n 134 134 132 + Mean (SD) 30.0 (18.3) 32.4 (23.2) 30.1 (18.4) + Median 27.1 31.1 30.0 + Min - Max -6.9 - 75.9 -26.6 - 117.9 -44.2 - 87.5 + diff --git a/package/tests/testthat/_snaps/development/tables-disclosures-disclosurest01.md b/package/tests/testthat/_snaps/development/tables-disclosures-disclosurest01.md new file mode 100644 index 0000000000..48206e4c70 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-disclosures-disclosurest01.md @@ -0,0 +1,125 @@ +# tables/disclosures/disclosurest01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + Status (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Started Study 134 (100.00%) 134 (100.00%) 132 (100.00%) 400 (100.00%) + Completed Study 65 (48.51%) 67 (50.00%) 69 (52.27%) 201 (50.25%) + Discontinued Study 15 (11.2%) 28 (20.9%) 24 (18.2%) 67 (16.8%) + Death 6 (40%) 5 (17.9%) 4 (16.7%) 15 (22.4%) + Lost To Follow-Up 1 (6.7%) 3 (10.7%) 8 (33.3%) 12 (17.9%) + Other 2 (13.3%) 6 (21.4%) 5 (20.8%) 13 (19.4%) + Protocol Violation 4 (26.7%) 4 (14.3%) 4 (16.7%) 12 (17.9%) + Withdrawal By Subject 2 (13.3%) 10 (35.7%) 3 (12.5%) 15 (22.4%) + +# tables/disclosures/disclosurest01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age (yr) + n 134 134 132 400 + Mean (SD) 33.8 (6.6) 35.4 (7.9) 35.4 (7.7) 34.9 (7.4) + Median 33.0 35.0 35.0 34.0 + Min - Max 21.0 - 50.0 21.0 - 62.0 20.0 - 69.0 20.0 - 69.0 + Age group + n 134 134 132 400 + 18-40 113 (84.3%) 103 (76.9%) 106 (80.3%) 322 (80.5%) + 41-64 21 (15.7%) 31 (23.1%) 25 (18.9%) 77 (19.2%) + >=65 0 0 1 (0.8%) 1 (0.2%) + Sex + n 134 134 132 400 + Female 79 (59%) 82 (61.2%) 70 (53%) 231 (57.8%) + Male 55 (41%) 52 (38.8%) 62 (47%) 169 (42.2%) + Race + n 134 134 132 400 + ASIAN 68 (50.7%) 67 (50%) 73 (55.3%) 208 (52%) + BLACK OR AFRICAN AMERICAN 31 (23.1%) 28 (20.9%) 32 (24.2%) 91 (22.8%) + WHITE 27 (20.1%) 26 (19.4%) 21 (15.9%) 74 (18.5%) + AMERICAN INDIAN OR ALASKA NATIVE 8 (6%) 11 (8.2%) 6 (4.5%) 25 (6.2%) + MULTIPLE 0 1 (0.7%) 0 1 (0.2%) + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0 1 (0.7%) 0 1 (0.2%) + OTHER 0 0 0 0 + UNKNOWN 0 0 0 0 + Ethnicity + n 134 134 132 400 + HISPANIC OR LATINO 15 (11.2%) 18 (13.4%) 15 (11.4%) 48 (12%) + NOT HISPANIC OR LATINO 104 (77.6%) 103 (76.9%) 101 (76.5%) 308 (77%) + NOT REPORTED 6 (4.5%) 10 (7.5%) 11 (8.3%) 27 (6.8%) + UNKNOWN 9 (6.7%) 3 (2.2%) 5 (3.8%) 17 (4.2%) + +# tables/disclosures/disclosurest01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + Country (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + n 134 134 132 400 + CHN 74 (55.2%) 81 (60.4%) 64 (48.5%) 219 (54.8%) + USA 10 (7.5%) 13 (9.7%) 17 (12.9%) 40 (10%) + BRA 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + PAK 12 (9%) 9 (6.7%) 10 (7.6%) 31 (7.8%) + NGA 8 (6%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + RUS 5 (3.7%) 8 (6%) 6 (4.5%) 19 (4.8%) + JPN 5 (3.7%) 4 (3%) 9 (6.8%) 18 (4.5%) + GBR 4 (3%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + CAN 3 (2.2%) 2 (1.5%) 3 (2.3%) 8 (2%) + +# tables/disclosures/disclosurest01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class A: Drug X B: Placebo C: Combination + Dictionary-Derived Term Patients (All) Events (All) Patients (All) Events (All) Patients (All) Events (All) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one non-serious adverse event occuring at a relative frequency of >=5% 106 360 112 367 112 421 + cl A.1 + dcd A.1.1.1.1 50 64 45 62 63 88 + cl B.2 + dcd B.2.1.2.1 49 65 44 62 52 66 + cl C.1 + dcd C.1.1.1.3 43 55 46 63 43 64 + cl C.2 + dcd C.2.1.2.1 35 48 48 53 55 65 + cl D.1 + dcd D.1.1.4.2 48 66 42 55 50 64 + cl D.2 + dcd D.2.1.5.3 47 62 58 72 57 74 + +# tables/disclosures/disclosurest01.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class + Dictionary-Derived Term Patients (All) Events (All) Events (Related) Events (Fatal) Events (Fatal & Related) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one serious adverse event 104 + cl A.1 + dcd A.1.1.1.2 48 68 0 0 0 + cl B.1 + dcd B.1.1.1.1 47 56 56 56 56 + cl B.2 + dcd B.2.2.3.1 48 64 0 0 0 + cl D.1 + dcd D.1.1.1.1 50 61 61 61 61 + +# tables/disclosures/disclosurest01.qmd result_v6 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Number of Deaths 76 (62.30%) 70 (56.91%) 75 (62.50%) 221 (60.55%) + diff --git a/package/tests/testthat/_snaps/development/tables-disclosures-eudrat01.md b/package/tests/testthat/_snaps/development/tables-disclosures-eudrat01.md new file mode 100644 index 0000000000..9373e3f37e --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-disclosures-eudrat01.md @@ -0,0 +1,22 @@ +# tables/disclosures/eudrat01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class A: Drug X B: Placebo C: Combination + Dictionary-Derived Term Patients (All) Events (All) Patients (All) Events (All) Patients (All) Events (All) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one non-serious adverse event occuring at a relative frequency of >=5% and number of events 106 360 112 367 112 421 + cl A.1 + dcd A.1.1.1.1 50 64 45 62 63 88 + cl B.2 + dcd B.2.1.2.1 49 65 44 62 52 66 + cl C.1 + dcd C.1.1.1.3 43 55 46 63 43 64 + cl C.2 + dcd C.2.1.2.1 35 48 48 53 55 65 + cl D.1 + dcd D.1.1.4.2 48 66 42 55 50 64 + cl D.2 + dcd D.2.1.5.3 47 62 58 72 57 74 + diff --git a/package/tests/testthat/_snaps/development/tables-disclosures-eudrat02.md b/package/tests/testthat/_snaps/development/tables-disclosures-eudrat02.md new file mode 100644 index 0000000000..506fdbc663 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-disclosures-eudrat02.md @@ -0,0 +1,18 @@ +# tables/disclosures/eudrat02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Body System or Organ Class + Dictionary-Derived Term Patients (All) Events (All) Events (Related) Events (Fatal) Events (Fatal & Related) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one serious adverse event 104 + cl A.1 + dcd A.1.1.1.2 48 68 0 0 0 + cl B.1 + dcd B.1.1.1.1 47 56 56 56 56 + cl B.2 + dcd B.2.2.3.1 48 64 0 0 0 + cl D.1 + dcd D.1.1.1.1 50 61 61 61 61 + diff --git a/package/tests/testthat/_snaps/development/tables-disposition-dst01.md b/package/tests/testthat/_snaps/development/tables-disposition-dst01.md new file mode 100644 index 0000000000..95f752faa3 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-disposition-dst01.md @@ -0,0 +1,64 @@ +# tables/disposition/dst01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + COMPLETED 68 (50.7%) 66 (49.3%) 73 (55.3%) 207 (51.7%) + ONGOING 24 (17.9%) 28 (20.9%) 21 (15.9%) 73 (18.2%) + DISCONTINUED 42 (31.3%) 40 (29.9%) 38 (28.8%) 120 (30.0%) + ADVERSE EVENT 3 (2.2%) 6 (4.5%) 5 (3.8%) 14 (3.5%) + DEATH 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + LACK OF EFFICACY 2 (1.5%) 2 (1.5%) 3 (2.3%) 7 (1.8%) + PHYSICIAN DECISION 2 (1.5%) 3 (2.2%) 2 (1.5%) 7 (1.8%) + PROTOCOL VIOLATION 5 (3.7%) 3 (2.2%) 4 (3%) 12 (3%) + WITHDRAWAL BY PARENT/GUARDIAN 4 (3%) 2 (1.5%) 1 (0.8%) 7 (1.8%) + WITHDRAWAL BY SUBJECT 1 (0.7%) 1 (0.7%) 1 (0.8%) 3 (0.8%) + +# tables/disposition/dst01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + COMPLETED 68 (50.7%) 66 (49.3%) 73 (55.3%) 207 (51.7%) + ONGOING 24 (17.9%) 28 (20.9%) 21 (15.9%) 73 (18.2%) + DISCONTINUED 42 (31.3%) 40 (29.9%) 38 (28.8%) 120 (30.0%) + Safety + ADVERSE EVENT 3 (2.2%) 6 (4.5%) 5 (3.8%) 14 (3.5%) + DEATH 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + Non-Safety + LACK OF EFFICACY 2 (1.5%) 2 (1.5%) 3 (2.3%) 7 (1.8%) + PHYSICIAN DECISION 2 (1.5%) 3 (2.2%) 2 (1.5%) 7 (1.8%) + PROTOCOL VIOLATION 5 (3.7%) 3 (2.2%) 4 (3%) 12 (3%) + WITHDRAWAL BY PARENT/GUARDIAN 4 (3%) 2 (1.5%) 1 (0.8%) 7 (1.8%) + WITHDRAWAL BY SUBJECT 1 (0.7%) 1 (0.7%) 1 (0.8%) 3 (0.8%) + +# tables/disposition/dst01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + COMPLETED 68 (50.7%) 66 (49.3%) 73 (55.3%) 207 (51.7%) + ONGOING 24 (17.9%) 28 (20.9%) 21 (15.9%) 73 (18.2%) + DISCONTINUED 42 (31.3%) 40 (29.9%) 38 (28.8%) 120 (30.0%) + Safety + ADVERSE EVENT 3 (2.2%) 6 (4.5%) 5 (3.8%) 14 (3.5%) + DEATH 25 (18.7%) 23 (17.2%) 22 (16.7%) 70 (17.5%) + Non-Safety + LACK OF EFFICACY 2 (1.5%) 2 (1.5%) 3 (2.3%) 7 (1.8%) + PHYSICIAN DECISION 2 (1.5%) 3 (2.2%) 2 (1.5%) 7 (1.8%) + PROTOCOL VIOLATION 5 (3.7%) 3 (2.2%) 4 (3%) 12 (3%) + WITHDRAWAL BY PARENT/GUARDIAN 4 (3%) 2 (1.5%) 1 (0.8%) 7 (1.8%) + WITHDRAWAL BY SUBJECT 1 (0.7%) 1 (0.7%) 1 (0.8%) 3 (0.8%) + COMPLETED 46 (34.3%) 38 (28.4%) 41 (31.1%) 125 (31.2%) + ONGOING 50 (37.3%) 51 (38.1%) 46 (34.8%) 147 (36.8%) + DISCONTINUED 38 (28.4%) 45 (33.6%) 45 (34.1%) 128 (32.0%) + diff --git a/package/tests/testthat/_snaps/development/tables-disposition-pdt01.md b/package/tests/testthat/_snaps/development/tables-disposition-pdt01.md new file mode 100644 index 0000000000..1030fa27a5 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-disposition-pdt01.md @@ -0,0 +1,37 @@ +# tables/disposition/pdt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Category A: Drug X B: Placebo C: Combination + Description (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one major protocol deviation 28 (20.9%) 22 (16.4%) 18 (13.6%) + Total number of major protocol deviations 49 35 35 + EXCLUSION CRITERIA + Active or untreated or other excluded cns metastases 2 (1.5%) 4 (3.0%) 1 (0.8%) + Pregnancy criteria 3 (2.2%) 3 (2.2%) 1 (0.8%) + History of other malignancies within the last 5 years 3 (2.2%) 1 (0.7%) 1 (0.8%) + Uncontrolled concurrent condition 2 (1.5%) 0 3 (2.3%) + Other exclusion criteria 1 (0.7%) 0 2 (1.5%) + Received prior prohibited therapy or medication 2 (1.5%) 1 (0.7%) 0 + INCLUSION CRITERIA + No signed ICF at study entry 5 (3.7%) 0 6 (4.5%) + Ineligible cancer type or current cancer stage 3 (2.2%) 2 (1.5%) 4 (3.0%) + Inclusion lab values outside allowed limits 4 (3.0%) 1 (0.7%) 0 + Does not meet prior therapy requirements 2 (1.5%) 1 (0.7%) 1 (0.8%) + Inclusion-related test not done/out of window 1 (0.7%) 1 (0.7%) 0 + MEDICATION + Discontinued study drug for unspecified reason 3 (2.2%) 2 (1.5%) 1 (0.8%) + Significant deviation from planned dose 3 (2.2%) 1 (0.7%) 2 (1.5%) + Received incorrect study medication 0 3 (2.2%) 1 (0.8%) + Received prohibited concomitant medication 1 (0.7%) 2 (1.5%) 1 (0.8%) + Dose missed or significantly out of window 2 (1.5%) 0 1 (0.8%) + PROCEDURAL + Eligibility-related test not done/out of window 2 (1.5%) 4 (3.0%) 3 (2.3%) + Omission of screening tumor assessment 4 (3.0%) 1 (0.7%) 3 (2.3%) + Missed assessment affecting safety/study outcomes 2 (1.5%) 3 (2.2%) 1 (0.8%) + Failure to sign updated ICF within two visits 2 (1.5%) 1 (0.7%) 1 (0.8%) + Missed 2 or more efficacy assessments 1 (0.7%) 2 (1.5%) 0 + Omission of complete lab panel required by protocol 0 0 1 (0.8%) + diff --git a/package/tests/testthat/_snaps/development/tables-disposition-pdt02.md b/package/tests/testthat/_snaps/development/tables-disposition-pdt02.md new file mode 100644 index 0000000000..62f90569dc --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-disposition-pdt02.md @@ -0,0 +1,16 @@ +# tables/disposition/pdt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Primary Reason A: Drug X B: Placebo C: Combination + Description (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one major protocol deviation related to epidemic/pandemic 8 (6.0%) 4 (3.0%) 4 (3.0%) + Total number of major protocol deviations related to epidemic/pandemic 8 5 4 + Site action due to epidemic/pandemic 8 (6.0%) 4 (3.0%) 4 (3.0%) + Dose missed or significantly out of window 2 (1.5%) 0 1 (0.8%) + Failure to sign updated ICF within two visits 2 (1.5%) 1 (0.7%) 1 (0.8%) + Missed 2 or more efficacy assessments 1 (0.7%) 2 (1.5%) 0 + Significant deviation from planned dose 3 (2.2%) 1 (0.7%) 2 (1.5%) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-aovt01.md b/package/tests/testthat/_snaps/development/tables-efficacy-aovt01.md new file mode 100644 index 0000000000..e91494c45c --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-aovt01.md @@ -0,0 +1,43 @@ +# tables/efficacy/aovt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Parameter Code ARM A ARM B ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BFIALL + Adjusted mean + n 134 134 132 + Adjusted Mean 4.47 6.33 4.02 + Difference in Adjusted Means 1.85 -0.46 + 95% CI (-0.14, 3.85) (-2.45, 1.54) + p-value 0.0679 0.6539 + FATIGI + Adjusted mean + n 134 134 132 + Adjusted Mean 5.42 4.83 4.56 + Difference in Adjusted Means -0.59 -0.86 + 95% CI (-2.58, 1.41) (-2.87, 1.15) + p-value 0.5644 0.4026 + FKSI-FWB + Adjusted mean + n 134 134 132 + Adjusted Mean 4.29 3.51 3.06 + Difference in Adjusted Means -0.79 -1.24 + 95% CI (-2.71, 1.14) (-3.17, 0.69) + p-value 0.4221 0.2088 + FKSI-TSE + Adjusted mean + n 134 134 132 + Adjusted Mean 4.70 3.84 4.45 + Difference in Adjusted Means -0.86 -0.25 + 95% CI (-2.80, 1.09) (-2.20, 1.70) + p-value 0.3858 0.8007 + FKSIALL + Adjusted mean + n 134 134 132 + Adjusted Mean 5.03 5.82 6.44 + Difference in Adjusted Means 0.79 1.42 + 95% CI (-1.17, 2.76) (-0.56, 3.39) + p-value 0.4288 0.1591 + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-aovt02.md b/package/tests/testthat/_snaps/development/tables-efficacy-aovt02.md new file mode 100644 index 0000000000..b089748749 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-aovt02.md @@ -0,0 +1,21 @@ +# tables/efficacy/aovt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + Parameter (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Unadjusted comparison + n 68 73 62 + Mean 3.68 5.07 3.09 + Difference in Means 1.38 -0.59 + 95% CI (-2.76, 5.53) (-4.91, 3.73) + p-value 0.5113 0.7873 + Adjusted comparison (covariates BASE and STRATA1) + n 68 73 62 + Adjusted Mean 4.06 3.57 3.34 + Difference in Adjusted Means -0.49 -0.72 + 95% CI (-3.28, 2.29) (-3.57, 2.12) + p-value 0.7277 0.6165 + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-aovt03.md b/package/tests/testthat/_snaps/development/tables-efficacy-aovt03.md new file mode 100644 index 0000000000..c8fce0be0b --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-aovt03.md @@ -0,0 +1,47 @@ +# tables/efficacy/aovt03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BFI All Questions + WEEK 1 DAY 8 + n 68 73 62 + Adjusted Mean 4.34 5.96 3.90 + Difference in Adjusted Means 1.62 -0.44 + 95% CI (-1.75, 4.98) (-3.94, 3.06) + p-value 0.3460 0.8059 + WEEK 2 DAY 15 + n 68 73 62 + Adjusted Mean 12.99 11.23 9.86 + Difference in Adjusted Means -1.76 -3.13 + 95% CI (-5.12, 1.60) (-6.64, 0.37) + p-value 0.3048 0.0795 + WEEK 5 DAY 36 + n 68 73 62 + Adjusted Mean 23.88 23.08 28.21 + Difference in Adjusted Means -0.81 4.33 + 95% CI (-4.17, 2.56) (0.83, 7.83) + p-value 0.6383 0.0155 + Fatigue Interference + WEEK 1 DAY 8 + n 68 73 62 + Adjusted Mean 5.97 5.19 5.21 + Difference in Adjusted Means -0.78 -0.76 + 95% CI (-4.17, 2.61) (-4.30, 2.78) + p-value 0.6522 0.6729 + WEEK 2 DAY 15 + n 68 73 62 + Adjusted Mean 11.39 9.42 9.55 + Difference in Adjusted Means -1.96 -1.84 + 95% CI (-5.35, 1.43) (-5.37, 1.70) + p-value 0.2560 0.3084 + WEEK 5 DAY 36 + n 68 73 62 + Adjusted Mean 22.79 25.37 23.43 + Difference in Adjusted Means 2.58 0.64 + 95% CI (-0.81, 5.97) (-2.89, 4.18) + p-value 0.1353 0.7212 + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-cfbt01.md b/package/tests/testthat/_snaps/development/tables-efficacy-cfbt01.md new file mode 100644 index 0000000000..afb1cd3f36 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-cfbt01.md @@ -0,0 +1,41 @@ +# tables/efficacy/cfbt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Parameter Change from Change from Change from + Analysis Visit Value at Visit Baseline Value at Visit Baseline Value at Visit Baseline + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BFI All Questions + BASELINE + n 134 134 132 + Mean (SD) 49.93 (7.44) 49.74 (8.29) 50.30 (9.06) + Median 48.69 49.28 49.74 + Min - Max 33.72 - 65.91 25.82 - 71.47 26.04 - 69.99 + WEEK 1 DAY 8 + n 134 134 134 134 132 132 + Mean (SD) 54.51 (8.61) 4.58 (11.23) 56.33 (7.86) 6.59 (11.81) 54.03 (8.31) 3.72 (12.66) + Median 55.15 5.47 56.39 6.96 53.76 3.71 + Min - Max 34.26 - 75.42 -25.52 - 29.68 36.82 - 74.45 -25.10 - 31.05 26.89 - 75.95 -26.81 - 33.75 + WEEK 2 DAY 15 + n 134 134 134 134 132 132 + Mean (SD) 60.98 (10.31) 11.05 (12.46) 59.68 (9.59) 9.94 (12.84) 60.11 (8.76) 9.80 (12.59) + Median 60.60 10.45 58.18 8.95 61.08 10.04 + Min - Max 35.94 - 96.53 -14.02 - 45.01 40.44 - 84.70 -17.59 - 40.52 32.76 - 78.25 -26.57 - 39.56 + WEEK 3 DAY 22 + n 134 134 134 134 132 132 + Mean (SD) 64.64 (9.88) 14.72 (11.99) 65.78 (10.17) 16.04 (13.80) 63.65 (10.50) 13.35 (13.39) + Median 65.21 15.10 66.28 15.49 63.79 12.24 + Min - Max 40.49 - 95.35 -16.76 - 43.40 42.16 - 92.32 -17.70 - 46.85 29.29 - 88.41 -22.40 - 39.94 + WEEK 4 DAY 29 + n 134 134 134 134 132 132 + Mean (SD) 69.43 (11.12) 19.51 (13.83) 69.79 (11.46) 20.05 (14.38) 70.68 (10.23) 20.37 (12.99) + Median 69.22 19.90 70.37 20.99 70.85 20.94 + Min - Max 38.38 - 95.48 -17.34 - 49.18 45.79 - 93.33 -19.66 - 58.05 30.53 - 90.61 -14.01 - 60.23 + WEEK 5 DAY 36 + n 134 134 134 134 132 132 + Mean (SD) 74.31 (12.44) 24.38 (14.75) 74.73 (12.96) 24.99 (14.67) 75.89 (13.54) 25.59 (17.18) + Median 76.12 25.20 74.13 22.81 76.70 25.32 + Min - Max 39.45 - 103.92 -7.53 - 56.23 38.19 - 109.61 -18.42 - 64.15 43.79 - 102.40 -16.11 - 67.78 + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-cmht01.md b/package/tests/testthat/_snaps/development/tables-efficacy-cmht01.md new file mode 100644 index 0000000000..4c0bba9fe9 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-cmht01.md @@ -0,0 +1,95 @@ +# tables/efficacy/cmht01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 49 (36.6%) 51 (38.1%) 47 (35.6%) + 95% CI (Wald, with correction) (28.0, 45.1) (29.5, 46.7) (27.1, 44.2) + Unstratified Analysis + Difference in Response rate (%) 1.5 -1.0 + 95% CI (Wald, with correction) (-10.8, 13.8) (-13.3, 11.3) + p-value (Chi-Squared Test) 0.8006 0.8704 + Odds Ratio (95% CI) 1.07 (0.65 - 1.75) 0.96 (0.58 - 1.58) + Stratified Analysis + Difference in Response rate (%) 2.8 -1.5 + 95% CI (CMH, without correction) (-8.2, 13.8) (-13.0, 9.9) + p-value (Cochran-Mantel-Haenszel Test) 0.6397 0.7952 + Odds Ratio (95% CI) 1.12 (0.68 - 1.83) 0.99 (0.60 - 1.64) + +# tables/efficacy/cmht01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Parameter (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BFI All Questions + Responders 57 (42.5%) 65 (48.5%) 50 (37.9%) + 95% CI (Wald, with correction) (33.8, 51.3) (39.7, 57.3) (29.2, 46.5) + Unstratified Analysis + Difference in Response rate (%) 6.0 -4.7 + 95% CI (Wald, with correction) (-6.7, 18.6) (-17.2, 7.9) + p-value (Chi-Squared Test) 0.3264 0.4385 + Odds Ratio (95% CI) 1.27 (0.79 - 2.06) 0.82 (0.50 - 1.35) + Stratified Analysis + Difference in Response rate (%) 6.7 -5.1 + 95% CI (CMH, without correction) (-5.0, 18.4) (-16.8, 6.6) + p-value (Cochran-Mantel-Haenszel Test) 0.2781 0.4056 + Odds Ratio (95% CI) 1.30 (0.80 - 2.11) 0.80 (0.49 - 1.32) + Fatigue Interference + Responders 66 (49.3%) 50 (37.3%) 48 (36.4%) + 95% CI (Wald, with correction) (40.4, 58.1) (28.8, 45.9) (27.8, 44.9) + Unstratified Analysis + Difference in Response rate (%) -11.9 -12.9 + 95% CI (Wald, with correction) (-24.5, 0.6) (-25.4, -0.3) + p-value (Chi-Squared Test) 0.0485 0.0337 + Odds Ratio (95% CI) 0.61 (0.38 - 1.00) 0.59 (0.36 - 0.96) + Stratified Analysis + Difference in Response rate (%) -12.0 -13.3 + 95% CI (CMH, without correction) (-23.7, -0.2) (-24.9, -1.6) + p-value (Cochran-Mantel-Haenszel Test) 0.0518 0.0303 + Odds Ratio (95% CI) 0.61 (0.37 - 0.99) 0.58 (0.36 - 0.96) + FKSI-19 All Questions + Responders 60 (44.8%) 57 (42.5%) 68 (51.5%) + 95% CI (Wald, with correction) (36.0, 53.6) (33.8, 51.3) (42.6, 60.4) + Unstratified Analysis + Difference in Response rate (%) -2.2 6.7 + 95% CI (Wald, with correction) (-14.9, 10.4) (-6.0, 19.5) + p-value (Chi-Squared Test) 0.7118 0.2714 + Odds Ratio (95% CI) 0.91 (0.56 - 1.48) 1.31 (0.81 - 2.12) + Stratified Analysis + Difference in Response rate (%) -2.8 5.6 + 95% CI (CMH, without correction) (-14.3, 8.8) (-6.2, 17.4) + p-value (Cochran-Mantel-Haenszel Test) 0.6442 0.3683 + Odds Ratio (95% CI) 0.90 (0.56 - 1.47) 1.26 (0.77 - 2.04) + Function/Well-Being (GF1,GF3,GF7) + Responders 49 (36.6%) 51 (38.1%) 47 (35.6%) + 95% CI (Wald, with correction) (28.0, 45.1) (29.5, 46.7) (27.1, 44.2) + Unstratified Analysis + Difference in Response rate (%) 1.5 -1.0 + 95% CI (Wald, with correction) (-10.8, 13.8) (-13.3, 11.3) + p-value (Chi-Squared Test) 0.8006 0.8704 + Odds Ratio (95% CI) 1.07 (0.65 - 1.75) 0.96 (0.58 - 1.58) + Stratified Analysis + Difference in Response rate (%) 2.8 -1.5 + 95% CI (CMH, without correction) (-8.2, 13.8) (-13.0, 9.9) + p-value (Cochran-Mantel-Haenszel Test) 0.6397 0.7952 + Odds Ratio (95% CI) 1.12 (0.68 - 1.83) 0.99 (0.60 - 1.64) + Treatment Side Effects (GP2,C5,GP5) + Responders 62 (46.3%) 49 (36.6%) 51 (38.6%) + 95% CI (Wald, with correction) (37.5, 55.1) (28.0, 45.1) (30.0, 47.3) + Unstratified Analysis + Difference in Response rate (%) -9.7 -7.6 + 95% CI (Wald, with correction) (-22.2, 2.8) (-20.2, 5.0) + p-value (Chi-Squared Test) 0.1069 0.2080 + Odds Ratio (95% CI) 0.67 (0.41 - 1.09) 0.73 (0.45 - 1.19) + Stratified Analysis + Difference in Response rate (%) -9.6 -7.1 + 95% CI (CMH, without correction) (-21.0, 1.8) (-18.8, 4.6) + p-value (Cochran-Mantel-Haenszel Test) 0.1168 0.2426 + Odds Ratio (95% CI) 0.67 (0.41 - 1.10) 0.73 (0.45 - 1.19) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-coxt01.md b/package/tests/testthat/_snaps/development/tables-efficacy-coxt01.md new file mode 100644 index 0000000000..ceddcfab9a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-coxt01.md @@ -0,0 +1,72 @@ +# tables/efficacy/coxt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Treatment Effect Adjusted for Covariate + Effect/Covariate Included in the Model n Hazard Ratio 95% CI p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment: + A: Drug X vs control (B: Placebo) 247 0.97 (0.66, 1.43) 0.8934 + Covariate: + Age 247 0.95 (0.65, 1.40) 0.7948 + Sex 247 0.98 (0.67, 1.43) 0.8970 + Race 247 0.98 (0.67, 1.44) 0.9239 + +# tables/efficacy/coxt01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Treatment Effect Adjusted for Covariate + Effect/Covariate Included in the Model n Hazard Ratio 95% CI p-value Interaction p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment: + A: Drug X vs control (B: Placebo) 247 0.97 (0.66, 1.43) 0.8934 + Covariate: + Age 247 0.7878 + 34 0.95 (0.65, 1.40) + Race 247 0.6850 + ASIAN 1.05 (0.63, 1.75) + BLACK OR AFRICAN AMERICAN 1.08 (0.51, 2.29) + WHITE 0.67 (0.27, 1.71) + +# tables/efficacy/coxt01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Treatment Effect Adjusted for Covariate + Effect/Covariate Included in the Model n Hazard Ratio 95% CI p-value Interaction p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment: + A: Drug X vs control (B: Placebo) 247 0.97 (0.66, 1.43) 0.8934 + Covariate: + Age 247 0.7878 + 30 0.98 (0.63, 1.51) + 40 0.91 (0.54, 1.51) + 50 0.84 (0.32, 2.20) + Sex 247 0.1455 + F 0.77 (0.47, 1.27) + M 1.38 (0.75, 2.52) + +# tables/efficacy/coxt01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Treatment Effect Adjusted for Covariate + Effect/Covariate Included in the Model n Hazard Ratio 90% CI p-value Interaction p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment: + A: Drug X vs control (B: Placebo) 247 0.98 (0.71, 1.35) 0.9063 + Covariate: + Age 247 0.7733 + 30 0.98 (0.68, 1.42) + 40 0.91 (0.59, 1.39) + 50 0.84 (0.38, 1.87) + Race 247 0.6501 + ASIAN 1.07 (0.64, 1.77) + BLACK OR AFRICAN AMERICAN 1.08 (0.51, 2.29) + WHITE 0.66 (0.26, 1.67) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-coxt02.md b/package/tests/testthat/_snaps/development/tables-efficacy-coxt02.md new file mode 100644 index 0000000000..3bd62b247a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-coxt02.md @@ -0,0 +1,34 @@ +# tables/efficacy/coxt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Effect/Covariate Included in the Model Hazard Ratio 95% CI p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment: + Planned Arm (reference = B: Placebo) 0.2643 + A: Drug X 0.96 (0.66, 1.42) 0.8536 + C: Combination 1.27 (0.88, 1.83) 0.2010 + Covariate: + Sex (reference = F) + M 1.09 (0.80, 1.48) 0.5987 + Age + All 0.99 (0.97, 1.01) 0.5104 + +# tables/efficacy/coxt02.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Effect/Covariate Included in the Model Hazard Ratio 90% CI + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment: + Planned Arm Code (reference = ARM A) + ARM B 1.03 (0.74, 1.42) + ARM C 1.30 (0.96, 1.77) + Covariate: + Sex (reference = F) + M 1.08 (0.83, 1.40) + Age + All 0.99 (0.98, 1.01) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-dort01.md b/package/tests/testthat/_snaps/development/tables-efficacy-dort01.md new file mode 100644 index 0000000000..1caac51263 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-dort01.md @@ -0,0 +1,96 @@ +# tables/efficacy/dort01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 68 73 62 + Responders with subsequent event (%) 46 (67.6%) 39 (53.4%) 32 (51.6%) + Earliest contributing event + Death 26 24 16 + Disease Progression 20 15 16 + Responders without subsequent event (%) 22 (32.4%) 34 (46.6%) 30 (48.4%) + Duration of response (Months) + Median 5.3 6.2 5.3 + 95% CI (4.6, 5.8) (5.4, 6.3) (4.6, 5.8) + 25% and 75%-ile 3.8, 6.3 4.6, 6.4 4.0, 6.1 + Range 0.5 to 6.4 0.9 to 6.5 0.6 to 6.6 + 12 Months duration + Patients remaining at risk NA NA NA + Event Free Rate (%) NA NA NA + 95% CI NA NA NA + +# tables/efficacy/dort01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 68 73 62 + Responders with subsequent event (%) 46 (67.6%) 39 (53.4%) 32 (51.6%) + Earliest contributing event + Death 26 24 16 + Disease Progression 20 15 16 + Responders without subsequent event (%) 22 (32.4%) 34 (46.6%) 30 (48.4%) + Duration of response (Months) + Median 5.3 6.2 5.3 + 95% CI (4.6, 5.8) (5.4, 6.3) (4.6, 5.8) + 25% and 75%-ile 3.8, 6.3 4.6, 6.4 4.0, 6.1 + Range 0.5 to 6.4 0.9 to 6.5 0.6 to 6.6 + Unstratified Analysis + p-value (log-rank) 0.0223 0.6659 + Hazard Ratio 0.60 0.90 + 95% CI (0.39, 0.93) (0.57, 1.44) + +# tables/efficacy/dort01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 68 73 62 + Responders with subsequent event (%) 46 (67.6%) 39 (53.4%) 32 (51.6%) + Earliest contributing event + Death 26 24 16 + Disease Progression 20 15 16 + Responders without subsequent event (%) 22 (32.4%) 34 (46.6%) 30 (48.4%) + Duration of response (Months) + Median 5.3 6.2 5.3 + 90% CI (4.6, 5.8) (5.5, 6.3) (4.6, 5.7) + 25% and 75%-ile 3.8, 6.3 4.6, 6.4 4.0, 6.1 + Range 0.5 to 6.4 0.9 to 6.5 0.6 to 6.6 + 12 Months duration + Patients remaining at risk NA NA NA + Event Free Rate (%) NA NA NA + 97.5% CI NA NA NA + +# tables/efficacy/dort01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 68 73 62 + Responders with subsequent event (%) 46 (67.6%) 39 (53.4%) 32 (51.6%) + Earliest contributing event + Death 26 24 16 + Disease Progression 20 15 16 + Responders without subsequent event (%) 22 (32.4%) 34 (46.6%) 30 (48.4%) + Duration of response (Months) + Median 5.3 6.2 5.3 + 95% CI (4.6, 5.8) (5.4, 6.3) (4.6, 5.8) + 25% and 75%-ile 3.8, 6.3 4.6, 6.4 4.0, 6.1 + Range 0.5 to 6.4 0.9 to 6.5 0.6 to 6.6 + 6 Months duration + Patients remaining at risk 10 18 7 + Event Free Rate (%) 33.46 50.23 30.56 + 95% CI (20.88, 46.05) (36.54, 63.92) (13.56, 47.57) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-lgrt02.md b/package/tests/testthat/_snaps/development/tables-efficacy-lgrt02.md new file mode 100644 index 0000000000..d61d2c8dae --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-lgrt02.md @@ -0,0 +1,103 @@ +# tables/efficacy/lgrt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Logistic regression Degrees of Freedom Parameter Estimate Standard Error Odds Ratio Wald 95% CI p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Planned Arm Code 2 0.0408 + Reference ARM A, n = 134 + ARM B, n = 134 1 -2.094 1.080 0.12 (0.01, 1.02) 0.0524 + ARM C, n = 132 1 -0.074 1.423 0.93 (0.06, 15.09) 0.9584 + Sex + Reference M, n = 169 + F, n = 231 1 0.331 0.695 1.39 (0.36, 5.44) 0.6339 + Age + Age 1 0.070 0.054 1.07 (0.97, 1.19) 0.1945 + +# tables/efficacy/lgrt02.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Logistic regression with interaction Degrees of Freedom Parameter Estimate Standard Error Odds Ratio Wald 95% CI p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Age + Age 1 0.067 0.054 1.07 (0.96, 1.19) 0.2084 + Planned Arm Code 2 0.4882 + Reference ARM A, n = 134 + ARM B, n = 134 1 -17.850 2362.767 0.9940 + Sex + F 0.23 (0.02, 2.11) + M 0.00 (0.00, >999.99) + ARM C, n = 132 1 -16.442 2362.767 0.9944 + Sex + F >999.99 (0.00, >999.99) + M 0.00 (0.00, >999.99) + Sex + Reference M, n = 169 + F, n = 231 1 -16.044 2362.767 0.9946 + Planned Arm Code + ARM A 0.00 (0.00, >999.99) + ARM B 1.39 (0.29, 6.59) + ARM C >999.99 (0.00, >999.99) + Interaction of Planned Arm Code * Sex 2 0.9999 + Reference ARM A or M, n = 248 + ARM B * F, n = 82 1 16.373 2362.767 0.9945 + ARM C * F, n = 70 1 32.492 3156.732 0.9918 + +# tables/efficacy/lgrt02.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + y ~ ARM + SEX + AGE + RACE Degrees of Freedom Parameter Estimate Standard Error Odds Ratio Wald 95% CI p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Planned Arm Code 2 0.0346 + Reference ARM A, n = 134 + ARM B, n = 134 1 -2.162 1.084 0.12 (0.01, 0.96) 0.0461 + ARM C, n = 132 1 -0.090 1.426 0.91 (0.06, 14.97) 0.9499 + Sex + Reference M, n = 169 + F, n = 231 1 0.364 0.701 1.44 (0.36, 5.69) 0.6032 + Age + Age 1 0.071 0.053 1.07 (0.97, 1.19) 0.1866 + Race 5 0.9685 + Reference AMERICAN INDIAN OR ALASKA NATIVE, n = 25 + ASIAN, n = 208 1 -16.246 2017.122 0.00 (0.00, >999.99) 0.9936 + BLACK OR AFRICAN AMERICAN, n = 91 1 -15.205 2017.122 0.00 (0.00, >999.99) 0.9940 + WHITE, n = 74 1 -15.955 2017.122 0.00 (0.00, >999.99) 0.9937 + MULTIPLE, n = 1 1 -0.363 10941.553 0.70 (0.00, >999.99) 1.0000 + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER, n = 1 1 1.036 10941.553 2.82 (0.00, >999.99) 0.9999 + +# tables/efficacy/lgrt02.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Estimations at age 30 and 50 Degrees of Freedom Parameter Estimate Standard Error Odds Ratio Wald 90% CI p-value + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Sex + Reference M, n = 169 + F, n = 231 1 -0.381 0.710 0.68 (0.21, 2.20) 0.5915 + Planned Arm Code 2 0.2768 + Reference ARM A, n = 134 + ARM B, n = 134 1 -20.020 13.714 0.1443 + Age + 30 234.91 (0.30, >999.99) + 50 >999.99 (0.04, >999.99) + ARM C, n = 132 1 -15.622 14.810 0.2915 + Age + 30 31.95 (0.03, >999.99) + 50 >999.99 (<0.01, >999.99) + Age + Age 1 -0.877 0.581 0.1309 + Planned Arm Code + ARM A 0.42 (0.16, 1.08) + ARM B 0.97 (0.89, 1.06) + ARM C 0.79 (0.55, 1.11) + Interaction of Planned Arm Code * Age 2 0.2213 + Reference ARM A, n = 134 + ARM B, n = 134 1 0.849 0.583 0.1449 + ARM C, n = 132 1 0.636 0.618 0.3034 + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-mmrmt01.md b/package/tests/testthat/_snaps/development/tables-efficacy-mmrmt01.md new file mode 100644 index 0000000000..bea886c4e9 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-mmrmt01.md @@ -0,0 +1,180 @@ +# tables/efficacy/mmrmt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Visit ARM B ARM A ARM C + Statistics (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + WEEK 1 DAY 8 + n 134 134 132 + Adjusted Mean (SE) 3.488 (0.687) 4.246 (0.687) 3.163 (0.692) + 95% CI (2.136, 4.839) (2.895, 5.598) (1.803, 4.523) + Difference in Adjusted Means (SE) 0.759 (0.973) -0.325 (0.976) + 95% CI (-1.155, 2.672) (-2.243, 1.593) + Relative Increase (%) 21.8% -9.3% + p-value (MMRM) 0.4362 0.7394 + WEEK 2 DAY 15 + n 134 134 132 + Adjusted Mean (SE) 9.135 (0.768) 9.018 (0.767) 8.509 (0.773) + 95% CI (7.626, 10.644) (7.510, 10.527) (6.991, 10.028) + Difference in Adjusted Means (SE) -0.117 (1.087) -0.626 (1.090) + 95% CI (-2.253, 2.020) (-2.768, 1.517) + Relative Increase (%) -1.3% -6.8% + p-value (MMRM) 0.9146 0.5662 + WEEK 3 DAY 22 + n 134 134 132 + Adjusted Mean (SE) 13.547 (0.871) 16.014 (0.871) 15.789 (0.877) + 95% CI (11.835, 15.259) (14.303, 17.726) (14.066, 17.513) + Difference in Adjusted Means (SE) 2.467 (1.232) 2.242 (1.236) + 95% CI (0.044, 4.890) (-0.187, 4.672) + Relative Increase (%) 18.2% 16.6% + p-value (MMRM) 0.0460 0.0704 + WEEK 4 DAY 29 + n 134 134 132 + Adjusted Mean (SE) 18.102 (0.995) 19.479 (0.995) 19.511 (1.002) + 95% CI (16.146, 20.059) (17.523, 21.435) (17.541, 21.481) + Difference in Adjusted Means (SE) 1.377 (1.408) 1.409 (1.413) + 95% CI (-1.392, 4.145) (-1.368, 4.186) + Relative Increase (%) 7.6% 7.8% + p-value (MMRM) 0.3288 0.3192 + WEEK 5 DAY 36 + n 134 134 132 + Adjusted Mean (SE) 23.503 (1.058) 24.931 (1.058) 23.704 (1.065) + 95% CI (21.423, 25.583) (22.851, 27.011) (21.610, 25.798) + Difference in Adjusted Means (SE) 1.428 (1.497) 0.201 (1.502) + 95% CI (-1.515, 4.371) (-2.752, 3.153) + Relative Increase (%) 6.1% 0.9% + p-value (MMRM) 0.3408 0.8937 + +# tables/efficacy/mmrmt01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Visit All Patients + Statistics (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + WEEK 1 DAY 8 + n 400 + Adjusted Mean (SE) 3.615 (0.620) + 95% CI (2.396, 4.834) + WEEK 2 DAY 15 + n 400 + Adjusted Mean (SE) 8.870 (0.602) + 95% CI (7.687, 10.053) + WEEK 3 DAY 22 + n 400 + Adjusted Mean (SE) 15.094 (0.683) + 95% CI (13.751, 16.437) + WEEK 4 DAY 29 + n 400 + Adjusted Mean (SE) 19.009 (0.717) + 95% CI (17.599, 20.418) + WEEK 5 DAY 36 + n 400 + Adjusted Mean (SE) 24.028 (0.747) + 95% CI (22.560, 25.496) + +# tables/efficacy/mmrmt01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Visit ARM B ARM A ARM C + Statistics (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + WEEK 1 DAY 8 + n 134 134 132 + Adjusted Mean (SE) 3.488 (0.687) 4.246 (0.687) 3.163 (0.692) + 95% CI (2.136, 4.839) (2.895, 5.598) (1.803, 4.523) + Difference in Adjusted Means (SE) 0.759 (0.973) -0.325 (0.976) + 95% CI (-1.155, 2.672) (-2.243, 1.593) + Relative Increase (%) 21.8% -9.3% + p-value (MMRM) 0.4362 0.7393 + WEEK 2 DAY 15 + n 134 134 132 + Adjusted Mean (SE) 9.135 (0.768) 9.018 (0.767) 8.509 (0.773) + 95% CI (7.626, 10.644) (7.510, 10.527) (6.991, 10.028) + Difference in Adjusted Means (SE) -0.117 (1.087) -0.626 (1.090) + 95% CI (-2.253, 2.020) (-2.768, 1.517) + Relative Increase (%) -1.3% -6.8% + p-value (MMRM) 0.9147 0.5662 + WEEK 3 DAY 22 + n 134 134 132 + Adjusted Mean (SE) 13.547 (0.871) 16.014 (0.871) 15.789 (0.877) + 95% CI (11.835, 15.259) (14.303, 17.726) (14.066, 17.513) + Difference in Adjusted Means (SE) 2.467 (1.232) 2.242 (1.236) + 95% CI (0.044, 4.890) (-0.187, 4.672) + Relative Increase (%) 18.2% 16.6% + p-value (MMRM) 0.0460 0.0704 + WEEK 4 DAY 29 + n 134 134 132 + Adjusted Mean (SE) 18.102 (0.995) 19.479 (0.995) 19.511 (1.002) + 95% CI (16.146, 20.059) (17.523, 21.435) (17.541, 21.481) + Difference in Adjusted Means (SE) 1.377 (1.408) 1.409 (1.413) + 95% CI (-1.392, 4.145) (-1.368, 4.186) + Relative Increase (%) 7.6% 7.8% + p-value (MMRM) 0.3288 0.3192 + WEEK 5 DAY 36 + n 134 134 132 + Adjusted Mean (SE) 23.503 (1.058) 24.931 (1.058) 23.704 (1.065) + 95% CI (21.423, 25.583) (22.851, 27.011) (21.610, 25.798) + Difference in Adjusted Means (SE) 1.428 (1.497) 0.201 (1.502) + 95% CI (-1.515, 4.371) (-2.752, 3.153) + Relative Increase (%) 6.1% 0.9% + p-value (MMRM) 0.3408 0.8937 + WEEKS 1-2 + n 134 134 132 + Adjusted Mean (SE) 6.311 (0.514) 6.632 (0.514) 5.836 (0.516) + 95% CI (5.301, 7.322) (5.623, 7.642) (4.821, 6.852) + Difference in Adjusted Means (SE) 0.321 (0.728) -0.475 (0.729) + 95% CI (-1.111, 1.753) (-1.909, 0.959) + Relative Increase (%) 5.1% -7.5% + p-value (MMRM) 0.6596 0.5151 + WEEKS 3-5 + n 134 134 132 + Adjusted Mean (SE) 18.384 (0.560) 20.141 (0.560) 19.668 (0.563) + 95% CI (17.284, 19.485) (19.041, 21.241) (18.562, 20.775) + Difference in Adjusted Means (SE) 1.757 (0.793) 1.284 (0.794) + 95% CI (0.198, 3.316) (-0.278, 2.846) + Relative Increase (%) 9.6% 7.0% + p-value (MMRM) 0.0273 0.1068 + ALL VISITS + n 134 134 132 + Adjusted Mean (SE) 13.555 (0.388) 14.738 (0.388) 14.135 (0.389) + 95% CI (12.792, 14.318) (13.976, 15.500) (13.370, 14.900) + Difference in Adjusted Means (SE) 1.183 (0.551) 0.580 (0.551) + 95% CI (0.100, 2.266) (-0.502, 1.663) + Relative Increase (%) 8.7% 4.3% + p-value (MMRM) 0.0324 0.2924 + +# tables/efficacy/mmrmt01.qmd result_baseline development + + Code + print(data_snap[[i]]) + Output + Visit All Patients + Statistics (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + WEEK 1 DAY 8 + n 400 + Adjusted Mean (SE) 3.615 (0.620) + 95% CI (2.396, 4.834) + WEEK 2 DAY 15 + n 400 + Adjusted Mean (SE) 8.870 (0.602) + 95% CI (7.687, 10.053) + WEEK 3 DAY 22 + n 400 + Adjusted Mean (SE) 15.094 (0.683) + 95% CI (13.751, 16.437) + WEEK 4 DAY 29 + n 400 + Adjusted Mean (SE) 19.009 (0.717) + 95% CI (17.599, 20.418) + WEEK 5 DAY 36 + n 400 + Adjusted Mean (SE) 24.028 (0.747) + 95% CI (22.560, 25.496) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-onct05.md b/package/tests/testthat/_snaps/development/tables-efficacy-onct05.md new file mode 100644 index 0000000000..3028b202b3 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-onct05.md @@ -0,0 +1,65 @@ +# tables/efficacy/onct05.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + B: Placebo A: Drug X + Baseline Risk Factors Total n n Responders Response (%) n Responders Response (%) Odds Ratio 95% CI + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + All Patients 268 134 84 62.7% 134 100 74.6% 1.75 (1.04, 2.95) + Sex + F 161 82 48 58.5% 79 61 77.2% 2.40 (1.21, 4.76) + M 107 52 36 69.2% 55 39 70.9% 1.08 (0.47, 2.48) + Stratification Factor 2 + S1 140 67 38 56.7% 73 56 76.7% 2.51 (1.22, 5.20) + S2 128 67 46 68.7% 61 44 72.1% 1.18 (0.55, 2.53) + +# tables/efficacy/onct05.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + B: Placebo A: Drug X + Baseline Risk Factors Total n n Responders Response (%) n Responders Response (%) Odds Ratio 95% CI + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + All Patients 268 134 84 62.7% 134 100 74.6% 1.75 (1.04, 2.95) + Sex + M 107 52 36 69.2% 55 39 70.9% 1.08 (0.47, 2.48) + F 161 82 48 58.5% 79 61 77.2% 2.40 (1.21, 4.76) + Stratification Factor 1 + C 94 45 33 73.3% 49 37 75.5% 1.12 (0.44, 2.83) + B 92 45 26 57.8% 47 32 68.1% 1.56 (0.66, 3.66) + A 82 44 25 56.8% 38 31 81.6% 3.37 (1.22, 9.28) + +# tables/efficacy/onct05.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + B: Placebo A: Drug X + Baseline Risk Factors Total n n Responders Response (%) n Responders Response (%) Odds Ratio 90% CI p-value (Chi-Squared Test) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + All Patients 268 134 84 62.7% 134 100 74.6% 1.75 (1.13, 2.72) 0.0351 + Sex + F 161 82 48 58.5% 79 61 77.2% 2.40 (1.35, 4.27) 0.0113 + M 107 52 36 69.2% 55 39 70.9% 1.08 (0.54, 2.17) 0.8497 + Stratification Factor 2 + S1 140 67 38 56.7% 73 56 76.7% 2.51 (1.37, 4.63) 0.0119 + S2 128 67 46 68.7% 61 44 72.1% 1.18 (0.62, 2.24) 0.6674 + +# tables/efficacy/onct05.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + B: Placebo A: Drug X + Baseline Risk Factors Total n n Responders Response (%) n Responders Response (%) Odds Ratio 95% CI + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + All Patients 268 134 47 35.1% 134 60 44.8% 1.50 (0.92, 2.45) + Sex + F 161 82 25 30.5% 79 39 49.4% 2.22 (1.17, 4.24) + M 107 52 22 42.3% 55 21 38.2% 0.84 (0.39, 1.83) + Stratification Factor 2 + S1 140 67 21 31.3% 73 31 42.5% 1.62 (0.81, 3.24) + S2 128 67 26 38.8% 61 29 47.5% 1.43 (0.71, 2.89) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-ratet01.md b/package/tests/testthat/_snaps/development/tables-efficacy-ratet01.md new file mode 100644 index 0000000000..5c9e726fe1 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-ratet01.md @@ -0,0 +1,34 @@ +# tables/efficacy/ratet01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + B: Placebo A: Drug X C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Number of exacerbations per patient + 0 10 (7.46%) 6 (4.48%) 11 (8.33%) + 1 25 (18.66%) 21 (15.67%) 14 (10.61%) + 2 38 (28.36%) 41 (30.60%) 33 (25.00%) + 3 22 (16.42%) 26 (19.40%) 21 (15.91%) + 4 13 (9.70%) 18 (13.43%) 30 (22.73%) + 5 11 (8.21%) 10 (7.46%) 12 (9.09%) + 6 10 (7.46%) 7 (5.22%) 7 (5.30%) + 7 3 (2.24%) 4 (2.99%) 3 (2.27%) + 8 1 (0.75%) 1 (0.75%) 1 (0.76%) + 9 1 (0.75%) 0 (0.00%) 0 (0.00%) + Unadjusted exacerbation rate (per year) + Rate 7.2364 8.2148 9.8131 + Adjusted (QP) exacerbation rate (per year) + Rate 2.4550 2.8514 3.4304 + Rate CI (1.6194, 3.7219) (1.8974, 4.2850) (2.2946, 5.1284) + Rate Ratio 1.1615 1.3973 + Rate Ratio CI (0.6462, 2.0877) (0.7789, 2.5067) + p-value 0.6169 0.2619 + Adjusted (NB) exacerbation rate (per year) + Rate 2.7374 2.8150 2.9789 + Rate CI (2.3932, 3.1311) (2.4681, 3.2106) (2.6152, 3.3932) + Rate Ratio 1.0283 1.0882 + Rate Ratio CI (0.8856, 1.1941) (0.9381, 1.2624) + p-value 0.7140 0.2643 + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-rspt01.md b/package/tests/testthat/_snaps/development/tables-efficacy-rspt01.md new file mode 100644 index 0000000000..3ddfb3794d --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-rspt01.md @@ -0,0 +1,156 @@ +# tables/efficacy/rspt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 100 (74.6%) 84 (62.7%) 81 (61.4%) + 95% CI (Wald, with correction) (66.9, 82.4) (54.1, 71.2) (52.7, 70.0) + Unstratified Analysis + Difference in Response rate (%) -11.9 -13.3 + 95% CI (Wald, with correction) (-23.7, -0.2) (-25.1, -1.4) + p-value (Chi-Squared Test) 0.0351 0.0204 + Odds Ratio (95% CI) 0.57 (0.34 - 0.96) 0.54 (0.32 - 0.91) + Complete Response (CR) 60 (44.8%) 47 (35.1%) 57 (43.2%) + 95% CI (Wald, with correction) (35.98, 53.57) (26.62, 43.53) (34.35, 52.01) + Partial Response (PR) 40 (29.9%) 37 (27.6%) 24 (18.2%) + 95% CI (Wald, with correction) (21.73, 37.97) (19.67, 35.55) (11.22, 25.14) + Stable Disease (SD) 9 (6.7%) 22 (16.4%) 13 (9.8%) + 95% CI (Wald, with correction) (2.11, 11.33) (9.77, 23.06) (4.39, 15.31) + Progressive Disease (PD) 24 (17.9%) 16 (11.9%) 33 (25.0%) + 95% CI (Wald, with correction) (11.05, 24.78) (6.08, 17.80) (17.23, 32.77) + Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) + 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) + +# tables/efficacy/rspt01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 100 (74.6%) 84 (62.7%) 81 (61.4%) + 95% CI (Wald, with correction) (66.9, 82.4) (54.1, 71.2) (52.7, 70.0) + Unstratified Analysis + Difference in Response rate (%) -11.9 -13.3 + 95% CI (Wald, with correction) (-23.7, -0.2) (-25.1, -1.4) + p-value (Chi-Squared Test) 0.0351 0.0204 + Complete Response (CR) 60 (44.8%) 47 (35.1%) 57 (43.2%) + 95% CI (Wald, with correction) (35.98, 53.57) (26.62, 43.53) (34.35, 52.01) + Partial Response (PR) 40 (29.9%) 37 (27.6%) 24 (18.2%) + 95% CI (Wald, with correction) (21.73, 37.97) (19.67, 35.55) (11.22, 25.14) + Stable Disease (SD) 9 (6.7%) 22 (16.4%) 13 (9.8%) + 95% CI (Wald, with correction) (2.11, 11.33) (9.77, 23.06) (4.39, 15.31) + Progressive Disease (PD) 24 (17.9%) 16 (11.9%) 33 (25.0%) + 95% CI (Wald, with correction) (11.05, 24.78) (6.08, 17.80) (17.23, 32.77) + Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) + 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) + +# tables/efficacy/rspt01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 100 (74.6%) 84 (62.7%) 81 (61.4%) + 90% CI (Clopper-Pearson) (67.7, 80.7) (55.3, 69.7) (53.9, 68.5) + Unstratified Analysis + Difference in Response rate (%) -11.9 -13.3 + 90% CI (Anderson-Hauck) (-21.6, -2.3) (-23.0, -3.5) + p-value (Fisher's Exact Test) 0.0479 0.0253 + Odds Ratio (90% CI) 0.57 (0.37 - 0.89) 0.54 (0.35 - 0.84) + Complete Response (CR) 60 (44.8%) 47 (35.1%) 57 (43.2%) + 90% CI (Clopper-Pearson) (37.48, 52.25) (28.22, 42.43) (35.88, 50.71) + Partial Response (PR) 40 (29.9%) 37 (27.6%) 24 (18.2%) + 90% CI (Clopper-Pearson) (23.36, 37.02) (21.31, 34.67) (12.87, 24.61) + Stable Disease (SD) 9 (6.7%) 22 (16.4%) 13 (9.8%) + 90% CI (Clopper-Pearson) (3.55, 11.43) (11.38, 22.61) (5.92, 15.20) + Progressive Disease (PD) 24 (17.9%) 16 (11.9%) 33 (25.0%) + 90% CI (Clopper-Pearson) (12.67, 24.25) (7.63, 17.57) (18.90, 31.97) + Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) + 90% CI (Clopper-Pearson) (0.04, 3.49) (5.25, 14.11) (1.50, 7.80) + +# tables/efficacy/rspt01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 100 (74.6%) 84 (62.7%) 81 (61.4%) + 95% CI (Wald, with correction) (66.9, 82.4) (54.1, 71.2) (52.7, 70.0) + Unstratified Analysis + Difference in Response rate (%) -11.9 -13.3 + 95% CI (Wald, with correction) (-23.7, -0.2) (-25.1, -1.4) + p-value (Chi-Squared Test) 0.0351 0.0204 + Odds Ratio (95% CI) 0.57 (0.34 - 0.96) 0.54 (0.32 - 0.91) + Stratified Analysis + Difference in Response rate (%) -11.9 -13.5 + 95% CI (CMH, without correction) (-22.7, -1.0) (-24.5, -2.5) + p-value (Cochran-Mantel-Haenszel Test) 0.0366 0.0180 + Odds Ratio (95% CI) 0.57 (0.34 - 0.96) 0.54 (0.32 - 0.90) + Complete Response (CR) 60 (44.8%) 47 (35.1%) 57 (43.2%) + 95% CI (Wald, with correction) (35.98, 53.57) (26.62, 43.53) (34.35, 52.01) + Partial Response (PR) 40 (29.9%) 37 (27.6%) 24 (18.2%) + 95% CI (Wald, with correction) (21.73, 37.97) (19.67, 35.55) (11.22, 25.14) + Stable Disease (SD) 9 (6.7%) 22 (16.4%) 13 (9.8%) + 95% CI (Wald, with correction) (2.11, 11.33) (9.77, 23.06) (4.39, 15.31) + Progressive Disease (PD) 24 (17.9%) 16 (11.9%) 33 (25.0%) + 95% CI (Wald, with correction) (11.05, 24.78) (6.08, 17.80) (17.23, 32.77) + Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) + 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) + +# tables/efficacy/rspt01.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 60 (44.8%) 47 (35.1%) 57 (43.2%) + 95% CI (Wald, with correction) (36.0, 53.6) (26.6, 43.5) (34.4, 52.0) + Unstratified Analysis + Difference in Response rate (%) -9.7 -1.6 + 95% CI (Wald, with correction) (-22.1, 2.7) (-14.3, 11.1) + p-value (Chi-Squared Test) 0.1049 0.7934 + Odds Ratio (95% CI) 0.67 (0.41 - 1.09) 0.94 (0.58 - 1.52) + Complete Response (CR) 60 (44.8%) 47 (35.1%) 57 (43.2%) + 95% CI (Wald, with correction) (35.98, 53.57) (26.62, 43.53) (34.35, 52.01) + Partial Response (PR) 40 (29.9%) 37 (27.6%) 24 (18.2%) + 95% CI (Wald, with correction) (21.73, 37.97) (19.67, 35.55) (11.22, 25.14) + Stable Disease (SD) 9 (6.7%) 22 (16.4%) 13 (9.8%) + 95% CI (Wald, with correction) (2.11, 11.33) (9.77, 23.06) (4.39, 15.31) + Progressive Disease (PD) 24 (17.9%) 16 (11.9%) 33 (25.0%) + 95% CI (Wald, with correction) (11.05, 24.78) (6.08, 17.80) (17.23, 32.77) + Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) + 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) + +# tables/efficacy/rspt01.qmd result_v6 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Responders 109 (81.3%) 106 (79.1%) 94 (71.2%) + 95% CI (Wald, with correction) (74.4, 88.3) (71.8, 86.4) (63.1, 79.3) + Unstratified Analysis + Difference in Response rate (%) -2.2 -10.1 + 95% CI (Wald, with correction) (-12.5, 8.0) (-21.0, 0.8) + p-value (Chi-Squared Test) 0.6455 0.0520 + Odds Ratio (95% CI) 0.87 (0.48 - 1.59) 0.57 (0.32 - 1.01) + Progressive Disease (PD) 24 (17.9%) 16 (11.9%) 33 (25.0%) + 95% CI (Wald, with correction) (11.05, 24.78) (6.08, 17.80) (17.23, 32.77) + No Progression 109 (81.3%) 106 (79.1%) 94 (71.2%) + 95% CI (Wald, with correction) (74.37, 88.31) (71.85, 86.36) (63.11, 79.31) + Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) + 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) + diff --git a/package/tests/testthat/_snaps/development/tables-efficacy-ttet01.md b/package/tests/testthat/_snaps/development/tables-efficacy-ttet01.md new file mode 100644 index 0000000000..c2004228b8 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-efficacy-ttet01.md @@ -0,0 +1,216 @@ +# tables/efficacy/ttet01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with event (%) 58 (43.3%) 58 (43.3%) 69 (52.3%) + Earliest contributing event + Death 58 58 69 + Patients without event (%) 76 (56.7%) 76 (56.7%) 63 (47.7%) + Time to Event (Months) + Median NA NA 9.4 + 95% CI (9.3, NA) (9.4, NA) (7.6, NA) + 25% and 75%-ile 5.6, NA 5.6, NA 5.0, NA + Range 0.5 to 16.4 {1} 0.9 to 16.3 {1} 0.5 to 16.3 {1} + Unstratified Analysis + p-value (log-rank) 0.9998 0.1541 + Hazard Ratio 1.00 1.29 + 95% CI (0.69, 1.44) (0.91, 1.83) + 6 Months + Patients remaining at risk 97 97 90 + Event Free Rate (%) 72.39 72.39 68.18 + 95% CI (64.82, 79.96) (64.82, 79.96) (60.24, 76.13) + Difference in Event Free Rate 0.00 -4.21 + 95% CI (-10.71, 10.71) (-15.18, 6.77) + p-value (Z-test) 1.0000 0.4525 + 12 Months + Patients remaining at risk 49 48 37 + Event Free Rate (%) 56.72 56.72 47.73 + 95% CI (48.33, 65.11) (48.33, 65.11) (39.21, 56.25) + Difference in Event Free Rate 0.00 -8.99 + 95% CI (-11.86, 11.86) (-20.95, 2.97) + p-value (Z-test) 1.0000 0.1406 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observation: range maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/efficacy/ttet01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with event (%) 58 (43.3%) 58 (43.3%) 69 (52.3%) + Patients without event (%) 76 (56.7%) 76 (56.7%) 63 (47.7%) + Time to Event (Months) + Median NA NA 9.4 + 95% CI (9.3, NA) (9.4, NA) (7.6, NA) + 25% and 75%-ile 5.6, NA 5.6, NA 5.0, NA + Range 0.5 to 16.4 {1} 0.9 to 16.3 {1} 0.5 to 16.3 {1} + Unstratified Analysis + p-value (log-rank) 0.9998 0.1541 + Hazard Ratio 1.00 1.29 + 95% CI (0.69, 1.44) (0.91, 1.83) + 6 Months + Patients remaining at risk 97 97 90 + Event Free Rate (%) 72.39 72.39 68.18 + 95% CI (64.82, 79.96) (64.82, 79.96) (60.24, 76.13) + 12 Months + Patients remaining at risk 49 48 37 + Event Free Rate (%) 56.72 56.72 47.73 + 95% CI (48.33, 65.11) (48.33, 65.11) (39.21, 56.25) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observation: range maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/efficacy/ttet01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with event (%) 58 (43.3%) 58 (43.3%) 69 (52.3%) + Earliest contributing event + Death 58 58 69 + Patients without event (%) 76 (56.7%) 76 (56.7%) 63 (47.7%) + Time to Event (Months) + Median NA NA 9.4 + 90% CI (9.6, NA) (9.6, NA) (7.7, NA) + 25% and 75%-ile 5.6, NA 5.6, NA 5.0, NA + Range 0.5 to 16.4 {1} 0.9 to 16.3 {1} 0.5 to 16.3 {1} + Unstratified Analysis + p-value (log-rank) 0.9998 0.1541 + Hazard Ratio 1.00 1.29 + 95% CI (0.69, 1.44) (0.91, 1.83) + 12 Months + Patients remaining at risk 49 48 37 + Event Free Rate (%) 56.72 56.72 47.73 + 90% CI (49.37, 63.41) (49.37, 63.41) (40.42, 54.66) + Difference in Event Free Rate 0.00 -8.99 + 97.5% CI (-13.57, 13.57) (-22.66, 4.69) + p-value (Z-test) 1.0000 0.1406 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observation: range maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/efficacy/ttet01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with event (%) 58 (43.3%) 58 (43.3%) 69 (52.3%) + Earliest contributing event + Death 58 58 69 + Patients without event (%) 76 (56.7%) 76 (56.7%) 63 (47.7%) + Time to Event (Months) + Median NA NA 9.4 + 95% CI (9.3, NA) (9.4, NA) (7.6, NA) + 25% and 75%-ile 5.6, NA 5.6, NA 5.0, NA + Range 0.5 to 16.4 {1} 0.9 to 16.3 {1} 0.5 to 16.3 {1} + Unstratified Analysis + p-value (log-rank) 0.9998 0.1541 + Hazard Ratio 1.00 1.29 + 95% CI (0.69, 1.44) (0.91, 1.83) + Stratified Analysis + p-value (log-rank) 0.9978 0.1733 + Hazard Ratio 1.00 1.27 + 95% CI (0.69, 1.44) (0.90, 1.81) + 12 Months + Patients remaining at risk 49 48 37 + Event Free Rate (%) 56.72 56.72 47.73 + 95% CI (48.33, 65.11) (48.33, 65.11) (39.21, 56.25) + Difference in Event Free Rate 0.00 -8.99 + 95% CI (-11.86, 11.86) (-20.95, 2.97) + p-value (Z-test) 1.0000 0.1406 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observation: range maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/efficacy/ttet01.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with event (%) 58 (43.3%) 58 (43.3%) 69 (52.3%) + Earliest contributing event + Death 58 58 69 + Patients without event (%) 76 (56.7%) 76 (56.7%) 63 (47.7%) + Time to Event (Months) + Median NA NA 9.4 + 95% CI (9.3, NA) (9.4, NA) (7.6, NA) + 25% and 75%-ile 5.6, NA 5.6, NA 5.0, NA + Range 0.5 to 16.4 {1} 0.9 to 16.3 {1} 0.5 to 16.3 {1} + Unstratified Analysis + p-value (log-rank) 0.9998 0.1541 + Hazard Ratio 1.00 1.29 + 95% CI (0.69, 1.44) (0.91, 1.83) + 6 Months + Patients remaining at risk 97 97 90 + Event Free Rate (%) 72.39 72.39 68.18 + 95% CI (64.82, 79.96) (64.82, 79.96) (60.24, 76.13) + Difference in Event Free Rate 0.00 -4.21 + 95% CI (-10.71, 10.71) (-15.18, 6.77) + p-value (Z-test) 1.0000 0.4525 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observation: range maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/efficacy/ttet01.qmd result_v6 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with event (%) 58 (43.3%) 58 (43.3%) 69 (52.3%) + Earliest contributing event + Death 58 58 69 + Patients without event (%) 76 (56.7%) 76 (56.7%) 63 (47.7%) + Time to Event (Months) + Median NA NA 9.4 + 95% CI (9.3, NA) (9.4, NA) (7.6, NA) + 25% and 75%-ile 5.6, NA 5.6, NA 5.0, NA + Range 0.5 to 16.4 {1} 0.9 to 16.3 {1} 0.5 to 16.3 {1} + Unstratified Analysis + p-value (log-rank) 0.9998 0.1541 + p-value (wald) 0.9998 0.1552 + p-value (likelihood) 0.9998 0.1543 + Hazard Ratio 1.00 1.29 + 95% CI (0.69, 1.44) (0.91, 1.83) + 12 Months + Patients remaining at risk 49 48 37 + Event Free Rate (%) 56.72 56.72 47.73 + 95% CI (48.33, 65.11) (48.33, 65.11) (39.21, 56.25) + Difference in Event Free Rate 0.00 -8.99 + 95% CI (-11.86, 11.86) (-20.95, 2.97) + p-value (Z-test) 1.0000 0.1406 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observation: range maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + diff --git a/package/tests/testthat/_snaps/development/tables-exposure-ext01.md b/package/tests/testthat/_snaps/development/tables-exposure-ext01.md new file mode 100644 index 0000000000..7dba31a492 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-exposure-ext01.md @@ -0,0 +1,169 @@ +# tables/exposure/ext01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Parameter Category (Drug A/Drug B) (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Drug A + Overall duration (days) + n 75 67 75 + Mean (SD) 74.3 (41.6) 79.0 (43.1) 74.2 (39.5) + Median 77.0 80.0 78.0 + Min - Max 5.0 - 149.0 2.0 - 150.0 1.0 - 147.0 + Total dose administered + n 75 67 75 + Mean (SD) 6675.2 (1110.9) 6505.1 (1249.3) 6982.4 (1272.5) + Median 6720.0 6480.0 7200.0 + Min - Max 4800.0 - 9360.0 4080.0 - 9360.0 4320.0 - 9360.0 + Total number of doses administered + n 75 67 75 + Mean (SD) 7.0 (0.0) 7.0 (0.0) 7.0 (0.0) + Median 7.0 7.0 7.0 + Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 + Total number of missed doses during study + n 75 67 75 + Mean (SD) 10.5 (5.9) 10.0 (6.1) 9.5 (5.5) + Median 10.0 11.0 9.0 + Min - Max 0.0 - 20.0 0.0 - 19.0 0.0 - 20.0 + Drug B + Overall duration (days) + n 59 67 57 + Mean (SD) 77.5 (40.5) 76.3 (41.0) 69.5 (46.2) + Median 79.0 76.0 65.0 + Min - Max 2.0 - 149.0 5.0 - 148.0 1.0 - 149.0 + Total dose administered + n 59 67 57 + Mean (SD) 6630.5 (1334.0) 6297.3 (1291.1) 6505.3 (1080.7) + Median 6720.0 6240.0 6480.0 + Min - Max 4320.0 - 8880.0 4080.0 - 9120.0 4320.0 - 8640.0 + Total number of doses administered + n 59 67 57 + Mean (SD) 7.0 (0.0) 7.0 (0.0) 7.0 (0.0) + Median 7.0 7.0 7.0 + Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 + Total number of missed doses during study + n 59 67 57 + Mean (SD) 9.1 (6.5) 10.0 (6.3) 10.7 (5.8) + Median 9.0 10.0 11.0 + Min - Max 0.0 - 20.0 0.0 - 20.0 1.0 - 20.0 + +# tables/exposure/ext01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Parameter Category (Drug A/Drug B) (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Drug A + Overall duration (days) + n 75 67 75 + Mean (SD) 74.3 (41.6) 79.0 (43.1) 74.2 (39.5) + Median 77.0 80.0 78.0 + Min - Max 5.0 - 149.0 2.0 - 150.0 1.0 - 147.0 + Overall duration (days) + n 75 67 75 + 0 - 30 12 (16%) 12 (17.9%) 15 (20%) + 31 - 60 18 (24%) 12 (17.9%) 14 (18.7%) + 61 - 90 19 (25.3%) 15 (22.4%) 18 (24%) + >= 91 26 (34.7%) 28 (41.8%) 28 (37.3%) + Total dose administered + n 75 67 75 + Mean (SD) 6675.2 (1110.9) 6505.1 (1249.3) 6982.4 (1272.5) + Median 6720.0 6480.0 7200.0 + Min - Max 4800.0 - 9360.0 4080.0 - 9360.0 4320.0 - 9360.0 + Total number of doses administered + n 75 67 75 + Mean (SD) 7.0 (0.0) 7.0 (0.0) 7.0 (0.0) + Median 7.0 7.0 7.0 + Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 + Drug B + Overall duration (days) + n 59 67 57 + Mean (SD) 77.5 (40.5) 76.3 (41.0) 69.5 (46.2) + Median 79.0 76.0 65.0 + Min - Max 2.0 - 149.0 5.0 - 148.0 1.0 - 149.0 + Overall duration (days) + n 59 67 57 + 0 - 30 8 (13.6%) 10 (14.9%) 16 (28.1%) + 31 - 60 14 (23.7%) 16 (23.9%) 12 (21.1%) + 61 - 90 15 (25.4%) 17 (25.4%) 11 (19.3%) + >= 91 22 (37.3%) 24 (35.8%) 18 (31.6%) + Total dose administered + n 59 67 57 + Mean (SD) 6630.5 (1334.0) 6297.3 (1291.1) 6505.3 (1080.7) + Median 6720.0 6240.0 6480.0 + Min - Max 4320.0 - 8880.0 4080.0 - 9120.0 4320.0 - 8640.0 + Total number of doses administered + n 59 67 57 + Mean (SD) 7.0 (0.0) 7.0 (0.0) 7.0 (0.0) + Median 7.0 7.0 7.0 + Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 + +# tables/exposure/ext01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Parameter Category (Drug A/Drug B) (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Drug A + Overall duration (days) + n 75 67 75 + Mean (SD) 74.3 (41.6) 79.0 (43.1) 74.2 (39.5) + Median 77.0 80.0 78.0 + Min - Max 5.0 - 149.0 2.0 - 150.0 1.0 - 147.0 + Overall duration (days) + n 75 67 75 + 0 - 30 12 (16%) 12 (17.9%) 15 (20%) + 31 - 60 18 (24%) 12 (17.9%) 14 (18.7%) + 61 - 90 19 (25.3%) 15 (22.4%) 18 (24%) + >= 91 26 (34.7%) 28 (41.8%) 28 (37.3%) + Total dose administered + n 75 67 75 + Mean (SD) 6675.2 (1110.9) 6505.1 (1249.3) 6982.4 (1272.5) + Median 6720.0 6480.0 7200.0 + Min - Max 4800.0 - 9360.0 4080.0 - 9360.0 4320.0 - 9360.0 + Total number of doses administered + n 75 67 75 + Mean (SD) 7.0 (0.0) 7.0 (0.0) 7.0 (0.0) + Median 7.0 7.0 7.0 + Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 + Missed Doses + n 75 67 75 + At least 1 missed dose 74 (55.2%) 63 (47%) 73 (55.3%) + At least 5 missed doses 59 (44%) 49 (36.6%) 59 (44.7%) + At least 10 missed doses 41 (30.6%) 38 (28.4%) 37 (28%) + At least 15 missed doses 26 (19.4%) 21 (15.7%) 16 (12.1%) + Drug B + Overall duration (days) + n 59 67 57 + Mean (SD) 77.5 (40.5) 76.3 (41.0) 69.5 (46.2) + Median 79.0 76.0 65.0 + Min - Max 2.0 - 149.0 5.0 - 148.0 1.0 - 149.0 + Overall duration (days) + n 59 67 57 + 0 - 30 8 (13.6%) 10 (14.9%) 16 (28.1%) + 31 - 60 14 (23.7%) 16 (23.9%) 12 (21.1%) + 61 - 90 15 (25.4%) 17 (25.4%) 11 (19.3%) + >= 91 22 (37.3%) 24 (35.8%) 18 (31.6%) + Total dose administered + n 59 67 57 + Mean (SD) 6630.5 (1334.0) 6297.3 (1291.1) 6505.3 (1080.7) + Median 6720.0 6240.0 6480.0 + Min - Max 4320.0 - 8880.0 4080.0 - 9120.0 4320.0 - 8640.0 + Total number of doses administered + n 59 67 57 + Mean (SD) 7.0 (0.0) 7.0 (0.0) 7.0 (0.0) + Median 7.0 7.0 7.0 + Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 + Missed Doses + n 59 67 57 + At least 1 missed dose 56 (41.8%) 63 (47%) 57 (43.2%) + At least 5 missed doses 41 (30.6%) 50 (37.3%) 47 (35.6%) + At least 10 missed doses 27 (20.1%) 36 (26.9%) 31 (23.5%) + At least 15 missed doses 17 (12.7%) 18 (13.4%) 20 (15.2%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt01.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt01.md new file mode 100644 index 0000000000..e7f6b5df17 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt01.md @@ -0,0 +1,42 @@ +# tables/lab-results/lbt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Change from Change from Change from + Parameter Value at Visit Baseline Value at Visit Baseline Value at Visit Baseline + Analysis Visit (N=804) (N=804) (N=670) (N=670) (N=792) (N=792) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + BASELINE + n 134 134 132 + Mean (SD) 17.74 (9.93) 18.71 (9.83) 19.46 (9.08) + Median 17.46 18.19 18.97 + Min - Max 0.00 - 44.06 1.48 - 54.40 0.57 - 39.81 + WEEK 1 DAY 8 + n 134 134 0 0 132 132 + Mean (SD) 16.75 (9.08) -0.99 (13.49) NE (NE) NE (NE) 19.61 (9.27) 0.14 (12.85) + Median 16.02 -1.28 NE NE 19.00 0.06 + Min - Max 0.05 - 36.30 -31.31 - 27.89 NE - NE NE - NE 0.91 - 44.75 -32.45 - 38.85 + WEEK 2 DAY 15 + n 134 134 134 134 132 132 + Mean (SD) 17.82 (9.60) 0.08 (14.15) 18.82 (9.73) 0.11 (14.45) 16.55 (8.15) -2.92 (12.64) + Median 15.92 0.28 17.96 -0.93 17.02 -1.11 + Min - Max 0.40 - 44.33 -32.89 - 40.55 0.18 - 44.34 -45.93 - 29.85 0.35 - 34.69 -28.36 - 23.98 + WEEK 3 DAY 22 + n 134 134 134 134 132 132 + Mean (SD) 18.37 (9.30) 0.63 (13.85) 17.65 (9.58) -1.06 (13.58) 16.75 (9.54) -2.71 (13.22) + Median 18.11 1.13 17.68 -0.49 15.10 -2.66 + Min - Max 0.59 - 41.73 -40.09 - 31.24 0.02 - 38.61 -46.30 - 31.38 0.48 - 39.23 -30.63 - 26.51 + WEEK 4 DAY 29 + n 134 134 134 134 132 132 + Mean (SD) 19.17 (10.95) 1.44 (15.39) 17.22 (10.64) -1.48 (15.20) 17.92 (9.32) -1.54 (12.63) + Median 17.41 0.88 15.88 -2.96 17.71 -1.53 + Min - Max 0.93 - 54.24 -32.93 - 46.98 0.39 - 47.96 -41.45 - 43.08 0.25 - 41.27 -30.33 - 27.99 + WEEK 5 DAY 36 + n 134 134 134 134 132 132 + Mean (SD) 19.22 (9.47) 1.48 (14.49) 18.01 (9.92) -0.69 (14.65) 18.51 (9.43) -0.95 (12.92) + Median 19.80 2.31 18.28 1.82 19.26 -2.48 + Min - Max 0.01 - 43.42 -40.08 - 30.07 0.11 - 40.64 -47.60 - 26.04 0.02 - 37.46 -29.78 - 25.00 + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt02.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt02.md new file mode 100644 index 0000000000..199805aaa2 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt02.md @@ -0,0 +1,39 @@ +# tables/lab-results/lbt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination All Patients + Analysis Visit (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BASELINE + n 134 134 132 400 + Mean (SD) 17.7 (9.9) 18.7 (9.8) 19.5 (9.1) 18.6 (9.6) + Median 17.5 18.2 19.0 18.0 + Min - Max 0.0 - 44.1 1.5 - 54.4 0.6 - 39.8 0.0 - 54.4 + WEEK 1 DAY 8 + n 134 134 132 400 + Mean (SD) 16.8 (9.1) 18.9 (9.2) 19.6 (9.3) 18.4 (9.2) + Median 16.0 18.2 19.0 18.0 + Min - Max 0.1 - 36.3 0.7 - 39.9 0.9 - 44.7 0.1 - 44.7 + WEEK 2 DAY 15 + n 134 134 132 400 + Mean (SD) 17.8 (9.6) 18.8 (9.7) 16.5 (8.2) 17.7 (9.2) + Median 15.9 18.0 17.0 17.0 + Min - Max 0.4 - 44.3 0.2 - 44.3 0.3 - 34.7 0.2 - 44.3 + WEEK 3 DAY 22 + n 134 134 132 400 + Mean (SD) 18.4 (9.3) 17.6 (9.6) 16.8 (9.5) 17.6 (9.5) + Median 18.1 17.7 15.1 17.2 + Min - Max 0.6 - 41.7 0.0 - 38.6 0.5 - 39.2 0.0 - 41.7 + WEEK 4 DAY 29 + n 134 134 132 400 + Mean (SD) 19.2 (11.0) 17.2 (10.6) 17.9 (9.3) 18.1 (10.3) + Median 17.4 15.9 17.7 17.3 + Min - Max 0.9 - 54.2 0.4 - 48.0 0.2 - 41.3 0.2 - 54.2 + WEEK 5 DAY 36 + n 134 134 132 400 + Mean (SD) 19.2 (9.5) 18.0 (9.9) 18.5 (9.4) 18.6 (9.6) + Median 19.8 18.3 19.3 19.0 + Min - Max 0.0 - 43.4 0.1 - 40.6 0.0 - 37.5 0.0 - 43.4 + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt03.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt03.md new file mode 100644 index 0000000000..198fe3f1a2 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt03.md @@ -0,0 +1,78 @@ +# tables/lab-results/lbt03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Analysis Visit (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BASELINE + n 134 134 132 + Mean (SD) 9.06 (0.93) 8.99 (0.98) 8.98 (0.89) + Median 9.07 8.92 8.96 + Min - Max 6.21 - 11.87 6.23 - 11.63 6.24 - 11.18 + WEEK 1 DAY 8 + n 134 0 132 + Mean (SD) -0.05 (1.38) NA -0.02 (1.30) + Median -0.17 NA 0.02 + Min - Max -3.56 - 3.48 NA -3.28 - 3.33 + WEEK 2 DAY 15 + n 134 134 132 + Mean (SD) -0.19 (1.47) 0.01 (1.45) 0.15 (1.25) + Median -0.27 -0.00 0.15 + Min - Max -4.53 - 4.45 -3.79 - 3.43 -2.92 - 3.28 + WEEK 3 DAY 22 + n 134 134 132 + Mean (SD) 0.03 (1.38) -0.02 (1.49) 0.02 (1.34) + Median 0.15 -0.04 0.20 + Min - Max -3.95 - 2.99 -4.28 - 4.24 -2.76 - 3.26 + WEEK 4 DAY 29 + n 134 134 132 + Mean (SD) -0.26 (1.45) 0.05 (1.24) -0.01 (1.17) + Median -0.37 0.10 -0.06 + Min - Max -3.74 - 4.15 -3.34 - 3.71 -3.06 - 3.22 + WEEK 5 DAY 36 + n 134 134 132 + Mean (SD) -0.02 (1.50) 0.07 (1.34) 0.03 (1.27) + Median 0.01 0.15 0.05 + Min - Max -4.15 - 3.96 -3.50 - 3.53 -3.63 - 4.78 + +# tables/lab-results/lbt03.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Analysis Visit (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + BASELINE + n 134 134 132 + Mean (SD) 9.06 (0.93) 8.99 (0.98) 8.98 (0.89) + Median 9.07 8.92 8.96 + Min - Max 6.21 - 11.87 6.23 - 11.63 6.24 - 11.18 + WEEK 1 DAY 8 value minus baseline + n 134 0 132 + Mean (SD) -0.05 (1.38) NA -0.02 (1.30) + Median -0.17 NA 0.02 + Min - Max -3.56 - 3.48 NA -3.28 - 3.33 + WEEK 2 DAY 15 value minus baseline + n 134 134 132 + Mean (SD) -0.19 (1.47) 0.01 (1.45) 0.15 (1.25) + Median -0.27 -0.00 0.15 + Min - Max -4.53 - 4.45 -3.79 - 3.43 -2.92 - 3.28 + WEEK 3 DAY 22 value minus baseline + n 134 134 132 + Mean (SD) 0.03 (1.38) -0.02 (1.49) 0.02 (1.34) + Median 0.15 -0.04 0.20 + Min - Max -3.95 - 2.99 -4.28 - 4.24 -2.76 - 3.26 + WEEK 4 DAY 29 value minus baseline + n 134 134 132 + Mean (SD) -0.26 (1.45) 0.05 (1.24) -0.01 (1.17) + Median -0.37 0.10 -0.06 + Min - Max -3.74 - 4.15 -3.34 - 3.71 -3.06 - 3.22 + WEEK 5 DAY 36 value minus baseline + n 134 134 132 + Mean (SD) -0.02 (1.50) 0.07 (1.34) 0.03 (1.27) + Median 0.01 0.15 0.05 + Min - Max -4.15 - 3.96 -3.50 - 3.53 -3.63 - 4.78 + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt04.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt04.md new file mode 100644 index 0000000000..c05c8753fc --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt04.md @@ -0,0 +1,18 @@ +# tables/lab-results/lbt04.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Laboratory Test A: Drug X B: Placebo C: Combination + Direction of Abnormality (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + Low 57/113 (50.4%) 62/117 (53%) 61/123 (49.6%) + High 0/134 0/134 0/132 + C-Reactive Protein Measurement + Low 78/119 (65.5%) 71/113 (62.8%) 62/112 (55.4%) + High 69/114 (60.5%) 57/112 (50.9%) 58/115 (50.4%) + Immunoglobulin A Measurement + Low 0/134 0/134 0/132 + High 64/119 (53.8%) 62/116 (53.4%) 62/113 (54.9%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt05.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt05.md new file mode 100644 index 0000000000..59f13bc883 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt05.md @@ -0,0 +1,96 @@ +# tables/lab-results/lbt05.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Laboratory Test A: Drug X B: Placebo C: Combination + Direction of Abnormality (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement (n) 125 120 125 + Low + Single, not last 3 (2.4%) 5 (4.2%) 5 (4%) + Last or replicated 52 (41.6%) 59 (49.2%) 44 (35.2%) + Any Abnormality 55 (44%) 64 (53.3%) 49 (39.2%) + High + Any Abnormality 0 0 0 + C-Reactive Protein Measurement (n) 129 130 121 + Low + Single, not last 3 (2.3%) 7 (5.4%) 6 (5%) + Last or replicated 59 (45.7%) 50 (38.5%) 49 (40.5%) + Any Abnormality 62 (48.1%) 57 (43.8%) 55 (45.5%) + High + Single, not last 5 (3.9%) 4 (3.1%) 2 (1.7%) + Last or replicated 49 (38%) 54 (41.5%) 45 (37.2%) + Any Abnormality 54 (41.9%) 58 (44.6%) 47 (38.8%) + Immunoglobulin A Measurement (n) 129 122 121 + Low + Any Abnormality 0 0 0 + High + Single, not last 4 (3.1%) 6 (4.9%) 3 (2.5%) + Last or replicated 48 (37.2%) 47 (38.5%) 55 (45.5%) + Any Abnormality 52 (40.3%) 53 (43.4%) 58 (47.9%) + +# tables/lab-results/lbt05.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Laboratory Test A: Drug X B: Placebo C: Combination + Direction of Abnormality (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement (n) 125 120 125 + Low + Single, not last 3 (2.4%) 5 (4.2%) 5 (4%) + Last or replicated 52 (41.6%) 59 (49.2%) 44 (35.2%) + Any Abnormality 55 (44%) 64 (53.3%) 49 (39.2%) + High + Single, not last 0 0 0 + Last or replicated 0 0 0 + Any Abnormality 0 0 0 + C-Reactive Protein Measurement (n) 129 130 121 + Low + Single, not last 3 (2.3%) 7 (5.4%) 6 (5%) + Last or replicated 59 (45.7%) 50 (38.5%) 49 (40.5%) + Any Abnormality 62 (48.1%) 57 (43.8%) 55 (45.5%) + High + Single, not last 5 (3.9%) 4 (3.1%) 2 (1.7%) + Last or replicated 49 (38%) 54 (41.5%) 45 (37.2%) + Any Abnormality 54 (41.9%) 58 (44.6%) 47 (38.8%) + Immunoglobulin A Measurement (n) 129 122 121 + Low + Single, not last 0 0 0 + Last or replicated 0 0 0 + Any Abnormality 0 0 0 + High + Single, not last 4 (3.1%) 6 (4.9%) 3 (2.5%) + Last or replicated 48 (37.2%) 47 (38.5%) 55 (45.5%) + Any Abnormality 52 (40.3%) 53 (43.4%) 58 (47.9%) + +# tables/lab-results/lbt05.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Laboratory Test A: Drug X B: Placebo C: Combination + Direction of Abnormality (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement (n) 125 120 125 + Low + Single, not last 3 (2.4%) 5 (4.2%) 5 (4%) + Last or replicated 52 (41.6%) 59 (49.2%) 44 (35.2%) + Any Abnormality 55 (44%) 64 (53.3%) 49 (39.2%) + C-Reactive Protein Measurement (n) 129 130 121 + Low + Single, not last 3 (2.3%) 7 (5.4%) 6 (5%) + Last or replicated 59 (45.7%) 50 (38.5%) 49 (40.5%) + Any Abnormality 62 (48.1%) 57 (43.8%) 55 (45.5%) + High + Single, not last 5 (3.9%) 4 (3.1%) 2 (1.7%) + Last or replicated 49 (38%) 54 (41.5%) 45 (37.2%) + Any Abnormality 54 (41.9%) 58 (44.6%) 47 (38.8%) + Immunoglobulin A Measurement (n) 129 122 121 + High + Single, not last 4 (3.1%) 6 (4.9%) 3 (2.5%) + Last or replicated 48 (37.2%) 47 (38.5%) 55 (45.5%) + Any Abnormality 52 (40.3%) 53 (43.4%) 58 (47.9%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt06.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt06.md new file mode 100644 index 0000000000..14cd296f90 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt06.md @@ -0,0 +1,194 @@ +# tables/lab-results/lbt06.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Visit + Analysis Reference Range Indicator A: Drug X B: Placebo C: Combination + Baseline Status (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + WEEK 1 DAY 8 + Low + Not low 16/119 (13.4%) 22/113 (19.5%) 24/112 (21.4%) + Low 2/15 (13.3%) 2/21 (9.5%) 7/20 (35%) + Total 18/134 (13.4%) 24/134 (17.9%) 31/132 (23.5%) + High + Not high 21/114 (18.4%) 20/112 (17.9%) 17/115 (14.8%) + High 2/20 (10%) 4/22 (18.2%) 3/17 (17.6%) + Total 23/134 (17.2%) 24/134 (17.9%) 20/132 (15.2%) + WEEK 2 DAY 15 + Low + Not low 26/119 (21.8%) 20/113 (17.7%) 12/112 (10.7%) + Low 2/15 (13.3%) 3/21 (14.3%) 4/20 (20%) + Total 28/134 (20.9%) 23/134 (17.2%) 16/132 (12.1%) + High + Not high 15/114 (13.2%) 17/112 (15.2%) 15/115 (13%) + High 2/20 (10%) 4/22 (18.2%) 4/17 (23.5%) + Total 17/134 (12.7%) 21/134 (15.7%) 19/132 (14.4%) + WEEK 3 DAY 22 + Low + Not low 15/119 (12.6%) 21/113 (18.6%) 18/112 (16.1%) + Low 0/15 3/21 (14.3%) 0/20 + Total 15/134 (11.2%) 24/134 (17.9%) 18/132 (13.6%) + High + Not high 22/114 (19.3%) 18/112 (16.1%) 17/115 (14.8%) + High 2/20 (10%) 5/22 (22.7%) 1/17 (5.9%) + Total 24/134 (17.9%) 23/134 (17.2%) 18/132 (13.6%) + WEEK 4 DAY 29 + Low + Not low 30/119 (25.2%) 13/113 (11.5%) 16/112 (14.3%) + Low 3/15 (20%) 2/21 (9.5%) 5/20 (25%) + Total 33/134 (24.6%) 15/134 (11.2%) 21/132 (15.9%) + High + Not high 17/114 (14.9%) 11/112 (9.8%) 16/115 (13.9%) + High 2/20 (10%) 6/22 (27.3%) 3/17 (17.6%) + Total 19/134 (14.2%) 17/134 (12.7%) 19/132 (14.4%) + WEEK 5 DAY 36 + Low + Not low 17/119 (14.3%) 19/113 (16.8%) 16/112 (14.3%) + Low 2/15 (13.3%) 3/21 (14.3%) 5/20 (25%) + Total 19/134 (14.2%) 22/134 (16.4%) 21/132 (15.9%) + High + Not high 19/114 (16.7%) 17/112 (15.2%) 11/115 (9.6%) + High 4/20 (20%) 6/22 (27.3%) 2/17 (11.8%) + Total 23/134 (17.2%) 23/134 (17.2%) 13/132 (9.8%) + +# tables/lab-results/lbt06.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Parameter + Visit + Analysis Reference Range Indicator A: Drug X B: Placebo C: Combination + Baseline Status (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + WEEK 1 DAY 8 + Low + Not low 19/113 (16.8%) 13/117 (11.1%) 14/123 (11.4%) + Low 2/21 (9.5%) 1/17 (5.9%) 1/9 (11.1%) + Total 21/134 (15.7%) 14/134 (10.4%) 15/132 (11.4%) + High + Not high 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + WEEK 2 DAY 15 + Low + Not low 17/113 (15%) 13/117 (11.1%) 13/123 (10.6%) + Low 2/21 (9.5%) 2/17 (11.8%) 4/9 (44.4%) + Total 19/134 (14.2%) 15/134 (11.2%) 17/132 (12.9%) + High + Not high 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + WEEK 3 DAY 22 + Low + Not low 10/113 (8.8%) 20/117 (17.1%) 21/123 (17.1%) + Low 4/21 (19%) 4/17 (23.5%) 2/9 (22.2%) + Total 14/134 (10.4%) 24/134 (17.9%) 23/132 (17.4%) + High + Not high 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + WEEK 4 DAY 29 + Low + Not low 15/113 (13.3%) 19/117 (16.2%) 18/123 (14.6%) + Low 2/21 (9.5%) 3/17 (17.6%) 1/9 (11.1%) + Total 17/134 (12.7%) 22/134 (16.4%) 19/132 (14.4%) + High + Not high 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + WEEK 5 DAY 36 + Low + Not low 17/113 (15%) 23/117 (19.7%) 18/123 (14.6%) + Low 0/21 1/17 (5.9%) 1/9 (11.1%) + Total 17/134 (12.7%) 24/134 (17.9%) 19/132 (14.4%) + High + Not high 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + C-Reactive Protein Measurement + WEEK 1 DAY 8 + Low + Not low 16/119 (13.4%) 22/113 (19.5%) 24/112 (21.4%) + Low 2/15 (13.3%) 2/21 (9.5%) 7/20 (35%) + Total 18/134 (13.4%) 24/134 (17.9%) 31/132 (23.5%) + High + Not high 21/114 (18.4%) 20/112 (17.9%) 17/115 (14.8%) + High 2/20 (10%) 4/22 (18.2%) 3/17 (17.6%) + Total 23/134 (17.2%) 24/134 (17.9%) 20/132 (15.2%) + WEEK 2 DAY 15 + Low + Not low 26/119 (21.8%) 20/113 (17.7%) 12/112 (10.7%) + Low 2/15 (13.3%) 3/21 (14.3%) 4/20 (20%) + Total 28/134 (20.9%) 23/134 (17.2%) 16/132 (12.1%) + High + Not high 15/114 (13.2%) 17/112 (15.2%) 15/115 (13%) + High 2/20 (10%) 4/22 (18.2%) 4/17 (23.5%) + Total 17/134 (12.7%) 21/134 (15.7%) 19/132 (14.4%) + WEEK 3 DAY 22 + Low + Not low 15/119 (12.6%) 21/113 (18.6%) 18/112 (16.1%) + Low 0/15 3/21 (14.3%) 0/20 + Total 15/134 (11.2%) 24/134 (17.9%) 18/132 (13.6%) + High + Not high 22/114 (19.3%) 18/112 (16.1%) 17/115 (14.8%) + High 2/20 (10%) 5/22 (22.7%) 1/17 (5.9%) + Total 24/134 (17.9%) 23/134 (17.2%) 18/132 (13.6%) + WEEK 4 DAY 29 + Low + Not low 30/119 (25.2%) 13/113 (11.5%) 16/112 (14.3%) + Low 3/15 (20%) 2/21 (9.5%) 5/20 (25%) + Total 33/134 (24.6%) 15/134 (11.2%) 21/132 (15.9%) + High + Not high 17/114 (14.9%) 11/112 (9.8%) 16/115 (13.9%) + High 2/20 (10%) 6/22 (27.3%) 3/17 (17.6%) + Total 19/134 (14.2%) 17/134 (12.7%) 19/132 (14.4%) + WEEK 5 DAY 36 + Low + Not low 17/119 (14.3%) 19/113 (16.8%) 16/112 (14.3%) + Low 2/15 (13.3%) 3/21 (14.3%) 5/20 (25%) + Total 19/134 (14.2%) 22/134 (16.4%) 21/132 (15.9%) + High + Not high 19/114 (16.7%) 17/112 (15.2%) 11/115 (9.6%) + High 4/20 (20%) 6/22 (27.3%) 2/17 (11.8%) + Total 23/134 (17.2%) 23/134 (17.2%) 13/132 (9.8%) + Immunoglobulin A Measurement + WEEK 1 DAY 8 + Low + Not low 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + High + Not high 18/119 (15.1%) 20/116 (17.2%) 14/113 (12.4%) + High 1/15 (6.7%) 5/18 (27.8%) 4/19 (21.1%) + Total 19/134 (14.2%) 25/134 (18.7%) 18/132 (13.6%) + WEEK 2 DAY 15 + Low + Not low 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + High + Not high 16/119 (13.4%) 13/116 (11.2%) 12/113 (10.6%) + High 1/15 (6.7%) 1/18 (5.6%) 2/19 (10.5%) + Total 17/134 (12.7%) 14/134 (10.4%) 14/132 (10.6%) + WEEK 3 DAY 22 + Low + Not low 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + High + Not high 17/119 (14.3%) 15/116 (12.9%) 21/113 (18.6%) + High 0/15 1/18 (5.6%) 1/19 (5.3%) + Total 17/134 (12.7%) 16/134 (11.9%) 22/132 (16.7%) + WEEK 4 DAY 29 + Low + Not low 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + High + Not high 19/119 (16%) 16/116 (13.8%) 19/113 (16.8%) + High 4/15 (26.7%) 5/18 (27.8%) 3/19 (15.8%) + Total 23/134 (17.2%) 21/134 (15.7%) 22/132 (16.7%) + WEEK 5 DAY 36 + Low + Not low 0/134 0/134 0/132 + Total 0/134 0/134 0/132 + High + Not high 16/119 (13.4%) 21/116 (18.1%) 20/113 (17.7%) + High 1/15 (6.7%) 3/18 (16.7%) 0/19 + Total 17/134 (12.7%) 24/134 (17.9%) 20/132 (15.2%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt07.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt07.md new file mode 100644 index 0000000000..172d7ef709 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt07.md @@ -0,0 +1,37 @@ +# tables/lab-results/lbt07.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Parameter + Direction of Abnormality A: Drug X B: Placebo C: Combination + Highest NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement (n) 134 134 132 + LOW + 1 15 (11.2%) 11 (8.2%) 15 (11.4%) + 2 18 (13.4%) 24 (17.9%) 17 (12.9%) + 3 16 (11.9%) 24 (17.9%) 16 (12.1%) + 4 17 (12.7%) 10 (7.5%) 18 (13.6%) + Any 66 (49.3%) 69 (51.5%) 66 (50%) + C-Reactive Protein Measurement (n) 134 134 132 + LOW + 1 21 (15.7%) 22 (16.4%) 12 (9.1%) + 2 24 (17.9%) 22 (16.4%) 18 (13.6%) + 3 29 (21.6%) 21 (15.7%) 25 (18.9%) + 4 10 (7.5%) 16 (11.9%) 22 (16.7%) + Any 84 (62.7%) 81 (60.4%) 77 (58.3%) + HIGH + 1 20 (14.9%) 22 (16.4%) 22 (16.7%) + 2 21 (15.7%) 15 (11.2%) 14 (10.6%) + 3 25 (18.7%) 16 (11.9%) 20 (15.2%) + 4 13 (9.7%) 20 (14.9%) 11 (8.3%) + Any 79 (59%) 73 (54.5%) 67 (50.8%) + Immunoglobulin A Measurement (n) 134 134 132 + HIGH + 1 19 (14.2%) 12 (9%) 18 (13.6%) + 2 17 (12.7%) 24 (17.9%) 19 (14.4%) + 3 21 (15.7%) 23 (17.2%) 23 (17.4%) + 4 13 (9.7%) 13 (9.7%) 9 (6.8%) + Any 70 (52.2%) 72 (53.7%) 69 (52.3%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt08.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt08.md new file mode 100644 index 0000000000..edb34a99fa --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt08.md @@ -0,0 +1,37 @@ +# tables/lab-results/lbt08.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Parameter Code + Direction of Abnormality ARM A ARM B ARM C + Highest NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ALT + Low + 1 11/113 (9.7%) 9/117 (7.7%) 15/123 (12.2%) + 2 15/119 (12.6%) 23/123 (18.7%) 16/127 (12.6%) + 3 15/127 (11.8%) 22/128 (17.2%) 14/128 (10.9%) + 4 17/130 (13.1%) 10/131 (7.6%) 18/130 (13.8%) + Any 58/130 (44.6%) 64/131 (48.9%) 63/130 (48.5%) + CRP + High + 1 18/114 (15.8%) 18/112 (16.1%) 19/115 (16.5%) + 2 20/122 (16.4%) 13/122 (10.7%) 14/122 (11.5%) + 3 23/124 (18.5%) 14/128 (10.9%) 20/129 (15.5%) + 4 12/131 (9.2%) 20/132 (15.2%) 11/132 (8.3%) + Any 73/131 (55.7%) 65/132 (49.2%) 64/132 (48.5%) + Low + 1 20/119 (16.8%) 18/113 (15.9%) 11/112 (9.8%) + 2 24/122 (19.7%) 21/118 (17.8%) 17/121 (14%) + 3 26/127 (20.5%) 20/127 (15.7%) 22/123 (17.9%) + 4 10/131 (7.6%) 16/132 (12.1%) 21/130 (16.2%) + Any 80/131 (61.1%) 75/132 (56.8%) 71/130 (54.6%) + IGA + High + 1 18/119 (15.1%) 11/116 (9.5%) 15/113 (13.3%) + 2 15/124 (12.1%) 23/120 (19.2%) 19/115 (16.5%) + 3 21/128 (16.4%) 21/124 (16.9%) 20/120 (16.7%) + 4 12/132 (9.1%) 12/129 (9.3%) 9/131 (6.9%) + Any 66/132 (50%) 67/129 (51.9%) 63/131 (48.1%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt09.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt09.md new file mode 100644 index 0000000000..873a812f77 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt09.md @@ -0,0 +1,81 @@ +# tables/lab-results/lbt09.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Liver Laboratory Test Criterion BASELINE POST-BASELINE BASELINE POST-BASELINE BASELINE POST-BASELINE + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Bilirubin <= 2xULN + ALT >3 - <= 5xULN 23/134 (17.2%) 15/134 (11.2%) 25/134 (18.7%) 27/134 (20.1%) 27/132 (20.5%) 30/132 (22.7%) + ALT >5 - <= 10xULN 28/134 (20.9%) 29/134 (21.6%) 29/134 (21.6%) 19/134 (14.2%) 36/132 (27.3%) 29/132 (22.0%) + ALT >10 - <= 20xULN 24/134 (17.9%) 30/134 (22.4%) 32/134 (23.9%) 33/134 (24.6%) 28/132 (21.2%) 24/132 (18.2%) + ALT > 20xULN 32/134 (23.9%) 35/134 (26.1%) 24/134 (17.9%) 23/134 (17.2%) 20/132 (15.2%) 26/132 (19.7%) + AST >3 - <= 5xULN 31/134 (23.1%) 34/134 (25.4%) 30/134 (22.4%) 26/134 (19.4%) 34/132 (25.8%) 24/132 (18.2%) + AST >5 - <= 10xULN 25/134 (18.7%) 25/134 (18.7%) 26/134 (19.4%) 26/134 (19.4%) 22/132 (16.7%) 27/132 (20.5%) + AST >10 - <= 20xULN 22/134 (16.4%) 29/134 (21.6%) 16/134 (11.9%) 22/134 (16.4%) 34/132 (25.8%) 19/132 (14.4%) + AST > 20xULN 20/134 (14.9%) 16/134 (11.9%) 28/134 (20.9%) 31/134 (23.1%) 21/132 (15.9%) 39/132 (29.5%) + Total Bilirubin > 2xULN + ALT >3 - <= 5xULN 40/134 (29.9%) 28/134 (20.9%) 31/134 (23.1%) 28/134 (20.9%) 18/132 (13.6%) 32/132 (24.2%) + ALT >5 - <= 10xULN 24/134 (17.9%) 29/134 (21.6%) 30/134 (22.4%) 37/134 (27.6%) 33/132 (25.0%) 24/132 (18.2%) + ALT >10 - <= 20xULN 24/134 (17.9%) 22/134 (16.4%) 26/134 (19.4%) 18/134 (13.4%) 21/132 (15.9%) 30/132 (22.7%) + ALT > 20xULN 19/134 (14.2%) 33/134 (24.6%) 23/134 (17.2%) 19/134 (14.2%) 30/132 (22.7%) 22/132 (16.7%) + AST >3 - <= 5xULN 17/134 (12.7%) 27/134 (20.1%) 36/134 (26.9%) 25/134 (18.7%) 26/132 (19.7%) 34/132 (25.8%) + AST >5 - <= 10xULN 25/134 (18.7%) 28/134 (20.9%) 24/134 (17.9%) 28/134 (20.9%) 20/132 (15.2%) 23/132 (17.4%) + AST >10 - <= 20xULN 36/134 (26.9%) 28/134 (20.9%) 16/134 (11.9%) 26/134 (19.4%) 33/132 (25.0%) 26/132 (19.7%) + AST > 20xULN 30/134 (22.4%) 21/134 (15.7%) 30/134 (22.4%) 24/134 (17.9%) 24/132 (18.2%) 25/132 (18.9%) + Total Bilirubin > 2xULN and Alkaline Phosphatase <= 2xULN + ALT >3 - <= 5xULN 24/134 (17.9%) 22/134 (16.4%) 28/134 (20.9%) 23/134 (17.2%) 38/132 (28.8%) 23/132 (17.4%) + ALT >5 - <= 10xULN 26/134 (19.4%) 25/134 (18.7%) 19/134 (14.2%) 22/134 (16.4%) 32/132 (24.2%) 32/132 (24.2%) + ALT >10 - <= 20xULN 26/134 (19.4%) 30/134 (22.4%) 31/134 (23.1%) 30/134 (22.4%) 21/132 (15.9%) 27/132 (20.5%) + ALT > 20xULN 30/134 (22.4%) 28/134 (20.9%) 24/134 (17.9%) 36/134 (26.9%) 20/132 (15.2%) 23/132 (17.4%) + AST >3 - <= 5xULN 37/134 (27.6%) 25/134 (18.7%) 31/134 (23.1%) 26/134 (19.4%) 24/132 (18.2%) 36/132 (27.3%) + AST >5 - <= 10xULN 25/134 (18.7%) 32/134 (23.9%) 29/134 (21.6%) 30/134 (22.4%) 26/132 (19.7%) 24/132 (18.2%) + AST >10 - <= 20xULN 25/134 (18.7%) 31/134 (23.1%) 28/134 (20.9%) 22/134 (16.4%) 29/132 (22.0%) 23/132 (17.4%) + AST > 20xULN 26/134 (19.4%) 25/134 (18.7%) 23/134 (17.2%) 30/134 (22.4%) 23/132 (17.4%) 24/132 (18.2%) + Total Bilirubin > 2xULN and Alkaline Phosphatase <= 5xULN + ALT >3 - <= 5xULN 24/134 (17.9%) 21/134 (15.7%) 30/134 (22.4%) 17/134 (12.7%) 28/132 (21.2%) 31/132 (23.5%) + ALT >5 - <= 10xULN 36/134 (26.9%) 28/134 (20.9%) 25/134 (18.7%) 27/134 (20.1%) 26/132 (19.7%) 29/132 (22.0%) + ALT >10 - <= 20xULN 30/134 (22.4%) 21/134 (15.7%) 28/134 (20.9%) 36/134 (26.9%) 25/132 (18.9%) 24/132 (18.2%) + ALT > 20xULN 14/134 (10.4%) 28/134 (20.9%) 25/134 (18.7%) 27/134 (20.1%) 31/132 (23.5%) 23/132 (17.4%) + AST >3 - <= 5xULN 21/134 (15.7%) 26/134 (19.4%) 29/134 (21.6%) 31/134 (23.1%) 33/132 (25.0%) 19/132 (14.4%) + AST >5 - <= 10xULN 29/134 (21.6%) 26/134 (19.4%) 24/134 (17.9%) 26/134 (19.4%) 23/132 (17.4%) 32/132 (24.2%) + AST >10 - <= 20xULN 29/134 (21.6%) 31/134 (23.1%) 28/134 (20.9%) 22/134 (16.4%) 22/132 (16.7%) 21/132 (15.9%) + AST > 20xULN 34/134 (25.4%) 21/134 (15.7%) 19/134 (14.2%) 28/134 (20.9%) 21/132 (15.9%) 33/132 (25.0%) + +# tables/lab-results/lbt09.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Liver Laboratory Test Criterion BASELINE POST-BASELINE BASELINE POST-BASELINE BASELINE POST-BASELINE + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Bilirubin <= 2xULN + ALT >3 - <= 5xULN 23/134 (17.2%) 15/134 (11.2%) 25/134 (18.7%) 27/134 (20.1%) 27/132 (20.5%) 30/132 (22.7%) + ALT >5 - <= 10xULN 28/134 (20.9%) 29/134 (21.6%) 29/134 (21.6%) 19/134 (14.2%) 36/132 (27.3%) 29/132 (22.0%) + ALT >10 - <= 20xULN 24/134 (17.9%) 30/134 (22.4%) 32/134 (23.9%) 33/134 (24.6%) 28/132 (21.2%) 24/132 (18.2%) + ALT > 20xULN 32/134 (23.9%) 35/134 (26.1%) 24/134 (17.9%) 23/134 (17.2%) 20/132 (15.2%) 26/132 (19.7%) + AST >3 - <= 5xULN 31/134 (23.1%) 34/134 (25.4%) 30/134 (22.4%) 26/134 (19.4%) 34/132 (25.8%) 24/132 (18.2%) + AST >5 - <= 10xULN 25/134 (18.7%) 25/134 (18.7%) 26/134 (19.4%) 26/134 (19.4%) 22/132 (16.7%) 27/132 (20.5%) + AST >10 - <= 20xULN 22/134 (16.4%) 29/134 (21.6%) 16/134 (11.9%) 22/134 (16.4%) 34/132 (25.8%) 19/132 (14.4%) + AST > 20xULN 20/134 (14.9%) 16/134 (11.9%) 28/134 (20.9%) 31/134 (23.1%) 21/132 (15.9%) 39/132 (29.5%) + Total Bilirubin > 2xULN + ALT >3 - <= 5xULN 40/134 (29.9%) 28/134 (20.9%) 31/134 (23.1%) 28/134 (20.9%) 18/132 (13.6%) 32/132 (24.2%) + ALT >5 - <= 10xULN 24/134 (17.9%) 29/134 (21.6%) 30/134 (22.4%) 37/134 (27.6%) 33/132 (25.0%) 24/132 (18.2%) + ALT >10 - <= 20xULN 24/134 (17.9%) 22/134 (16.4%) 26/134 (19.4%) 18/134 (13.4%) 21/132 (15.9%) 30/132 (22.7%) + ALT > 20xULN 19/134 (14.2%) 33/134 (24.6%) 23/134 (17.2%) 19/134 (14.2%) 30/132 (22.7%) 22/132 (16.7%) + AST >3 - <= 5xULN 17/134 (12.7%) 27/134 (20.1%) 36/134 (26.9%) 25/134 (18.7%) 26/132 (19.7%) 34/132 (25.8%) + AST >5 - <= 10xULN 25/134 (18.7%) 28/134 (20.9%) 24/134 (17.9%) 28/134 (20.9%) 20/132 (15.2%) 23/132 (17.4%) + AST >10 - <= 20xULN 36/134 (26.9%) 28/134 (20.9%) 16/134 (11.9%) 26/134 (19.4%) 33/132 (25.0%) 26/132 (19.7%) + AST > 20xULN 30/134 (22.4%) 21/134 (15.7%) 30/134 (22.4%) 24/134 (17.9%) 24/132 (18.2%) 25/132 (18.9%) + Total Bilirubin > 2xULN and Alkaline Phosphatase <= 5xULN + ALT >3 - <= 5xULN 24/134 (17.9%) 21/134 (15.7%) 30/134 (22.4%) 17/134 (12.7%) 28/132 (21.2%) 31/132 (23.5%) + ALT >5 - <= 10xULN 36/134 (26.9%) 28/134 (20.9%) 25/134 (18.7%) 27/134 (20.1%) 26/132 (19.7%) 29/132 (22.0%) + ALT >10 - <= 20xULN 30/134 (22.4%) 21/134 (15.7%) 28/134 (20.9%) 36/134 (26.9%) 25/132 (18.9%) 24/132 (18.2%) + ALT > 20xULN 14/134 (10.4%) 28/134 (20.9%) 25/134 (18.7%) 27/134 (20.1%) 31/132 (23.5%) 23/132 (17.4%) + AST >3 - <= 5xULN 21/134 (15.7%) 26/134 (19.4%) 29/134 (21.6%) 31/134 (23.1%) 33/132 (25.0%) 19/132 (14.4%) + AST >5 - <= 10xULN 29/134 (21.6%) 26/134 (19.4%) 24/134 (17.9%) 26/134 (19.4%) 23/132 (17.4%) 32/132 (24.2%) + AST >10 - <= 20xULN 29/134 (21.6%) 31/134 (23.1%) 28/134 (20.9%) 22/134 (16.4%) 22/132 (16.7%) 21/132 (15.9%) + AST > 20xULN 34/134 (25.4%) 21/134 (15.7%) 19/134 (14.2%) 28/134 (20.9%) 21/132 (15.9%) 33/132 (25.0%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt10.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt10.md new file mode 100644 index 0000000000..d0dfb869f6 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt10.md @@ -0,0 +1,27 @@ +# tables/lab-results/lbt10.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Bilirubin <= 2xULN + ALT >3xULN at 2 Visits 20/134 (14.9%) 21/134 (15.7%) 20/132 (15.2%) + AST >3xULN at 2 Visits 30/134 (22.4%) 25/134 (18.7%) 27/132 (20.5%) + Total Bilirubin > 2xULN + ALT >3xULN at 2 Visits 24/134 (17.9%) 32/134 (23.9%) 24/132 (18.2%) + AST >3xULN at 2 Visits 33/134 (24.6%) 29/134 (21.6%) 25/132 (18.9%) + +# tables/lab-results/lbt10.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Bilirubin <= 2xULN + ALT >3xULN at 2 Visits 20/134 (14.9%) 21/134 (15.7%) 20/132 (15.2%) + AST >3xULN at 2 Visits 30/134 (22.4%) 25/134 (18.7%) 27/132 (20.5%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt10_bl.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt10_bl.md new file mode 100644 index 0000000000..2eca2f9c28 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt10_bl.md @@ -0,0 +1,27 @@ +# tables/lab-results/lbt10_bl.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Bilirubin <= 2xULN + ALT >3xULN at 2 Visits 25/134 (18.7%) 20/134 (14.9%) 27/132 (20.5%) + AST >3xULN at 2 Visits 22/134 (16.4%) 14/134 (10.4%) 37/132 (28.0%) + Total Bilirubin > 2xULN + ALT >3xULN at 2 Visits 26/134 (19.4%) 31/134 (23.1%) 23/132 (17.4%) + AST >3xULN at 2 Visits 30/134 (22.4%) 27/134 (20.1%) 26/132 (19.7%) + +# tables/lab-results/lbt10_bl.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Bilirubin <= 2xULN + ALT >3xULN at 2 Visits 25/134 (18.7%) 20/134 (14.9%) 27/132 (20.5%) + AST >3xULN at 2 Visits 22/134 (16.4%) 14/134 (10.4%) 37/132 (28.0%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt11.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt11.md new file mode 100644 index 0000000000..7eb3a81bcb --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt11.md @@ -0,0 +1,78 @@ +# tables/lab-results/lbt11.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with LLT event (%) 20 (14.9%) 9 (6.7%) 9 (6.8%) + Patients without LLT event (%) 114 (85.1%) 125 (93.3%) 123 (93.2%) + Time to 1st LLT Event (DAYS) + Median NA NA 728.0 + 95% CI NA (724.0, NA) NA + 25% and 75%-ile 618.0, NA 724.0, NA 728.0, 728.0 + Range 1.0 to 731.0 {1} 1.0 to 728.0 {1} 1.0 to 728.0 {2} + Unstratified Analysis + p-value (log-rank) 0.0295 0.1687 + Hazard Ratio 0.43 0.58 + 95% CI (0.19, 0.94) (0.26, 1.27) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observations: range minimum & maximum + {2} - Censored observation: range minimum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/lab-results/lbt11.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with LLT event (%) 20 (14.9%) 9 (6.7%) 9 (6.8%) + Patients without LLT event (%) 114 (85.1%) 125 (93.3%) 123 (93.2%) + Time to 1st LLT Event (DAYS) + Median NA NA 728.0 + 95% CI NA (724.0, NA) NA + 25% and 75%-ile 618.0, NA 724.0, NA 728.0, 728.0 + Range 1.0 to 731.0 {1} 1.0 to 728.0 {1} 1.0 to 728.0 {2} + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observations: range minimum & maximum + {2} - Censored observation: range minimum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/lab-results/lbt11.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with LLT event (%) 20 (14.9%) 9 (6.7%) 9 (6.8%) + Patients without LLT event (%) 114 (85.1%) 125 (93.3%) 123 (93.2%) + Time to 1st LLT Event (DAYS) + Median NA NA 728.0 + 95% CI NA (724.0, NA) NA + 25% and 75%-ile 618.0, NA 724.0, NA 728.0, 728.0 + Range 1.0 to 731.0 {1} 1.0 to 728.0 {1} 1.0 to 728.0 {2} + Unstratified Analysis + p-value (log-rank) 0.0295 0.1687 + Hazard Ratio 0.43 0.58 + 95% CI (0.19, 0.94) (0.26, 1.27) + Stratified By: RACE, SEX + p-value (log-rank) 0.0858 0.1605 + Hazard Ratio 0.51 0.57 + 95% CI (0.23, 1.12) (0.26, 1.26) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observations: range minimum & maximum + {2} - Censored observation: range minimum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt11_bl.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt11_bl.md new file mode 100644 index 0000000000..b0249812e4 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt11_bl.md @@ -0,0 +1,75 @@ +# tables/lab-results/lbt11_bl.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with LLT event (%) 14 (10.4%) 18 (13.4%) 15 (11.4%) + Patients without LLT event (%) 120 (89.6%) 116 (86.6%) 117 (88.6%) + Time to 1st LLT Event (DAYS) + Median NA NA 721.0 + 95% CI NA (681.0, NA) (691.0, NA) + 25% and 75%-ile 608.0, NA 558.0, NA 644.0, NA + Range 1.0 to 728.0 {1} 1.0 to 726.0 {1} 1.0 to 724.0 {1} + Unstratified Analysis + p-value (log-rank) 0.5013 0.6413 + Hazard Ratio 1.27 0.84 + 95% CI (0.63, 2.56) (0.40, 1.75) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observations: range minimum & maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/lab-results/lbt11_bl.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with LLT event (%) 14 (10.4%) 18 (13.4%) 15 (11.4%) + Patients without LLT event (%) 120 (89.6%) 116 (86.6%) 117 (88.6%) + Time to 1st LLT Event (DAYS) + Median NA NA 721.0 + 95% CI NA (681.0, NA) (691.0, NA) + 25% and 75%-ile 608.0, NA 558.0, NA 644.0, NA + Range 1.0 to 728.0 {1} 1.0 to 726.0 {1} 1.0 to 724.0 {1} + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observations: range minimum & maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + +# tables/lab-results/lbt11_bl.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + ARM A ARM B ARM C + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients with LLT event (%) 14 (10.4%) 18 (13.4%) 15 (11.4%) + Patients without LLT event (%) 120 (89.6%) 116 (86.6%) 117 (88.6%) + Time to 1st LLT Event (DAYS) + Median NA NA 721.0 + 95% CI NA (681.0, NA) (691.0, NA) + 25% and 75%-ile 608.0, NA 558.0, NA 644.0, NA + Range 1.0 to 728.0 {1} 1.0 to 726.0 {1} 1.0 to 724.0 {1} + Unstratified Analysis + p-value (log-rank) 0.5013 0.6413 + Hazard Ratio 1.27 0.84 + 95% CI (0.63, 2.56) (0.40, 1.75) + Stratified By: RACE, SEX + p-value (log-rank) 0.3886 0.7970 + Hazard Ratio 1.39 0.91 + 95% CI (0.65, 2.97) (0.43, 1.93) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + {1} - Censored observations: range minimum & maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt12.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt12.md new file mode 100644 index 0000000000..92d80e6a80 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt12.md @@ -0,0 +1,21 @@ +# tables/lab-results/lbt12.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + First Elevated Result Occurring During + PERIOD 1 PERIOD 2 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + AST >3x ULN + A: Drug X 11/134 (8.2%) 21/134 (15.7%) + B: Placebo 17/134 (12.7%) 16/134 (11.9%) + C: Combination 10/132 (7.6%) 8/132 (6.1%) + ALT >3x ULN + A: Drug X 14/134 (10.4%) 8/134 (6.0%) + B: Placebo 24/134 (17.9%) 18/134 (13.4%) + C: Combination 16/132 (12.1%) 10/132 (7.6%) + AST >3x ULN or ALT >x3 ULN + A: Drug X 14/134 (10.4%) 15/134 (11.2%) + B: Placebo 8/134 (6.0%) 13/134 (9.7%) + C: Combination 11/132 (8.3%) 12/132 (9.1%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt12_bl.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt12_bl.md new file mode 100644 index 0000000000..f0999203a7 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt12_bl.md @@ -0,0 +1,21 @@ +# tables/lab-results/lbt12_bl.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + First Elevated Result Occurring During + PERIOD 1 PERIOD 2 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + AST>3x Baseline + A: Drug X 14/134 (10.4%) 8/134 (6.0%) + B: Placebo 11/134 (8.2%) 11/134 (8.2%) + C: Combination 15/132 (11.4%) 14/132 (10.6%) + ALT>3x Baseline + A: Drug X 7/134 (5.2%) 20/134 (14.9%) + B: Placebo 10/134 (7.5%) 9/134 (6.7%) + C: Combination 12/132 (9.1%) 8/132 (6.1%) + AST>3x Baseline or ALT>3x Baseline + A: Drug X 8/134 (6.0%) 22/134 (16.4%) + B: Placebo 19/134 (14.2%) 15/134 (11.2%) + C: Combination 14/132 (10.6%) 13/132 (9.8%) + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt13.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt13.md new file mode 100644 index 0000000000..9fb39655e5 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt13.md @@ -0,0 +1,709 @@ +# tables/lab-results/lbt13.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Parameter Code + Visit + NCI CTCAE Grade at Visit A: Drug X B: Placebo C: Combination + Baseline NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CRP + WEEK 1 DAY 8 + Not Low (n) 116 110 101 + Not Low 103 (88.8%) 91 (82.7%) 88 (87.1%) + 1 3 (2.6%) 5 (4.5%) 6 (5.9%) + 2 4 (3.4%) 9 (8.2%) 2 (2.0%) + 3 3 (2.6%) 4 (3.6%) 4 (4.0%) + 4 3 (2.6%) 1 (0.9%) 1 (1.0%) + 1 (n) 4 7 5 + Not Low 3 (75.0%) 7 (100%) 4 (80.0%) + 3 1 (25.0%) 0 1 (20.0%) + 2 (n) 5 6 11 + Not Low 5 (100%) 5 (83.3%) 8 (72.7%) + 1 0 0 1 (9.1%) + 3 0 0 2 (18.2%) + 4 0 1 (16.7%) 0 + 3 (n) 6 8 5 + Not Low 6 (100%) 7 (87.5%) 5 (100%) + 3 0 1 (12.5%) 0 + 4 (n) 3 3 10 + Not Low 2 (66.7%) 3 (100%) 7 (70.0%) + 1 0 0 2 (20.0%) + 2 1 (33.3%) 0 0 + 4 0 0 1 (10.0%) + WEEK 2 DAY 15 + Not Low (n) 106 111 116 + Not Low 93 (87.7%) 93 (83.8%) 100 (86.2%) + 1 3 (2.8%) 4 (3.6%) 8 (6.9%) + 2 5 (4.7%) 7 (6.3%) 2 (1.7%) + 3 2 (1.9%) 5 (4.5%) 6 (5.2%) + 4 3 (2.8%) 2 (1.8%) 0 + 1 (n) 15 9 2 + Not Low 13 (86.7%) 8 (88.9%) 1 (50.0%) + 2 0 1 (11.1%) 0 + 3 2 (13.3%) 0 0 + 4 0 0 1 (50.0%) + 2 (n) 3 3 6 + Not Low 3 (100%) 3 (100%) 4 (66.7%) + 1 0 0 1 (16.7%) + 3 0 0 1 (16.7%) + 3 (n) 7 7 6 + Not Low 7 (100%) 6 (85.7%) 5 (83.3%) + 2 0 1 (14.3%) 0 + 4 0 0 1 (16.7%) + 4 (n) 3 4 2 + Not Low 3 (100%) 3 (75.0%) 2 (100%) + 1 0 1 (25.0%) 0 + WEEK 3 DAY 22 + Not Low (n) 119 110 114 + Not Low 104 (87.4%) 92 (83.6%) 94 (82.5%) + 1 3 (2.5%) 4 (3.6%) 9 (7.9%) + 2 5 (4.2%) 7 (6.4%) 2 (1.8%) + 3 4 (3.4%) 5 (4.5%) 7 (6.1%) + 4 3 (2.5%) 2 (1.8%) 2 (1.8%) + 1 (n) 9 9 6 + Not Low 9 (100%) 7 (77.8%) 6 (100%) + 2 0 2 (22.2%) 0 + 2 (n) 1 7 3 + Not Low 1 (100%) 6 (85.7%) 3 (100%) + 1 0 1 (14.3%) 0 + 3 (n) 4 5 4 + Not Low 4 (100%) 5 (100%) 4 (100%) + 4 (n) 1 3 5 + Not Low 1 (100%) 3 (100%) 5 (100%) + WEEK 4 DAY 29 + Not Low (n) 101 119 111 + Not Low 89 (88.1%) 100 (84.0%) 96 (86.5%) + 1 3 (3.0%) 4 (3.4%) 6 (5.4%) + 2 4 (4.0%) 8 (6.7%) 1 (0.9%) + 3 2 (2.0%) 5 (4.2%) 6 (5.4%) + 4 3 (3.0%) 2 (1.7%) 2 (1.8%) + 1 (n) 10 5 6 + Not Low 9 (90.0%) 5 (100%) 5 (83.3%) + 1 0 0 1 (16.7%) + 2 1 (10.0%) 0 0 + 2 (n) 13 4 6 + Not Low 13 (100%) 3 (75.0%) 5 (83.3%) + 1 0 0 1 (16.7%) + 2 0 1 (25.0%) 0 + 3 (n) 8 2 6 + Not Low 6 (75.0%) 1 (50.0%) 5 (83.3%) + 1 0 1 (50.0%) 0 + 2 0 0 1 (16.7%) + 3 2 (25.0%) 0 0 + 4 (n) 2 4 3 + Not Low 2 (100%) 4 (100%) 1 (33.3%) + 1 0 0 1 (33.3%) + 3 0 0 1 (33.3%) + WEEK 5 DAY 36 + Not Low (n) 115 112 111 + Not Low 102 (88.7%) 94 (83.9%) 96 (86.5%) + 1 2 (1.7%) 4 (3.6%) 6 (5.4%) + 2 5 (4.3%) 7 (6.2%) 2 (1.8%) + 3 3 (2.6%) 5 (4.5%) 5 (4.5%) + 4 3 (2.6%) 2 (1.8%) 2 (1.8%) + 1 (n) 5 7 6 + Not Low 5 (100%) 4 (57.1%) 5 (83.3%) + 1 0 1 (14.3%) 1 (16.7%) + 2 0 2 (28.6%) 0 + 2 (n) 5 11 6 + Not Low 5 (100%) 11 (100%) 6 (100%) + 3 (n) 8 2 7 + Not Low 6 (75.0%) 2 (100%) 4 (57.1%) + 1 1 (12.5%) 0 1 (14.3%) + 3 1 (12.5%) 0 2 (28.6%) + 4 (n) 1 2 2 + Not Low 1 (100%) 2 (100%) 1 (50.0%) + 1 0 0 1 (50.0%) + +# tables/lab-results/lbt13.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Parameter Code + Visit + NCI CTCAE Grade at Visit A: Drug X B: Placebo C: Combination + Baseline NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CRP + WEEK 1 DAY 8 + Not High (n) 111 110 112 + Not High 93 (83.8%) 92 (83.6%) 98 (87.5%) + 1 8 (7.2%) 7 (6.4%) 5 (4.5%) + 2 2 (1.8%) 6 (5.5%) 7 (6.2%) + 3 6 (5.4%) 3 (2.7%) 2 (1.8%) + 4 2 (1.8%) 2 (1.8%) 0 + 1 (n) 8 11 6 + Not High 7 (87.5%) 11 (100%) 5 (83.3%) + 3 1 (12.5%) 0 1 (16.7%) + 2 (n) 6 4 5 + Not High 6 (100%) 1 (25.0%) 4 (80.0%) + 1 0 3 (75.0%) 1 (20.0%) + 3 (n) 8 3 4 + Not High 7 (87.5%) 3 (100%) 4 (100%) + 4 1 (12.5%) 0 0 + 4 (n) 1 6 5 + Not High 1 (100%) 5 (83.3%) 4 (80.0%) + 1 0 0 1 (20.0%) + 3 0 1 (16.7%) 0 + WEEK 2 DAY 15 + Not High (n) 117 113 113 + Not High 99 (84.6%) 95 (84.1%) 100 (88.5%) + 1 7 (6.0%) 6 (5.3%) 4 (3.5%) + 2 2 (1.7%) 6 (5.3%) 6 (5.3%) + 3 6 (5.1%) 4 (3.5%) 3 (2.7%) + 4 3 (2.6%) 2 (1.8%) 0 + 1 (n) 6 9 7 + Not High 5 (83.3%) 8 (88.9%) 6 (85.7%) + 1 0 1 (11.1%) 0 + 2 0 0 1 (14.3%) + 3 1 (16.7%) 0 0 + 2 (n) 4 4 6 + Not High 4 (100%) 4 (100%) 3 (50.0%) + 1 0 0 3 (50.0%) + 3 (n) 5 3 5 + Not High 4 (80.0%) 2 (66.7%) 5 (100%) + 1 1 (20.0%) 1 (33.3%) 0 + 4 (n) 2 5 1 + Not High 2 (100%) 3 (60.0%) 1 (100%) + 1 0 2 (40.0%) 0 + WEEK 3 DAY 22 + Not High (n) 110 111 114 + Not High 92 (83.6%) 94 (84.7%) 98 (86.0%) + 1 8 (7.3%) 9 (8.1%) 7 (6.1%) + 2 2 (1.8%) 5 (4.5%) 6 (5.3%) + 3 5 (4.5%) 2 (1.8%) 3 (2.6%) + 4 3 (2.7%) 1 (0.9%) 0 + 1 (n) 7 8 7 + Not High 7 (100%) 5 (62.5%) 6 (85.7%) + 1 0 1 (12.5%) 0 + 2 0 1 (12.5%) 1 (14.3%) + 3 0 1 (12.5%) 0 + 2 (n) 9 7 5 + Not High 9 (100%) 6 (85.7%) 5 (100%) + 3 0 1 (14.3%) 0 + 3 (n) 6 3 4 + Not High 5 (83.3%) 2 (66.7%) 4 (100%) + 3 1 (16.7%) 0 0 + 4 0 1 (33.3%) 0 + 4 (n) 2 5 2 + Not High 1 (50.0%) 5 (100%) 2 (100%) + 3 1 (50.0%) 0 0 + WEEK 4 DAY 29 + Not High (n) 115 117 113 + Not High 97 (84.3%) 101 (86.3%) 99 (87.6%) + 1 8 (7.0%) 7 (6.0%) 6 (5.3%) + 2 2 (1.7%) 6 (5.1%) 5 (4.4%) + 3 7 (6.1%) 3 (2.6%) 3 (2.7%) + 4 1 (0.9%) 0 0 + 1 (n) 4 3 11 + Not High 4 (100%) 2 (66.7%) 10 (90.9%) + 2 0 0 1 (9.1%) + 4 0 1 (33.3%) 0 + 2 (n) 6 4 2 + Not High 6 (100%) 3 (75.0%) 2 (100%) + 1 0 1 (25.0%) 0 + 3 (n) 6 7 4 + Not High 5 (83.3%) 4 (57.1%) 4 (100%) + 1 0 1 (14.3%) 0 + 3 0 1 (14.3%) 0 + 4 1 (16.7%) 1 (14.3%) 0 + 4 (n) 3 3 2 + Not High 2 (66.7%) 2 (66.7%) 0 + 1 0 1 (33.3%) 1 (50.0%) + 2 0 0 1 (50.0%) + 4 1 (33.3%) 0 0 + WEEK 5 DAY 36 + Not High (n) 111 111 119 + Not High 95 (85.6%) 95 (85.6%) 104 (87.4%) + 1 6 (5.4%) 8 (7.2%) 6 (5.0%) + 2 1 (0.9%) 5 (4.5%) 6 (5.0%) + 3 6 (5.4%) 2 (1.8%) 3 (2.5%) + 4 3 (2.7%) 1 (0.9%) 0 + 1 (n) 8 11 5 + Not High 7 (87.5%) 9 (81.8%) 4 (80.0%) + 1 0 1 (9.1%) 0 + 2 0 0 1 (20.0%) + 3 1 (12.5%) 1 (9.1%) 0 + 2 (n) 7 6 3 + Not High 5 (71.4%) 3 (50.0%) 2 (66.7%) + 1 1 (14.3%) 1 (16.7%) 1 (33.3%) + 2 1 (14.3%) 1 (16.7%) 0 + 4 0 1 (16.7%) 0 + 3 (n) 3 3 4 + Not High 3 (100%) 3 (100%) 4 (100%) + 4 (n) 5 3 1 + Not High 4 (80.0%) 2 (66.7%) 1 (100%) + 1 1 (20.0%) 0 0 + 3 0 1 (33.3%) 0 + +# tables/lab-results/lbt13.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Parameter Code + Visit + NCI CTCAE Grade at Visit A: Drug X B: Placebo C: Combination + Baseline NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CRP + WEEK 1 DAY 8 + Not Low (n) 116 110 101 + Not Low 103 (88.8%) 91 (82.7%) 88 (87.1%) + 1 3 (2.6%) 5 (4.5%) 6 (5.9%) + 2 4 (3.4%) 9 (8.2%) 2 (2.0%) + 3 3 (2.6%) 4 (3.6%) 4 (4.0%) + 4 3 (2.6%) 1 (0.9%) 1 (1.0%) + 1 (n) 4 7 5 + Not Low 3 (75.0%) 7 (100%) 4 (80.0%) + 3 1 (25.0%) 0 1 (20.0%) + 2 (n) 5 6 11 + Not Low 5 (100%) 5 (83.3%) 8 (72.7%) + 1 0 0 1 (9.1%) + 3 0 0 2 (18.2%) + 4 0 1 (16.7%) 0 + 3 (n) 6 8 5 + Not Low 6 (100%) 7 (87.5%) 5 (100%) + 3 0 1 (12.5%) 0 + 4 (n) 3 3 10 + Not Low 2 (66.7%) 3 (100%) 7 (70.0%) + 1 0 0 2 (20.0%) + 2 1 (33.3%) 0 0 + 4 0 0 1 (10.0%) + WEEK 2 DAY 15 + Not Low (n) 106 111 116 + Not Low 93 (87.7%) 93 (83.8%) 100 (86.2%) + 1 3 (2.8%) 4 (3.6%) 8 (6.9%) + 2 5 (4.7%) 7 (6.3%) 2 (1.7%) + 3 2 (1.9%) 5 (4.5%) 6 (5.2%) + 4 3 (2.8%) 2 (1.8%) 0 + 1 (n) 15 9 2 + Not Low 13 (86.7%) 8 (88.9%) 1 (50.0%) + 2 0 1 (11.1%) 0 + 3 2 (13.3%) 0 0 + 4 0 0 1 (50.0%) + 2 (n) 3 3 6 + Not Low 3 (100%) 3 (100%) 4 (66.7%) + 1 0 0 1 (16.7%) + 3 0 0 1 (16.7%) + 3 (n) 7 7 6 + Not Low 7 (100%) 6 (85.7%) 5 (83.3%) + 2 0 1 (14.3%) 0 + 4 0 0 1 (16.7%) + 4 (n) 3 4 2 + Not Low 3 (100%) 3 (75.0%) 2 (100%) + 1 0 1 (25.0%) 0 + WEEK 3 DAY 22 + Not Low (n) 119 110 114 + Not Low 104 (87.4%) 92 (83.6%) 94 (82.5%) + 1 3 (2.5%) 4 (3.6%) 9 (7.9%) + 2 5 (4.2%) 7 (6.4%) 2 (1.8%) + 3 4 (3.4%) 5 (4.5%) 7 (6.1%) + 4 3 (2.5%) 2 (1.8%) 2 (1.8%) + 1 (n) 9 9 6 + Not Low 9 (100%) 7 (77.8%) 6 (100%) + 2 0 2 (22.2%) 0 + 2 (n) 1 7 3 + Not Low 1 (100%) 6 (85.7%) 3 (100%) + 1 0 1 (14.3%) 0 + 3 (n) 4 5 4 + Not Low 4 (100%) 5 (100%) 4 (100%) + 4 (n) 1 3 5 + Not Low 1 (100%) 3 (100%) 5 (100%) + WEEK 4 DAY 29 + Not Low (n) 101 119 111 + Not Low 89 (88.1%) 100 (84.0%) 96 (86.5%) + 1 3 (3.0%) 4 (3.4%) 6 (5.4%) + 2 4 (4.0%) 8 (6.7%) 1 (0.9%) + 3 2 (2.0%) 5 (4.2%) 6 (5.4%) + 4 3 (3.0%) 2 (1.7%) 2 (1.8%) + 1 (n) 10 5 6 + Not Low 9 (90.0%) 5 (100%) 5 (83.3%) + 1 0 0 1 (16.7%) + 2 1 (10.0%) 0 0 + 2 (n) 13 4 6 + Not Low 13 (100%) 3 (75.0%) 5 (83.3%) + 1 0 0 1 (16.7%) + 2 0 1 (25.0%) 0 + 3 (n) 8 2 6 + Not Low 6 (75.0%) 1 (50.0%) 5 (83.3%) + 1 0 1 (50.0%) 0 + 2 0 0 1 (16.7%) + 3 2 (25.0%) 0 0 + 4 (n) 2 4 3 + Not Low 2 (100%) 4 (100%) 1 (33.3%) + 1 0 0 1 (33.3%) + 3 0 0 1 (33.3%) + WEEK 5 DAY 36 + Not Low (n) 115 112 111 + Not Low 102 (88.7%) 94 (83.9%) 96 (86.5%) + 1 2 (1.7%) 4 (3.6%) 6 (5.4%) + 2 5 (4.3%) 7 (6.2%) 2 (1.8%) + 3 3 (2.6%) 5 (4.5%) 5 (4.5%) + 4 3 (2.6%) 2 (1.8%) 2 (1.8%) + 1 (n) 5 7 6 + Not Low 5 (100%) 4 (57.1%) 5 (83.3%) + 1 0 1 (14.3%) 1 (16.7%) + 2 0 2 (28.6%) 0 + 2 (n) 5 11 6 + Not Low 5 (100%) 11 (100%) 6 (100%) + 3 (n) 8 2 7 + Not Low 6 (75.0%) 2 (100%) 4 (57.1%) + 1 1 (12.5%) 0 1 (14.3%) + 3 1 (12.5%) 0 2 (28.6%) + 4 (n) 1 2 2 + Not Low 1 (100%) 2 (100%) 1 (50.0%) + 1 0 0 1 (50.0%) + +# tables/lab-results/lbt13.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Parameter Code + Visit + NCI CTCAE Grade at Visit A: Drug X B: Placebo C: Combination + Baseline NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CRP + WEEK 1 DAY 8 + Not High (n) 111 110 112 + Not High 93 (83.8%) 92 (83.6%) 98 (87.5%) + 1 8 (7.2%) 7 (6.4%) 5 (4.5%) + 2 2 (1.8%) 6 (5.5%) 7 (6.2%) + 3 6 (5.4%) 3 (2.7%) 2 (1.8%) + 4 2 (1.8%) 2 (1.8%) 0 + 1 (n) 8 11 6 + Not High 7 (87.5%) 11 (100%) 5 (83.3%) + 3 1 (12.5%) 0 1 (16.7%) + 2 (n) 6 4 5 + Not High 6 (100%) 1 (25.0%) 4 (80.0%) + 1 0 3 (75.0%) 1 (20.0%) + 3 (n) 8 3 4 + Not High 7 (87.5%) 3 (100%) 4 (100%) + 4 1 (12.5%) 0 0 + 4 (n) 1 6 5 + Not High 1 (100%) 5 (83.3%) 4 (80.0%) + 1 0 0 1 (20.0%) + 3 0 1 (16.7%) 0 + WEEK 2 DAY 15 + Not High (n) 117 113 113 + Not High 99 (84.6%) 95 (84.1%) 100 (88.5%) + 1 7 (6.0%) 6 (5.3%) 4 (3.5%) + 2 2 (1.7%) 6 (5.3%) 6 (5.3%) + 3 6 (5.1%) 4 (3.5%) 3 (2.7%) + 4 3 (2.6%) 2 (1.8%) 0 + 1 (n) 6 9 7 + Not High 5 (83.3%) 8 (88.9%) 6 (85.7%) + 1 0 1 (11.1%) 0 + 2 0 0 1 (14.3%) + 3 1 (16.7%) 0 0 + 2 (n) 4 4 6 + Not High 4 (100%) 4 (100%) 3 (50.0%) + 1 0 0 3 (50.0%) + 3 (n) 5 3 5 + Not High 4 (80.0%) 2 (66.7%) 5 (100%) + 1 1 (20.0%) 1 (33.3%) 0 + 4 (n) 2 5 1 + Not High 2 (100%) 3 (60.0%) 1 (100%) + 1 0 2 (40.0%) 0 + WEEK 3 DAY 22 + Not High (n) 110 111 114 + Not High 92 (83.6%) 94 (84.7%) 98 (86.0%) + 1 8 (7.3%) 9 (8.1%) 7 (6.1%) + 2 2 (1.8%) 5 (4.5%) 6 (5.3%) + 3 5 (4.5%) 2 (1.8%) 3 (2.6%) + 4 3 (2.7%) 1 (0.9%) 0 + 1 (n) 7 8 7 + Not High 7 (100%) 5 (62.5%) 6 (85.7%) + 1 0 1 (12.5%) 0 + 2 0 1 (12.5%) 1 (14.3%) + 3 0 1 (12.5%) 0 + 2 (n) 9 7 5 + Not High 9 (100%) 6 (85.7%) 5 (100%) + 3 0 1 (14.3%) 0 + 3 (n) 6 3 4 + Not High 5 (83.3%) 2 (66.7%) 4 (100%) + 3 1 (16.7%) 0 0 + 4 0 1 (33.3%) 0 + 4 (n) 2 5 2 + Not High 1 (50.0%) 5 (100%) 2 (100%) + 3 1 (50.0%) 0 0 + WEEK 4 DAY 29 + Not High (n) 115 117 113 + Not High 97 (84.3%) 101 (86.3%) 99 (87.6%) + 1 8 (7.0%) 7 (6.0%) 6 (5.3%) + 2 2 (1.7%) 6 (5.1%) 5 (4.4%) + 3 7 (6.1%) 3 (2.6%) 3 (2.7%) + 4 1 (0.9%) 0 0 + 1 (n) 4 3 11 + Not High 4 (100%) 2 (66.7%) 10 (90.9%) + 2 0 0 1 (9.1%) + 4 0 1 (33.3%) 0 + 2 (n) 6 4 2 + Not High 6 (100%) 3 (75.0%) 2 (100%) + 1 0 1 (25.0%) 0 + 3 (n) 6 7 4 + Not High 5 (83.3%) 4 (57.1%) 4 (100%) + 1 0 1 (14.3%) 0 + 3 0 1 (14.3%) 0 + 4 1 (16.7%) 1 (14.3%) 0 + 4 (n) 3 3 2 + Not High 2 (66.7%) 2 (66.7%) 0 + 1 0 1 (33.3%) 1 (50.0%) + 2 0 0 1 (50.0%) + 4 1 (33.3%) 0 0 + WEEK 5 DAY 36 + Not High (n) 111 111 119 + Not High 95 (85.6%) 95 (85.6%) 104 (87.4%) + 1 6 (5.4%) 8 (7.2%) 6 (5.0%) + 2 1 (0.9%) 5 (4.5%) 6 (5.0%) + 3 6 (5.4%) 2 (1.8%) 3 (2.5%) + 4 3 (2.7%) 1 (0.9%) 0 + 1 (n) 8 11 5 + Not High 7 (87.5%) 9 (81.8%) 4 (80.0%) + 1 0 1 (9.1%) 0 + 2 0 0 1 (20.0%) + 3 1 (12.5%) 1 (9.1%) 0 + 2 (n) 7 6 3 + Not High 5 (71.4%) 3 (50.0%) 2 (66.7%) + 1 1 (14.3%) 1 (16.7%) 1 (33.3%) + 2 1 (14.3%) 1 (16.7%) 0 + 4 0 1 (16.7%) 0 + 3 (n) 3 3 4 + Not High 3 (100%) 3 (100%) 4 (100%) + 4 (n) 5 3 1 + Not High 4 (80.0%) 2 (66.7%) 1 (100%) + 1 1 (20.0%) 0 0 + 3 0 1 (33.3%) 0 + +# tables/lab-results/lbt13.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + Parameter Code + Visit + NCI CTCAE Grade at Visit A: Drug X B: Placebo C: Combination + Baseline NCI CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CRP + WEEK 1 DAY 8 + Not High (n) 111 110 112 + Not High 93 (83.8%) 92 (83.6%) 98 (87.5%) + 1 8 (7.2%) 7 (6.4%) 5 (4.5%) + 2 2 (1.8%) 6 (5.5%) 7 (6.2%) + 3 6 (5.4%) 3 (2.7%) 2 (1.8%) + 4 2 (1.8%) 2 (1.8%) 0 + Missing 0 0 0 + 1 (n) 8 11 6 + Not High 7 (87.5%) 11 (100%) 5 (83.3%) + 1 0 0 0 + 2 0 0 0 + 3 1 (12.5%) 0 1 (16.7%) + 4 0 0 0 + Missing 0 0 0 + 2 (n) 6 4 5 + Not High 6 (100%) 1 (25.0%) 4 (80.0%) + 1 0 3 (75.0%) 1 (20.0%) + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 3 (n) 8 3 4 + Not High 7 (87.5%) 3 (100%) 4 (100%) + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 1 (12.5%) 0 0 + Missing 0 0 0 + 4 (n) 1 6 5 + Not High 1 (100%) 5 (83.3%) 4 (80.0%) + 1 0 0 1 (20.0%) + 2 0 0 0 + 3 0 1 (16.7%) 0 + 4 0 0 0 + Missing 0 0 0 + Missing (n) 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + WEEK 2 DAY 15 + Not High (n) 117 113 113 + Not High 99 (84.6%) 95 (84.1%) 100 (88.5%) + 1 7 (6.0%) 6 (5.3%) 4 (3.5%) + 2 2 (1.7%) 6 (5.3%) 6 (5.3%) + 3 6 (5.1%) 4 (3.5%) 3 (2.7%) + 4 3 (2.6%) 2 (1.8%) 0 + Missing 0 0 0 + 1 (n) 6 9 7 + Not High 5 (83.3%) 8 (88.9%) 6 (85.7%) + 1 0 1 (11.1%) 0 + 2 0 0 1 (14.3%) + 3 1 (16.7%) 0 0 + 4 0 0 0 + Missing 0 0 0 + 2 (n) 4 4 6 + Not High 4 (100%) 4 (100%) 3 (50.0%) + 1 0 0 3 (50.0%) + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 3 (n) 5 3 5 + Not High 4 (80.0%) 2 (66.7%) 5 (100%) + 1 1 (20.0%) 1 (33.3%) 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 4 (n) 2 5 1 + Not High 2 (100%) 3 (60.0%) 1 (100%) + 1 0 2 (40.0%) 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + Missing (n) 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + WEEK 3 DAY 22 + Not High (n) 110 111 114 + Not High 92 (83.6%) 94 (84.7%) 98 (86.0%) + 1 8 (7.3%) 9 (8.1%) 7 (6.1%) + 2 2 (1.8%) 5 (4.5%) 6 (5.3%) + 3 5 (4.5%) 2 (1.8%) 3 (2.6%) + 4 3 (2.7%) 1 (0.9%) 0 + Missing 0 0 0 + 1 (n) 7 8 7 + Not High 7 (100%) 5 (62.5%) 6 (85.7%) + 1 0 1 (12.5%) 0 + 2 0 1 (12.5%) 1 (14.3%) + 3 0 1 (12.5%) 0 + 4 0 0 0 + Missing 0 0 0 + 2 (n) 9 7 5 + Not High 9 (100%) 6 (85.7%) 5 (100%) + 1 0 0 0 + 2 0 0 0 + 3 0 1 (14.3%) 0 + 4 0 0 0 + Missing 0 0 0 + 3 (n) 6 3 4 + Not High 5 (83.3%) 2 (66.7%) 4 (100%) + 1 0 0 0 + 2 0 0 0 + 3 1 (16.7%) 0 0 + 4 0 1 (33.3%) 0 + Missing 0 0 0 + 4 (n) 2 5 2 + Not High 1 (50.0%) 5 (100%) 2 (100%) + 1 0 0 0 + 2 0 0 0 + 3 1 (50.0%) 0 0 + 4 0 0 0 + Missing 0 0 0 + Missing (n) 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + WEEK 4 DAY 29 + Not High (n) 115 117 113 + Not High 97 (84.3%) 101 (86.3%) 99 (87.6%) + 1 8 (7.0%) 7 (6.0%) 6 (5.3%) + 2 2 (1.7%) 6 (5.1%) 5 (4.4%) + 3 7 (6.1%) 3 (2.6%) 3 (2.7%) + 4 1 (0.9%) 0 0 + Missing 0 0 0 + 1 (n) 4 3 11 + Not High 4 (100%) 2 (66.7%) 10 (90.9%) + 1 0 0 0 + 2 0 0 1 (9.1%) + 3 0 0 0 + 4 0 1 (33.3%) 0 + Missing 0 0 0 + 2 (n) 6 4 2 + Not High 6 (100%) 3 (75.0%) 2 (100%) + 1 0 1 (25.0%) 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 3 (n) 6 7 4 + Not High 5 (83.3%) 4 (57.1%) 4 (100%) + 1 0 1 (14.3%) 0 + 2 0 0 0 + 3 0 1 (14.3%) 0 + 4 1 (16.7%) 1 (14.3%) 0 + Missing 0 0 0 + 4 (n) 3 3 2 + Not High 2 (66.7%) 2 (66.7%) 0 + 1 0 1 (33.3%) 1 (50.0%) + 2 0 0 1 (50.0%) + 3 0 0 0 + 4 1 (33.3%) 0 0 + Missing 0 0 0 + Missing (n) 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + WEEK 5 DAY 36 + Not High (n) 111 111 119 + Not High 95 (85.6%) 95 (85.6%) 104 (87.4%) + 1 6 (5.4%) 8 (7.2%) 6 (5.0%) + 2 1 (0.9%) 5 (4.5%) 6 (5.0%) + 3 6 (5.4%) 2 (1.8%) 3 (2.5%) + 4 3 (2.7%) 1 (0.9%) 0 + Missing 0 0 0 + 1 (n) 8 11 5 + Not High 7 (87.5%) 9 (81.8%) 4 (80.0%) + 1 0 1 (9.1%) 0 + 2 0 0 1 (20.0%) + 3 1 (12.5%) 1 (9.1%) 0 + 4 0 0 0 + Missing 0 0 0 + 2 (n) 7 6 3 + Not High 5 (71.4%) 3 (50.0%) 2 (66.7%) + 1 1 (14.3%) 1 (16.7%) 1 (33.3%) + 2 1 (14.3%) 1 (16.7%) 0 + 3 0 0 0 + 4 0 1 (16.7%) 0 + Missing 0 0 0 + 3 (n) 3 3 4 + Not High 3 (100%) 3 (100%) 4 (100%) + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 4 (n) 5 3 1 + Not High 4 (80.0%) 2 (66.7%) 1 (100%) + 1 1 (20.0%) 0 0 + 2 0 0 0 + 3 0 1 (33.3%) 0 + 4 0 0 0 + Missing 0 0 0 + Missing (n) 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt14.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt14.md new file mode 100644 index 0000000000..4aee83a637 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt14.md @@ -0,0 +1,411 @@ +# tables/lab-results/lbt14.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Parameter + Baseline NCI-CTCAE Grade A: Drug X B: Placebo C: Combination + Post-baseline NCI-CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + Not High 134 134 132 + Not High 134 (100%) 134 (100%) 132 (100%) + C-Reactive Protein Measurement + Not High 114 112 115 + Not High 45 (33.6%) 55 (41.0%) 57 (43.2%) + 1 18 (13.4%) 18 (13.4%) 19 (14.4%) + 2 19 (14.2%) 10 (7.5%) 11 (8.3%) + 3 22 (16.4%) 13 (9.7%) 20 (15.2%) + 4 10 (7.5%) 16 (11.9%) 8 (6.1%) + 1 8 10 7 + Not High 5 (3.7%) 2 (1.5%) 2 (1.5%) + 1 0 1 (0.7%) 0 + 2 1 (0.7%) 3 (2.2%) 3 (2.3%) + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 3 (2.2%) 2 (1.5%) + 2 2 6 7 + Not High 1 (0.7%) 4 (3.0%) 4 (3.0%) + 1 0 1 (0.7%) 2 (1.5%) + 2 1 (0.7%) 1 (0.7%) 0 + 4 0 0 1 (0.8%) + 3 7 4 3 + Not High 3 (2.2%) 0 2 (1.5%) + 1 2 (1.5%) 1 (0.7%) 1 (0.8%) + 2 0 1 (0.7%) 0 + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 1 (0.7%) 0 + 4 3 2 0 + Not High 1 (0.7%) 0 0 + 1 0 1 (0.7%) 0 + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 0 0 + Immunoglobulin A Measurement + Not High 119 116 113 + Not High 55 (41.0%) 54 (40.3%) 51 (38.6%) + 1 18 (13.4%) 11 (8.2%) 15 (11.4%) + 2 14 (10.4%) 22 (16.4%) 19 (14.4%) + 3 20 (14.9%) 19 (14.2%) 20 (15.2%) + 4 12 (9.0%) 10 (7.5%) 8 (6.1%) + 1 5 4 2 + Not High 4 (3.0%) 1 (0.7%) 2 (1.5%) + 2 1 (0.7%) 1 (0.7%) 0 + 3 0 2 (1.5%) 0 + 2 4 4 5 + Not High 2 (1.5%) 3 (2.2%) 3 (2.3%) + 1 1 (0.7%) 0 2 (1.5%) + 3 1 (0.7%) 0 0 + 4 0 1 (0.7%) 0 + 3 4 5 11 + Not High 3 (2.2%) 1 (0.7%) 6 (4.5%) + 1 0 1 (0.7%) 1 (0.8%) + 2 1 (0.7%) 0 0 + 3 0 2 (1.5%) 3 (2.3%) + 4 0 1 (0.7%) 1 (0.8%) + 4 2 5 1 + Not High 0 3 (2.2%) 1 (0.8%) + 2 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 1 (0.7%) 0 + +# tables/lab-results/lbt14.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Parameter + Baseline NCI-CTCAE Grade A: Drug X B: Placebo C: Combination + Post-baseline NCI-CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + Not Low 113 117 123 + Not Low 56 (41.8%) 55 (41.0%) 62 (47.0%) + 1 11 (8.2%) 9 (6.7%) 15 (11.4%) + 2 15 (11.2%) 23 (17.2%) 16 (12.1%) + 3 15 (11.2%) 21 (15.7%) 13 (9.8%) + 4 16 (11.9%) 9 (6.7%) 17 (12.9%) + 1 6 6 4 + Not Low 3 (2.2%) 5 (3.7%) 3 (2.3%) + 1 3 (2.2%) 0 0 + 4 0 1 (0.7%) 1 (0.8%) + 2 8 5 1 + Not Low 5 (3.7%) 3 (2.2%) 0 + 1 0 1 (0.7%) 0 + 2 2 (1.5%) 0 0 + 3 0 1 (0.7%) 1 (0.8%) + 4 1 (0.7%) 0 0 + 3 3 3 2 + Not Low 0 1 (0.7%) 0 + 1 1 (0.7%) 0 0 + 2 1 (0.7%) 0 1 (0.8%) + 3 1 (0.7%) 2 (1.5%) 1 (0.8%) + 4 4 3 2 + Not Low 4 (3.0%) 1 (0.7%) 1 (0.8%) + 1 0 1 (0.7%) 0 + 2 0 1 (0.7%) 0 + 3 0 0 1 (0.8%) + C-Reactive Protein Measurement + Not Low 119 113 112 + Not Low 41 (30.6%) 42 (31.3%) 50 (37.9%) + 1 20 (14.9%) 18 (13.4%) 11 (8.3%) + 2 24 (17.9%) 20 (14.9%) 14 (10.6%) + 3 25 (18.7%) 18 (13.4%) 21 (15.9%) + 4 9 (6.7%) 15 (11.2%) 16 (12.1%) + 1 3 5 9 + Not Low 2 (1.5%) 2 (1.5%) 2 (1.5%) + 2 0 1 (0.7%) 3 (2.3%) + 3 1 (0.7%) 1 (0.7%) 0 + 4 0 1 (0.7%) 4 (3.0%) + 2 5 9 2 + Not Low 3 (2.2%) 4 (3.0%) 1 (0.8%) + 1 1 (0.7%) 4 (3.0%) 0 + 3 0 1 (0.7%) 1 (0.8%) + 4 1 (0.7%) 0 0 + 3 4 5 7 + Not Low 1 (0.7%) 4 (3.0%) 2 (1.5%) + 1 0 0 1 (0.8%) + 2 0 0 1 (0.8%) + 3 3 (2.2%) 1 (0.7%) 2 (1.5%) + 4 0 0 1 (0.8%) + 4 3 2 2 + Not Low 3 (2.2%) 1 (0.7%) 0 + 2 0 1 (0.7%) 0 + 3 0 0 1 (0.8%) + 4 0 0 1 (0.8%) + Immunoglobulin A Measurement + Not Low 134 134 132 + Not Low 134 (100%) 134 (100%) 132 (100%) + +# tables/lab-results/lbt14.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Parameter + Baseline NCI-CTCAE Grade A: Drug X B: Placebo C: Combination + Post-baseline NCI-CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + Not High 134 134 132 + Not High 134 (100%) 134 (100%) 132 (100%) + C-Reactive Protein Measurement + Not High 114 112 115 + Not High 45 (33.6%) 55 (41.0%) 57 (43.2%) + 1 18 (13.4%) 18 (13.4%) 19 (14.4%) + 2 19 (14.2%) 10 (7.5%) 11 (8.3%) + 3 22 (16.4%) 13 (9.7%) 20 (15.2%) + 4 10 (7.5%) 16 (11.9%) 8 (6.1%) + 1 8 10 7 + Not High 5 (3.7%) 2 (1.5%) 2 (1.5%) + 1 0 1 (0.7%) 0 + 2 1 (0.7%) 3 (2.2%) 3 (2.3%) + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 3 (2.2%) 2 (1.5%) + 2 2 6 7 + Not High 1 (0.7%) 4 (3.0%) 4 (3.0%) + 1 0 1 (0.7%) 2 (1.5%) + 2 1 (0.7%) 1 (0.7%) 0 + 4 0 0 1 (0.8%) + 3 7 4 3 + Not High 3 (2.2%) 0 2 (1.5%) + 1 2 (1.5%) 1 (0.7%) 1 (0.8%) + 2 0 1 (0.7%) 0 + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 1 (0.7%) 0 + 4 3 2 0 + Not High 1 (0.7%) 0 0 + 1 0 1 (0.7%) 0 + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 0 0 + Immunoglobulin A Measurement + Not High 119 116 113 + Not High 55 (41.0%) 54 (40.3%) 51 (38.6%) + 1 18 (13.4%) 11 (8.2%) 15 (11.4%) + 2 14 (10.4%) 22 (16.4%) 19 (14.4%) + 3 20 (14.9%) 19 (14.2%) 20 (15.2%) + 4 12 (9.0%) 10 (7.5%) 8 (6.1%) + 1 5 4 2 + Not High 4 (3.0%) 1 (0.7%) 2 (1.5%) + 2 1 (0.7%) 1 (0.7%) 0 + 3 0 2 (1.5%) 0 + 2 4 4 5 + Not High 2 (1.5%) 3 (2.2%) 3 (2.3%) + 1 1 (0.7%) 0 2 (1.5%) + 3 1 (0.7%) 0 0 + 4 0 1 (0.7%) 0 + 3 4 5 11 + Not High 3 (2.2%) 1 (0.7%) 6 (4.5%) + 1 0 1 (0.7%) 1 (0.8%) + 2 1 (0.7%) 0 0 + 3 0 2 (1.5%) 3 (2.3%) + 4 0 1 (0.7%) 1 (0.8%) + 4 2 5 1 + Not High 0 3 (2.2%) 1 (0.8%) + 2 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 1 (0.7%) 0 + +# tables/lab-results/lbt14.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Parameter + Baseline NCI-CTCAE Grade A: Drug X B: Placebo C: Combination + Post-baseline NCI-CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + Not Low 113 117 123 + Not Low 56 (41.8%) 55 (41.0%) 62 (47.0%) + 1 11 (8.2%) 9 (6.7%) 15 (11.4%) + 2 15 (11.2%) 23 (17.2%) 16 (12.1%) + 3 15 (11.2%) 21 (15.7%) 13 (9.8%) + 4 16 (11.9%) 9 (6.7%) 17 (12.9%) + 1 6 6 4 + Not Low 3 (2.2%) 5 (3.7%) 3 (2.3%) + 1 3 (2.2%) 0 0 + 4 0 1 (0.7%) 1 (0.8%) + 2 8 5 1 + Not Low 5 (3.7%) 3 (2.2%) 0 + 1 0 1 (0.7%) 0 + 2 2 (1.5%) 0 0 + 3 0 1 (0.7%) 1 (0.8%) + 4 1 (0.7%) 0 0 + 3 3 3 2 + Not Low 0 1 (0.7%) 0 + 1 1 (0.7%) 0 0 + 2 1 (0.7%) 0 1 (0.8%) + 3 1 (0.7%) 2 (1.5%) 1 (0.8%) + 4 4 3 2 + Not Low 4 (3.0%) 1 (0.7%) 1 (0.8%) + 1 0 1 (0.7%) 0 + 2 0 1 (0.7%) 0 + 3 0 0 1 (0.8%) + C-Reactive Protein Measurement + Not Low 119 113 112 + Not Low 41 (30.6%) 42 (31.3%) 50 (37.9%) + 1 20 (14.9%) 18 (13.4%) 11 (8.3%) + 2 24 (17.9%) 20 (14.9%) 14 (10.6%) + 3 25 (18.7%) 18 (13.4%) 21 (15.9%) + 4 9 (6.7%) 15 (11.2%) 16 (12.1%) + 1 3 5 9 + Not Low 2 (1.5%) 2 (1.5%) 2 (1.5%) + 2 0 1 (0.7%) 3 (2.3%) + 3 1 (0.7%) 1 (0.7%) 0 + 4 0 1 (0.7%) 4 (3.0%) + 2 5 9 2 + Not Low 3 (2.2%) 4 (3.0%) 1 (0.8%) + 1 1 (0.7%) 4 (3.0%) 0 + 3 0 1 (0.7%) 1 (0.8%) + 4 1 (0.7%) 0 0 + 3 4 5 7 + Not Low 1 (0.7%) 4 (3.0%) 2 (1.5%) + 1 0 0 1 (0.8%) + 2 0 0 1 (0.8%) + 3 3 (2.2%) 1 (0.7%) 2 (1.5%) + 4 0 0 1 (0.8%) + 4 3 2 2 + Not Low 3 (2.2%) 1 (0.7%) 0 + 2 0 1 (0.7%) 0 + 3 0 0 1 (0.8%) + 4 0 0 1 (0.8%) + Immunoglobulin A Measurement + Not Low 134 134 132 + Not Low 134 (100%) 134 (100%) 132 (100%) + +# tables/lab-results/lbt14.qmd result_v5 development + + Code + print(data_snap[[i]]) + Output + Parameter + Baseline NCI-CTCAE Grade A: Drug X B: Placebo C: Combination + Post-baseline NCI-CTCAE Grade (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Alanine Aminotransferase Measurement + Not High 134 134 132 + Not High 134 (100%) 134 (100%) 132 (100%) + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 1 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 2 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 3 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + 4 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + Missing 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + C-Reactive Protein Measurement + Not High 114 112 115 + Not High 45 (33.6%) 55 (41.0%) 57 (43.2%) + 1 18 (13.4%) 18 (13.4%) 19 (14.4%) + 2 19 (14.2%) 10 (7.5%) 11 (8.3%) + 3 22 (16.4%) 13 (9.7%) 20 (15.2%) + 4 10 (7.5%) 16 (11.9%) 8 (6.1%) + Missing 0 0 0 + 1 8 10 7 + Not High 5 (3.7%) 2 (1.5%) 2 (1.5%) + 1 0 1 (0.7%) 0 + 2 1 (0.7%) 3 (2.2%) 3 (2.3%) + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 3 (2.2%) 2 (1.5%) + Missing 0 0 0 + 2 2 6 7 + Not High 1 (0.7%) 4 (3.0%) 4 (3.0%) + 1 0 1 (0.7%) 2 (1.5%) + 2 1 (0.7%) 1 (0.7%) 0 + 3 0 0 0 + 4 0 0 1 (0.8%) + Missing 0 0 0 + 3 7 4 3 + Not High 3 (2.2%) 0 2 (1.5%) + 1 2 (1.5%) 1 (0.7%) 1 (0.8%) + 2 0 1 (0.7%) 0 + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 1 (0.7%) 0 + Missing 0 0 0 + 4 3 2 0 + Not High 1 (0.7%) 0 0 + 1 0 1 (0.7%) 0 + 2 0 0 0 + 3 1 (0.7%) 1 (0.7%) 0 + 4 1 (0.7%) 0 0 + Missing 0 0 0 + Missing 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + Immunoglobulin A Measurement + Not High 119 116 113 + Not High 55 (41.0%) 54 (40.3%) 51 (38.6%) + 1 18 (13.4%) 11 (8.2%) 15 (11.4%) + 2 14 (10.4%) 22 (16.4%) 19 (14.4%) + 3 20 (14.9%) 19 (14.2%) 20 (15.2%) + 4 12 (9.0%) 10 (7.5%) 8 (6.1%) + Missing 0 0 0 + 1 5 4 2 + Not High 4 (3.0%) 1 (0.7%) 2 (1.5%) + 1 0 0 0 + 2 1 (0.7%) 1 (0.7%) 0 + 3 0 2 (1.5%) 0 + 4 0 0 0 + Missing 0 0 0 + 2 4 4 5 + Not High 2 (1.5%) 3 (2.2%) 3 (2.3%) + 1 1 (0.7%) 0 2 (1.5%) + 2 0 0 0 + 3 1 (0.7%) 0 0 + 4 0 1 (0.7%) 0 + Missing 0 0 0 + 3 4 5 11 + Not High 3 (2.2%) 1 (0.7%) 6 (4.5%) + 1 0 1 (0.7%) 1 (0.8%) + 2 1 (0.7%) 0 0 + 3 0 2 (1.5%) 3 (2.3%) + 4 0 1 (0.7%) 1 (0.8%) + Missing 0 0 0 + 4 2 5 1 + Not High 0 3 (2.2%) 1 (0.8%) + 1 0 0 0 + 2 1 (0.7%) 1 (0.7%) 0 + 3 0 0 0 + 4 1 (0.7%) 1 (0.7%) 0 + Missing 0 0 0 + Missing 0 0 0 + Not High 0 0 0 + 1 0 0 0 + 2 0 0 0 + 3 0 0 0 + 4 0 0 0 + Missing 0 0 0 + diff --git a/package/tests/testthat/_snaps/development/tables-lab-results-lbt15.md b/package/tests/testthat/_snaps/development/tables-lab-results-lbt15.md new file mode 100644 index 0000000000..d6bad3c509 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-lab-results-lbt15.md @@ -0,0 +1,42 @@ +# tables/lab-results/lbt15.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Category for Lab Test + Parameter A: Drug X B: Placebo C: Combination All Patients + Direction of Abnormality (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CHEMISTRY + Alanine Aminotransferase Measurement + Low 32/127 (25.2%) 32/128 (25%) 32/128 (25%) 96/383 (25.1%) + High 0/134 0/134 0/132 0/400 + C-Reactive Protein Measurement + Low 36/127 (28.3%) 36/127 (28.3%) 42/123 (34.1%) 114/377 (30.2%) + High 34/124 (27.4%) 33/128 (25.8%) 31/129 (24%) 98/381 (25.7%) + IMMUNOLOGY + Immunoglobulin A Measurement + Low 0/134 0/134 0/132 0/400 + High 33/128 (25.8%) 32/124 (25.8%) 28/120 (23.3%) 93/372 (25%) + +# tables/lab-results/lbt15.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Category for Lab Test + Parameter A: Drug X B: Placebo C: Combination All Patients + Direction of Abnormality (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CHEMISTRY + Alanine Aminotransferase Measurement + Low 46/119 (38.7%) 54/123 (43.9%) 47/127 (37%) 147/369 (39.8%) + High 0/134 0/134 0/132 0/400 + C-Reactive Protein Measurement + Low 59/122 (48.4%) 56/118 (47.5%) 58/121 (47.9%) 173/361 (47.9%) + High 54/122 (44.3%) 46/122 (37.7%) 44/122 (36.1%) 144/366 (39.3%) + IMMUNOLOGY + Immunoglobulin A Measurement + Low 0/134 0/134 0/132 0/400 + High 47/124 (37.9%) 54/120 (45%) 47/115 (40.9%) 148/359 (41.2%) + diff --git a/package/tests/testthat/_snaps/development/tables-medical-history-mht01.md b/package/tests/testthat/_snaps/development/tables-medical-history-mht01.md new file mode 100644 index 0000000000..4efd6c8326 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-medical-history-mht01.md @@ -0,0 +1,109 @@ +# tables/medical-history/mht01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one condition 122 (91.0%) 123 (91.8%) 120 (90.9%) + Total number of conditions 609 622 703 + cl A + Total number of patients with at least one condition 78 (58.2%) 75 (56.0%) 89 (67.4%) + Total number of conditions 132 130 160 + trm A_1/2 50 (37.3%) 45 (33.6%) 63 (47.7%) + trm A_2/2 48 (35.8%) 48 (35.8%) 50 (37.9%) + cl B + Total number of patients with at least one condition 96 (71.6%) 89 (66.4%) 97 (73.5%) + Total number of conditions 185 198 205 + trm B_1/3 47 (35.1%) 49 (36.6%) 43 (32.6%) + trm B_2/3 49 (36.6%) 44 (32.8%) 52 (39.4%) + trm B_3/3 48 (35.8%) 54 (40.3%) 51 (38.6%) + cl C + Total number of patients with at least one condition 67 (50.0%) 75 (56.0%) 79 (59.8%) + Total number of conditions 103 116 129 + trm C_1/2 43 (32.1%) 46 (34.3%) 43 (32.6%) + trm C_2/2 35 (26.1%) 48 (35.8%) 55 (41.7%) + cl D + Total number of patients with at least one condition 96 (71.6%) 90 (67.2%) 98 (74.2%) + Total number of conditions 189 178 209 + trm D_1/3 50 (37.3%) 42 (31.3%) 51 (38.6%) + trm D_2/3 48 (35.8%) 42 (31.3%) 50 (37.9%) + trm D_3/3 47 (35.1%) 58 (43.3%) 57 (43.2%) + +# tables/medical-history/mht01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one condition 0 0 1 (0.8%) + Total number of conditions 0 0 1 + cl D + Total number of patients with at least one condition 0 0 1 (0.8%) + Total number of conditions 0 0 1 + trm D_2/3 0 0 1 (0.8%) + +# tables/medical-history/mht01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination + MedDRA Preferred Term (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one condition 122 (91.0%) 123 (91.8%) 120 (90.9%) + cl A + Total number of patients with at least one condition 78 (58.2%) 75 (56.0%) 89 (67.4%) + trm A_1/2 50 (37.3%) 45 (33.6%) 63 (47.7%) + trm A_2/2 48 (35.8%) 48 (35.8%) 50 (37.9%) + cl B + Total number of patients with at least one condition 96 (71.6%) 89 (66.4%) 97 (73.5%) + trm B_1/3 47 (35.1%) 49 (36.6%) 43 (32.6%) + trm B_2/3 49 (36.6%) 44 (32.8%) 52 (39.4%) + trm B_3/3 48 (35.8%) 54 (40.3%) 51 (38.6%) + cl C + Total number of patients with at least one condition 67 (50.0%) 75 (56.0%) 79 (59.8%) + trm C_1/2 43 (32.1%) 46 (34.3%) 43 (32.6%) + trm C_2/2 35 (26.1%) 48 (35.8%) 55 (41.7%) + cl D + Total number of patients with at least one condition 96 (71.6%) 90 (67.2%) 98 (74.2%) + trm D_1/3 50 (37.3%) 42 (31.3%) 51 (38.6%) + trm D_2/3 48 (35.8%) 42 (31.3%) 50 (37.9%) + trm D_3/3 47 (35.1%) 58 (43.3%) 57 (43.2%) + +# tables/medical-history/mht01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + MedDRA System Organ Class A: Drug X B: Placebo C: Combination All Patients + MedDRA Preferred Term (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total number of patients with at least one event 122 (91.0%) 123 (91.8%) 120 (90.9%) 365 (91.2%) + Total number of conditions 609 622 703 1934 + cl D + Total number of patients with at least one event 96 (71.6%) 90 (67.2%) 98 (74.2%) 284 (71.0%) + Total number of conditions 189 178 209 576 + trm D_3/3 47 (35.1%) 58 (43.3%) 57 (43.2%) 162 (40.5%) + trm D_1/3 50 (37.3%) 42 (31.3%) 51 (38.6%) 143 (35.8%) + trm D_2/3 48 (35.8%) 42 (31.3%) 50 (37.9%) 140 (35.0%) + cl B + Total number of patients with at least one event 96 (71.6%) 89 (66.4%) 97 (73.5%) 282 (70.5%) + Total number of conditions 185 198 205 588 + trm B_3/3 48 (35.8%) 54 (40.3%) 51 (38.6%) 153 (38.2%) + trm B_2/3 49 (36.6%) 44 (32.8%) 52 (39.4%) 145 (36.2%) + trm B_1/3 47 (35.1%) 49 (36.6%) 43 (32.6%) 139 (34.8%) + cl A + Total number of patients with at least one event 78 (58.2%) 75 (56.0%) 89 (67.4%) 242 (60.5%) + Total number of conditions 132 130 160 422 + trm A_1/2 50 (37.3%) 45 (33.6%) 63 (47.7%) 158 (39.5%) + trm A_2/2 48 (35.8%) 48 (35.8%) 50 (37.9%) 146 (36.5%) + cl C + Total number of patients with at least one event 67 (50.0%) 75 (56.0%) 79 (59.8%) 221 (55.2%) + Total number of conditions 103 116 129 348 + trm C_2/2 35 (26.1%) 48 (35.8%) 55 (41.7%) 138 (34.5%) + trm C_1/2 43 (32.1%) 46 (34.3%) 43 (32.6%) 132 (33.0%) + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkct01.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkct01.md new file mode 100644 index 0000000000..b80a65b235 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkct01.md @@ -0,0 +1,97 @@ +# tables/pharmacokinetic/pkct01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of PK Concentrations by Nominal Time and Treatment: PK Evaluable + Protocol: xxxxx + Analyte: Plasma Drug X + Treatment: A: Drug X + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Group Number + Visit of + Nominal Time (hr) / Timepoint n LTRs/BLQs Mean SD CV (%) Mean Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X (N=134) + Day 1 + 0 / Predose 134 134 0 0 NE NE NE 0 0 0 + 0.5 / 0.5H 134 0 12.6 1.51 12.0 12.5 12.2 12.6 9.72 15.6 + 1 / 1H 134 0 16.2 1.63 10.0 16.1 10.1 16.2 12.6 19.9 + 1.5 / 1.5H 134 0 15.6 1.46 9.3 15.6 9.3 15.5 12.3 19.0 + 2 / 2H 134 0 13.4 1.35 10.1 13.4 10.0 13.3 10.8 16.5 + 3 / 3H 134 0 8.47 1.25 14.7 8.38 15.0 8.40 5.88 10.9 + 4 / 4H 134 0 4.79 1.02 21.2 4.69 22.0 4.79 2.70 7.09 + 8 / 8H 134 0 0.348 0.180 51.7 0.303 58.4 0.318 0.0760 0.866 + 12 / 12H 134 0 0.0224 0.0189 84.6 0.0156 111.6 0.0170 0.00200 0.0830 + Day 2 + 24 / 24H 134 134 0 0 NE NE NE 0 0 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + NE: Not Estimable + +# tables/pharmacokinetic/pkct01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Summary of PK Concentrations by Nominal Time and Treatment: PK Evaluable + Protocol: xxxxx + Analyte: Plasma Drug X + Treatment: A: Drug X + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Group Number + Visit of + Nominal Time (hr) / Timepoint n LTRs/BLQs Mean SD CV (%) Mean Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X (N=134) + Day 1 + 0 / Predose 134 134 ND ND ND NE ND 0 ND 0 + 0.5 / 0.5H 134 0 12.6 1.51 12.0 12.5 12.2 12.6 9.72 15.6 + 1 / 1H 134 0 16.2 1.63 10.0 16.1 10.1 16.2 12.6 19.9 + 1.5 / 1.5H 134 0 15.6 1.46 9.3 15.6 9.3 15.5 12.3 19.0 + 2 / 2H 134 0 13.4 1.35 10.1 13.4 10.0 13.3 10.8 16.5 + 3 / 3H 134 0 8.47 1.25 14.7 8.38 15.0 8.40 5.88 10.9 + 4 / 4H 134 0 4.79 1.02 21.2 4.69 22.0 4.79 2.70 7.09 + 8 / 8H 134 0 0.348 0.180 51.7 0.303 58.4 0.318 0.0760 0.866 + 12 / 12H 134 0 0.0224 0.0189 84.6 0.0156 111.6 0.0170 0.00200 0.0830 + Day 2 + 24 / 24H 134 134 ND ND ND NE ND 0 ND 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + NE: Not Estimable + ND: Not Derived + +# tables/pharmacokinetic/pkct01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Summary of PK Concentrations by Nominal Time and Treatment: PK Evaluable + Protocol: xxxxx + Analyte: Plasma Drug X + Treatment: A: Drug X + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Group Number + Visit of + Nominal Time (hr) / Timepoint n LTRs/BLQs Mean SD CV (%) Mean Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X (N=134) + Day 1 + 0 / Predose 134 134 ND ND ND ND ND ND ND 0 + 0.5 / 0.5H 134 0 12.6 1.51 12.0 12.5 12.2 12.6 9.72 15.6 + 1 / 1H 134 0 16.2 1.63 10.0 16.1 10.1 16.2 12.6 19.9 + 1.5 / 1.5H 134 0 15.6 1.46 9.3 15.6 9.3 15.5 12.3 19.0 + 2 / 2H 134 0 13.4 1.35 10.1 13.4 10.0 13.3 10.8 16.5 + 3 / 3H 134 0 8.47 1.25 14.7 8.38 15.0 8.40 5.88 10.9 + 4 / 4H 134 0 4.79 1.02 21.2 4.69 22.0 4.79 2.70 7.09 + 8 / 8H 134 0 0.348 0.180 51.7 0.303 58.4 0.318 0.0760 0.866 + 12 / 12H 134 0 0.0224 0.0189 84.6 0.0156 111.6 0.0170 0.00200 0.0830 + Day 2 + 24 / 24H 134 134 ND ND ND ND ND ND ND 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + ND: Not Derived + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt02.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt02.md new file mode 100644 index 0000000000..998b5f2286 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt02.md @@ -0,0 +1,74 @@ +# tables/pharmacokinetic/pkpt02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter ARM A ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Cmax (ug/mL) + n 134 132 + Mean (SD) 30.2 (6.24) 30.0 (5.46) + CV (%) 20.6 18.2 + Geometric Mean 29.6 29.5 + CV % Geometric Mean 21.0 18.9 + Median 29.9 29.8 + Min - Max 17.5 - 48.7 15.9 - 47.6 + AUCinf obs (day*ug/mL) + n 134 132 + Mean (SD) 203 (37.7) 195 (37.8) + CV (%) 18.6 19.4 + Geometric Mean 199 192 + CV % Geometric Mean 18.7 20.1 + Median 197 196 + Min - Max 125 - 311 103 - 315 + CL obs (ml/day/kg) + n 134 132 + Mean (SD) 5.04 (1.04) 5.01 (0.985) + CV (%) 20.6 19.7 + Geometric Mean 4.93 4.91 + CV % Geometric Mean 22.4 21.1 + Median 5.08 4.97 + Min - Max 2.25 - 7.39 2.10 - 7.49 + +# tables/pharmacokinetic/pkpt02.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Cmax (ug/mL) + n 132 + Mean (SD) 29.9 (5.55) + CV (%) 18.6 + Geometric Mean 29.4 + CV % Geometric Mean 20.1 + Median 29.7 + Min - Max 14.1 - 43.4 + AUCinf obs (day*ug/mL) + n 132 + Mean (SD) 199 (37.9) + CV (%) 19.1 + Geometric Mean 195 + CV % Geometric Mean 18.9 + Median 195 + Min - Max 126 - 318 + CL obs (ml/day/kg) + n 132 + Mean (SD) 4.96 (0.895) + CV (%) 18.1 + Geometric Mean 4.87 + CV % Geometric Mean 18.7 + Median 4.94 + Min - Max 2.99 - 7.21 + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt03.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt03.md new file mode 100644 index 0000000000..4e39455471 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt03.md @@ -0,0 +1,117 @@ +# tables/pharmacokinetic/pkpt03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + $`CYCLE 1 DAY 1` + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A (N=134) + Cmax (ug/mL) 0 NE NE NE NE NE NE NE NE + AUCinf obs (day*ug/mL) 134 203 37.7 18.6 199 18.7 197 125 311 + CL obs (ml/day/kg) 134 5.04 1.04 20.6 4.93 22.4 5.08 2.25 7.39 + ARM C (N=132) + Cmax (ug/mL) 132 30.0 5.46 18.2 29.5 18.9 29.8 15.9 47.6 + AUCinf obs (day*ug/mL) 132 195 37.8 19.4 192 20.1 196 103 315 + CL obs (ml/day/kg) 132 5.01 0.985 19.7 4.91 21.1 4.97 2.10 7.49 + + $`CYCLE 1 DAY 2` + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 2 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A (N=134) + Cmax (ug/mL) 134 29.4 6.22 21.2 28.6 24.4 29.8 10.1 43.5 + AUCinf obs (day*ug/mL) 134 202 41.2 20.4 197 21.4 200 105 294 + CL obs (ml/day/kg) 134 5.04 1.04 20.7 4.92 22.6 5.01 2.39 7.18 + ARM C (N=132) + Cmax (ug/mL) 132 30.4 6.03 19.9 29.7 21.7 30.5 12.4 45.5 + AUCinf obs (day*ug/mL) 132 191 43.0 22.5 186 24.7 189 74.8 296 + CL obs (ml/day/kg) 132 5.07 1.07 21.1 4.96 22.4 5.01 2.48 7.50 + + +# tables/pharmacokinetic/pkpt03.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + $`CYCLE 1 DAY 1` + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A (N=134) + AUCinf obs (day*ug/mL) 134 203 37.7 18.6 199 18.7 197 125 311 + CL obs (ml/day/kg) 134 5.04 1.04 20.6 4.93 22.4 5.08 2.25 7.39 + ARM C (N=132) + Cmax (ug/mL) 132 30.0 5.46 18.2 29.5 18.9 29.8 15.9 47.6 + AUCinf obs (day*ug/mL) 132 195 37.8 19.4 192 20.1 196 103 315 + CL obs (ml/day/kg) 132 5.01 0.985 19.7 4.91 21.1 4.97 2.10 7.49 + + $`CYCLE 1 DAY 2` + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 2 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A (N=134) + Cmax (ug/mL) 134 29.4 6.22 21.2 28.6 24.4 29.8 10.1 43.5 + AUCinf obs (day*ug/mL) 134 202 41.2 20.4 197 21.4 200 105 294 + CL obs (ml/day/kg) 134 5.04 1.04 20.7 4.92 22.6 5.01 2.39 7.18 + ARM C (N=132) + Cmax (ug/mL) 132 30.4 6.03 19.9 29.7 21.7 30.5 12.4 45.5 + AUCinf obs (day*ug/mL) 132 191 43.0 22.5 186 24.7 189 74.8 296 + CL obs (ml/day/kg) 132 5.07 1.07 21.1 4.96 22.4 5.01 2.48 7.50 + + +# tables/pharmacokinetic/pkpt03.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + $`CYCLE 1 DAY 1` + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM C (N=132) + Cmax (ug/mL) 132 29.9 5.55 18.6 29.4 20.1 29.7 14.1 43.4 + AUCinf obs (day*ug/mL) 132 199 37.9 19.1 195 18.9 195 126 318 + CL obs (ml/day/kg) 132 4.96 0.895 18.1 4.87 18.7 4.94 2.99 7.21 + + $`CYCLE 1 DAY 2` + Summary of Plasma PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 2 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM C (N=132) + Cmax (ug/mL) 132 30.7 6.12 19.9 30.1 21.9 31.4 12.9 48.3 + AUCinf obs (day*ug/mL) 132 199 40.0 20.1 194 22.2 197 79.2 295 + CL obs (ml/day/kg) 132 4.99 0.984 19.7 4.89 20.9 4.96 2.58 8.39 + + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt04.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt04.md new file mode 100644 index 0000000000..aea49abcc8 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt04.md @@ -0,0 +1,90 @@ +# tables/pharmacokinetic/pkpt04.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Urine PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter ARM A ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Ae (mg) + n 268 264 + Mean (SD) 1.55 (0.338) 1.54 (0.298) + CV (%) 21.8 19.4 + Geometric Mean 1.51 1.51 + CV % Geometric Mean 23.0 20.3 + Median 1.55 1.55 + Min - Max 0.702 - 2.46 0.850 - 2.21 + Fe (%) + n 268 264 + Mean (SD) 15.7 (3.35) 16.1 (3.10) + CV (%) 21.3 19.3 + Geometric Mean 15.3 15.8 + CV % Geometric Mean 22.2 20.2 + Median 15.8 16.0 + Min - Max 8.15 - 24.5 8.50 - 24.4 + CLR (L/hr) + n 134 132 + Mean (SD) 0.0492 (0.00961) 0.0502 (0.0105) + CV (%) 19.5 20.9 + Geometric Mean 0.0482 0.0491 + CV % Geometric Mean 21.0 21.9 + Median 0.0491 0.0498 + Min - Max 0.0249 - 0.0751 0.0251 - 0.0856 + RENALCLD (L/hr/mg) + n 134 132 + Mean (SD) 0.00487 (0.000965) 0.00511 (0.000934) + CV (%) 19.8 18.3 + Geometric Mean 0.00477 0.00502 + CV % Geometric Mean 21.2 19.7 + Median 0.00497 0.00515 + Min - Max 0.00238 - 0.00726 0.00236 - 0.00741 + +# tables/pharmacokinetic/pkpt04.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Summary of Urine PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Ae (mg) + n 264 + Mean (SD) 1.60 (0.315) + CV (%) 19.7 + Geometric Mean 1.56 + CV % Geometric Mean 21.4 + Median 1.60 + Min - Max 0.857 - 2.26 + Fe (%) + n 264 + Mean (SD) 15.8 (3.08) + CV (%) 19.4 + Geometric Mean 15.5 + CV % Geometric Mean 20.2 + Median 15.7 + Min - Max 8.31 - 23.8 + CLR (L/hr) + n 132 + Mean (SD) 0.0497 (0.0101) + CV (%) 20.3 + Geometric Mean 0.0486 + CV % Geometric Mean 22.0 + Median 0.0491 + Min - Max 0.0184 - 0.0776 + RENALCLD (L/hr/mg) + n 132 + Mean (SD) 0.00509 (0.00103) + CV (%) 20.3 + Geometric Mean 0.00499 + CV % Geometric Mean 21.4 + Median 0.00502 + Min - Max 0.00236 - 0.00794 + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt05.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt05.md new file mode 100644 index 0000000000..c96371cad3 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt05.md @@ -0,0 +1,43 @@ +# tables/pharmacokinetic/pkpt05.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Urine PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A + Ae (mg) 268 1.55 0.338 21.8 1.51 23.0 1.55 0.702 2.46 + Fe (%) 268 15.7 3.35 21.3 15.3 22.2 15.8 8.15 24.5 + CLR (L/hr) 134 0.0492 0.00961 19.5 0.0482 21.0 0.0491 0.0249 0.0751 + RENALCLD (L/hr/mg) 134 0.00487 0.000965 19.8 0.00477 21.2 0.00497 0.00238 0.00726 + ARM C + Ae (mg) 264 1.54 0.298 19.4 1.51 20.3 1.55 0.850 2.21 + Fe (%) 264 16.1 3.10 19.3 15.8 20.2 16.0 8.50 24.4 + CLR (L/hr) 132 0.0502 0.0105 20.9 0.0491 21.9 0.0498 0.0251 0.0856 + RENALCLD (L/hr/mg) 132 0.00511 0.000934 18.3 0.00502 19.7 0.00515 0.00236 0.00741 + +# tables/pharmacokinetic/pkpt05.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Summary of Urine PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM C + Ae (mg) 264 1.60 0.315 19.7 1.56 21.4 1.60 0.857 2.26 + Fe (%) 264 15.8 3.08 19.4 15.5 20.2 15.7 8.31 23.8 + CLR (L/hr) 132 0.0497 0.0101 20.3 0.0486 22.0 0.0491 0.0184 0.0776 + RENALCLD (L/hr/mg) 132 0.00509 0.00103 20.3 0.00499 21.4 0.00502 0.00236 0.00794 + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt06.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt06.md new file mode 100644 index 0000000000..b5bf94b060 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt06.md @@ -0,0 +1,42 @@ +# tables/pharmacokinetic/pkpt06.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Dose-Normalized PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter ARM A ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + RENALCLD (L/hr/mg) + n 134 132 + Mean (SD) 0.00487 (0.000965) 0.00511 (0.000934) + CV (%) 19.8 18.3 + Geometric Mean 0.00477 0.00502 + CV % Geometric Mean 21.2 19.7 + Median 0.00497 0.00515 + Min - Max 0.00238 - 0.00726 0.00236 - 0.00741 + +# tables/pharmacokinetic/pkpt06.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Summary of Dose-Normalized PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter ARM C + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + RENALCLD (L/hr/mg) + n 132 + Mean (SD) 0.00509 (0.00103) + CV (%) 20.3 + Geometric Mean 0.00499 + CV % Geometric Mean 21.4 + Median 0.00502 + Min - Max 0.00236 - 0.00794 + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt07.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt07.md new file mode 100644 index 0000000000..7309297e3f --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt07.md @@ -0,0 +1,34 @@ +# tables/pharmacokinetic/pkpt07.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Urine PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A + RENALCLD (L/hr/mg) 134 0.00487 0.000965 19.8 0.00477 21.2 0.00497 0.00238 0.00726 + ARM C + RENALCLD (L/hr/mg) 132 0.00511 0.000934 18.3 0.00502 19.7 0.00515 0.00236 0.00741 + +# tables/pharmacokinetic/pkpt07.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Summary of Urine PK Parameter by Treatment Arm, PK Population + Analyte: Plasma Drug Y + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Treatment Arm + PK Parameter n Mean SD CV (%) Geometric Mean CV % Geometric Mean Median Minimum Maximum + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM C + RENALCLD (L/hr/mg) 132 0.00509 0.00103 20.3 0.00499 21.4 0.00502 0.00236 0.00794 + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt08.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt08.md new file mode 100644 index 0000000000..dea27ea735 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt08.md @@ -0,0 +1,32 @@ +# tables/pharmacokinetic/pkpt08.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Summary of Cumulative Amount and Percentage of Urine Recovered from + Plasma Drug X following BID Administration for 0-24 hours, PK Population + Analyte: Plasma Drug X + Visit: CYCLE 1 DAY 1 + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Accumulation Interval (hours) + 0-12 0-24 + Treatment Arm Ae (mg) Fe (%) Ae (mg) Fe (%) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + ARM A + n 134 134 134 134 + Mean 1.55 15.7 1.55 15.7 + SD 0.339 3.35 0.339 3.35 + CV (%) 21.9 21.4 21.9 21.4 + Median 1.55 15.8 1.55 15.8 + Minimum 0.702 8.15 0.702 8.15 + Maximum 2.46 24.5 2.46 24.5 + ARM C + n 132 132 132 132 + Mean 1.54 16.1 1.54 16.1 + SD 0.298 3.11 0.298 3.11 + CV (%) 19.4 19.3 19.4 19.3 + Median 1.55 16.0 1.55 16.0 + Minimum 0.850 8.50 0.850 8.50 + Maximum 2.21 24.4 2.21 24.4 + diff --git a/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt11.md b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt11.md new file mode 100644 index 0000000000..fb002542ee --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-pharmacokinetic-pkpt11.md @@ -0,0 +1,18 @@ +# tables/pharmacokinetic/pkpt11.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Estimated Ratios of Geometric Means and 90% Confidence Intervals for AUC and CMAX Following BID + of A: Drug X in Comparison with C: Combination, PK Population + Analyte: Plasma Drug X + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + PK Parameter + Comparison n Geometric Mean Ratio 90% CI Lower Bound 90% CI Upper Bound + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + AUCinf obs (day*ug/mL) + C: Combination/A: Drug X 266 0.962 0.925 1.00 + Cmax (ug/mL) + C: Combination/A: Drug X 266 0.997 0.958 1.04 + diff --git a/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt01.md b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt01.md new file mode 100644 index 0000000000..39a955f32a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt01.md @@ -0,0 +1,20 @@ +# tables/risk-management-plan/rmpt01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Duration of Exposure: Safety-Evaluable Patients + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Number of Patients Patient Time* + Duration of exposure (N=400) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Number of Patients and Patient Time 217 (54.2%) 20641 + < 1 month 28 (7.0%) 504 + 1 to <3 months 79 (19.8%) 4727 + 3 to <6 months 101 (25.2%) 13690 + >=6 months 9 (2.2%) 1720 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + * Patient Time is the sum of exposure across all patients in days. + diff --git a/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt03.md b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt03.md new file mode 100644 index 0000000000..5e084e1281 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt03.md @@ -0,0 +1,37 @@ +# tables/risk-management-plan/rmpt03.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Extent of Exposure by Age Group and Gender: Safety-Evaluable Patients + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Female Male Total + Age group (years) Number of Patients Patient Time* Number of Patients Patient Time* Number of Patients Patient Time* + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Number of Patients and Patient Time 134 (58.0%) 12591 83 (49.1%) 8050 217 (54.2%) 20641 + <65 134 (58.0%) 12591 82 (48.5%) 7970 216 (54.0%) 20561 + >=65 0 (0.0%) 0 1 (0.6%) 80 1 (0.2%) 80 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + * Patient Time is the sum of exposure across all patients in days. + +# tables/risk-management-plan/rmpt03.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Duration of Exposure: Safety-Evaluable Patients + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Female Male Total + Age group (years) Number of Patients Patient Time* Number of Patients Patient Time* Number of Patients Patient Time* + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total Number of Patients and Patient Time 134 (58.0%) 12591 83 (49.1%) 8050 217 (54.2%) 20641 + 18 - 40 118 (51.1%) 11203 60 (35.5%) 5787 178 (44.5%) 16990 + 41 - 64 16 (6.9%) 1388 22 (13.0%) 2183 38 (9.5%) 3571 + >=65 0 (0.0%) 0 1 (0.6%) 80 1 (0.2%) 80 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + * Patient Time is the sum of exposure across all patients in days. + diff --git a/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt04.md b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt04.md new file mode 100644 index 0000000000..16564b6e40 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt04.md @@ -0,0 +1,20 @@ +# tables/risk-management-plan/rmpt04.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Extent of Exposure by Ethnic Origin: Safety-Evaluable Patients + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients Person time + Ethnicity (N=400) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + HISPANIC OR LATINO 28 (7.0%) 2423 + NOT HISPANIC OR LATINO 165 (41.2%) 15570 + NOT REPORTED 18 (4.5%) 2085 + UNKNOWN 6 (1.5%) 563 + Total 217 (54.2%) 20641 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + * Patient Time is the sum of exposure across all patients in days. + diff --git a/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt05.md b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt05.md new file mode 100644 index 0000000000..c5c4a1edba --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt05.md @@ -0,0 +1,24 @@ +# tables/risk-management-plan/rmpt05.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Extent of Exposure by Race: Safety-Evaluable Patients + + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Patients Person time* + Race (N=400) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Total patients numbers/person time 217 (54.2%) 20641 + ASIAN 113 (28.2%) 10239 + BLACK OR AFRICAN AMERICAN 48 (12.0%) 4481 + WHITE 40 (10.0%) 4237 + AMERICAN INDIAN OR ALASKA NATIVE 14 (3.5%) 1566 + MULTIPLE 1 (0.2%) 58 + NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 1 (0.2%) 60 + OTHER 0 (0.0%) 0 + UNKNOWN 0 (0.0%) 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + + * Person time is the sum of exposure across all patients in unit: days. + diff --git a/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt06.md b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt06.md new file mode 100644 index 0000000000..f0baf1cbc8 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-risk-management-plan-rmpt06.md @@ -0,0 +1,101 @@ +# tables/risk-management-plan/rmpt06.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Number of patients with at least one adverse event 122 (91.0%) 123 (91.8%) 120 (90.9%) + 95% CI for % of patients with at least one AE (Clopper-Pearson) (84.9, 95.3) (85.8, 95.8) (84.7, 95.2) + Total number of AEs 609 622 703 + Number of patients with at least one AE by worst grade + Grade 1 7 (5.2%) 9 (6.7%) 4 (3.0%) + Grade 2 6 (4.5%) 10 (7.5%) 7 (5.3%) + Grade 3 18 (13.4%) 14 (10.4%) 16 (12.1%) + Grade 4 15 (11.2%) 20 (14.9%) 18 (13.6%) + Grade 5 76 (56.7%) 70 (52.2%) 75 (56.8%) + Number of patients with at least one serious AE 104 (85.2%) 101 (82.1%) 99 (82.5%) + Number of patients with at least one AE by outcome + Fatal outcome 76 (62.3%) 70 (56.9%) 75 (62.5%) + Unresolved 66 (54.1%) 64 (52.0%) 70 (58.3%) + Recovered/Resolved 73 (59.8%) 83 (67.5%) 88 (73.3%) + Resolved with sequelae 44 (36.1%) 40 (32.5%) 43 (35.8%) + Recovering/Resolving 81 (66.4%) 84 (68.3%) 88 (73.3%) + Unknown outcome 38 (31.1%) 49 (39.8%) 44 (36.7%) + +# tables/risk-management-plan/rmpt06.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Number of patients with at least one adverse event 122 (91.0%) 123 (91.8%) 120 (90.9%) + 95% CI for % of patients with at least one AE (Clopper-Pearson) (84.9, 95.3) (85.8, 95.8) (84.7, 95.2) + Total number of AEs 609 622 703 + Number of patients with at least one AE by worst grade + Grade 1 7 (5.2%) 9 (6.7%) 4 (3.0%) + Grade 2 6 (4.5%) 10 (7.5%) 7 (5.3%) + Grade 3 18 (13.4%) 14 (10.4%) 16 (12.1%) + Grade 4 15 (11.2%) 20 (14.9%) 18 (13.6%) + Grade 5 76 (56.7%) 70 (52.2%) 75 (56.8%) + Number of patients with at least one serious AE 104 (77.6%) 101 (75.4%) 99 (75.0%) + +# tables/risk-management-plan/rmpt06.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Number of patients with at least one adverse event 122 (91.0%) 123 (91.8%) 120 (90.9%) + 95% CI for % of patients with at least one AE (84.9, 95.3) (85.8, 95.8) (84.7, 95.2) + Difference in % of patients with at least one AE 0.7 -0.1 + 95% CI of difference (Wald, with correction) (-6.7, 8.2) (-7.8, 7.5) + Total number of AEs 609 622 703 + Number of patients with at least one AE by worst grade + Grade 1 7 (5.2%) 9 (6.7%) 4 (3.0%) + Grade 2 6 (4.5%) 10 (7.5%) 7 (5.3%) + Grade 3 18 (13.4%) 14 (10.4%) 16 (12.1%) + Grade 4 15 (11.2%) 20 (14.9%) 18 (13.6%) + Grade 5 76 (56.7%) 70 (52.2%) 75 (56.8%) + Number of patients with at least one serious AE 104 (77.6%) 101 (75.4%) 99 (75.0%) + Number of patients with at least one AE by outcome + Fatal outcome 76 (62.3%) 70 (56.9%) 75 (62.5%) + Unresolved 66 (54.1%) 64 (52.0%) 70 (58.3%) + Recovered/Resolved 73 (59.8%) 83 (67.5%) 88 (73.3%) + Resolved with sequelae 44 (36.1%) 40 (32.5%) 43 (35.8%) + Recovering/Resolving 81 (66.4%) 84 (68.3%) 88 (73.3%) + Unknown outcome 38 (31.1%) 49 (39.8%) 44 (36.7%) + +# tables/risk-management-plan/rmpt06.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + (N=134) (N=134) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Number of patients with at least one adverse event 122 (91.0%) 123 (91.8%) 120 (90.9%) + 90% CI for % of patients with at least one AE (Clopper-Pearson) (85.9, 94.8) (86.8, 95.3) (85.7, 94.7) + Difference in % of patients with at least one AE 0.7 -0.1 + 90% CI of difference (Newcombe) (-5.1, 6.6) (-6.1, 5.8) + Total number of AEs 609 622 703 + Number of patients with at least one AE by worst grade + Grade 1 7 (5.2%) 9 (6.7%) 4 (3.0%) + Grade 2 6 (4.5%) 10 (7.5%) 7 (5.3%) + Grade 3 18 (13.4%) 14 (10.4%) 16 (12.1%) + Grade 4 15 (11.2%) 20 (14.9%) 18 (13.6%) + Grade 5 76 (56.7%) 70 (52.2%) 75 (56.8%) + Number of patients with at least one serious AE 104 (77.6%) 101 (75.4%) 99 (75.0%) + Number of patients with at least one AE by outcome + Fatal outcome 76 (62.3%) 70 (56.9%) 75 (62.5%) + Unresolved 66 (54.1%) 64 (52.0%) 70 (58.3%) + Recovered/Resolved 73 (59.8%) 83 (67.5%) 88 (73.3%) + Resolved with sequelae 44 (36.1%) 40 (32.5%) 43 (35.8%) + Recovering/Resolving 81 (66.4%) 84 (68.3%) 88 (73.3%) + Unknown outcome 38 (31.1%) 49 (39.8%) 44 (36.7%) + diff --git a/package/tests/testthat/_snaps/development/tables-safety-enrollment01.md b/package/tests/testthat/_snaps/development/tables-safety-enrollment01.md new file mode 100644 index 0000000000..dc2e12a83a --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-safety-enrollment01.md @@ -0,0 +1,466 @@ +# tables/safety/enrollment01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Geographic Region 1 + Country A: Drug X B: Placebo C: Combination All Patients + Investigator Identifier (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Africa 8 (6.0%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + NGA 8 (6.0%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + INV ID NGA-1 3 (37.5%) 3 (42.9%) 4 (36.4%) 10 (38.5%) + INV ID NGA-11 1 (12.5%) 2 (28.6%) 3 (27.3%) 6 (23.1%) + INV ID NGA-12 0 1 (14.3%) 1 (9.1%) 2 (7.7%) + INV ID NGA-17 2 (25%) 0 0 2 (7.7%) + INV ID NGA-2 1 (12.5%) 1 (14.3%) 0 2 (7.7%) + INV ID NGA-4 1 (12.5%) 0 1 (9.1%) 2 (7.7%) + INV ID NGA-5 0 0 1 (9.1%) 1 (3.8%) + INV ID NGA-6 0 0 1 (9.1%) 1 (3.8%) + Asia 91 (67.9%) 94 (70.1%) 83 (62.9%) 268 (67.0%) + CHN 74 (55.2%) 81 (60.4%) 64 (48.5%) 219 (54.8%) + INV ID CHN-1 21 (28.4%) 20 (24.7%) 16 (25%) 57 (26%) + INV ID CHN-10 0 1 (1.2%) 0 1 (0.5%) + INV ID CHN-11 12 (16.2%) 20 (24.7%) 16 (25%) 48 (21.9%) + INV ID CHN-12 4 (5.4%) 3 (3.7%) 1 (1.6%) 8 (3.7%) + INV ID CHN-13 2 (2.7%) 6 (7.4%) 0 8 (3.7%) + INV ID CHN-14 4 (5.4%) 2 (2.5%) 3 (4.7%) 9 (4.1%) + INV ID CHN-15 2 (2.7%) 0 4 (6.2%) 6 (2.7%) + INV ID CHN-16 0 3 (3.7%) 3 (4.7%) 6 (2.7%) + INV ID CHN-17 4 (5.4%) 4 (4.9%) 3 (4.7%) 11 (5%) + INV ID CHN-18 1 (1.4%) 0 2 (3.1%) 3 (1.4%) + INV ID CHN-2 9 (12.2%) 4 (4.9%) 3 (4.7%) 16 (7.3%) + INV ID CHN-3 5 (6.8%) 1 (1.2%) 5 (7.8%) 11 (5%) + INV ID CHN-4 3 (4.1%) 3 (3.7%) 3 (4.7%) 9 (4.1%) + INV ID CHN-5 4 (5.4%) 3 (3.7%) 4 (6.2%) 11 (5%) + INV ID CHN-6 1 (1.4%) 3 (3.7%) 0 4 (1.8%) + INV ID CHN-7 0 5 (6.2%) 1 (1.6%) 6 (2.7%) + INV ID CHN-8 1 (1.4%) 1 (1.2%) 0 2 (0.9%) + INV ID CHN-9 1 (1.4%) 2 (2.5%) 0 3 (1.4%) + PAK 12 (9.0%) 9 (6.7%) 10 (7.6%) 31 (7.8%) + INV ID PAK-1 2 (16.7%) 4 (44.4%) 4 (40%) 10 (32.3%) + INV ID PAK-11 4 (33.3%) 3 (33.3%) 2 (20%) 9 (29%) + INV ID PAK-12 2 (16.7%) 0 0 2 (6.5%) + INV ID PAK-13 1 (8.3%) 1 (11.1%) 0 2 (6.5%) + INV ID PAK-14 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-15 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-2 1 (8.3%) 0 2 (20%) 3 (9.7%) + INV ID PAK-4 0 1 (11.1%) 1 (10%) 2 (6.5%) + INV ID PAK-5 0 0 1 (10%) 1 (3.2%) + JPN 5 (3.7%) 4 (3.0%) 9 (6.8%) 18 (4.5%) + INV ID JPN-1 2 (40%) 2 (50%) 1 (11.1%) 5 (27.8%) + INV ID JPN-11 0 0 3 (33.3%) 3 (16.7%) + INV ID JPN-12 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-14 0 1 (25%) 0 1 (5.6%) + INV ID JPN-17 0 0 2 (22.2%) 2 (11.1%) + INV ID JPN-18 1 (20%) 0 0 1 (5.6%) + INV ID JPN-2 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-3 0 1 (25%) 0 1 (5.6%) + INV ID JPN-5 1 (20%) 0 1 (11.1%) 2 (11.1%) + INV ID JPN-6 1 (20%) 0 0 1 (5.6%) + Eurasia 5 (3.7%) 8 (6.0%) 6 (4.5%) 19 (4.8%) + RUS 5 (3.7%) 8 (6.0%) 6 (4.5%) 19 (4.8%) + INV ID RUS-1 1 (20%) 0 0 1 (5.3%) + INV ID RUS-11 0 2 (25%) 2 (33.3%) 4 (21.1%) + INV ID RUS-12 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-13 1 (20%) 0 0 1 (5.3%) + INV ID RUS-14 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-16 1 (20%) 1 (12.5%) 0 2 (10.5%) + INV ID RUS-18 1 (20%) 0 0 1 (5.3%) + INV ID RUS-2 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-3 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-4 0 2 (25%) 1 (16.7%) 3 (15.8%) + INV ID RUS-5 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-6 1 (20%) 0 0 1 (5.3%) + INV ID RUS-7 0 0 1 (16.7%) 1 (5.3%) + Europe 4 (3.0%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + GBR 4 (3.0%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + INV ID GBR-1 2 (50%) 0 1 (50%) 3 (33.3%) + INV ID GBR-11 0 1 (33.3%) 1 (50%) 2 (22.2%) + INV ID GBR-13 1 (25%) 0 0 1 (11.1%) + INV ID GBR-15 1 (25%) 0 0 1 (11.1%) + INV ID GBR-17 0 1 (33.3%) 0 1 (11.1%) + INV ID GBR-6 0 1 (33.3%) 0 1 (11.1%) + North America 13 (9.7%) 15 (11.2%) 20 (15.2%) 48 (12.0%) + USA 10 (7.5%) 13 (9.7%) 17 (12.9%) 40 (10.0%) + INV ID USA-1 1 (10%) 4 (30.8%) 5 (29.4%) 10 (25%) + INV ID USA-11 4 (40%) 2 (15.4%) 3 (17.6%) 9 (22.5%) + INV ID USA-12 1 (10%) 2 (15.4%) 3 (17.6%) 6 (15%) + INV ID USA-14 1 (10%) 0 0 1 (2.5%) + INV ID USA-15 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-17 1 (10%) 1 (7.7%) 0 2 (5%) + INV ID USA-19 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-2 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-3 1 (10%) 0 1 (5.9%) 2 (5%) + INV ID USA-4 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-5 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-6 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-8 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-9 1 (10%) 0 0 1 (2.5%) + CAN 3 (2.2%) 2 (1.5%) 3 (2.3%) 8 (2.0%) + INV ID CAN-1 1 (33.3%) 1 (50%) 0 2 (25%) + INV ID CAN-11 1 (33.3%) 0 1 (33.3%) 2 (25%) + INV ID CAN-14 1 (33.3%) 0 0 1 (12.5%) + INV ID CAN-4 0 1 (50%) 1 (33.3%) 2 (25%) + INV ID CAN-5 0 0 1 (33.3%) 1 (12.5%) + South America 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + BRA 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + INV ID BRA-1 4 (30.8%) 2 (28.6%) 2 (20%) 8 (26.7%) + INV ID BRA-11 4 (30.8%) 0 4 (40%) 8 (26.7%) + INV ID BRA-12 0 1 (14.3%) 0 1 (3.3%) + INV ID BRA-13 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-14 1 (7.7%) 0 1 (10%) 2 (6.7%) + INV ID BRA-15 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-2 1 (7.7%) 1 (14.3%) 0 2 (6.7%) + INV ID BRA-3 0 2 (28.6%) 0 2 (6.7%) + INV ID BRA-4 0 1 (14.3%) 1 (10%) 2 (6.7%) + INV ID BRA-5 0 0 1 (10%) 1 (3.3%) + INV ID BRA-6 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-7 0 0 1 (10%) 1 (3.3%) + +# tables/safety/enrollment01.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Country A: Drug X B: Placebo C: Combination All Patients + Investigator Identifier (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CHN 74 (55.2%) 81 (60.4%) 64 (48.5%) 219 (54.8%) + INV ID CHN-1 21 (28.4%) 20 (24.7%) 16 (25%) 57 (26%) + INV ID CHN-10 0 1 (1.2%) 0 1 (0.5%) + INV ID CHN-11 12 (16.2%) 20 (24.7%) 16 (25%) 48 (21.9%) + INV ID CHN-12 4 (5.4%) 3 (3.7%) 1 (1.6%) 8 (3.7%) + INV ID CHN-13 2 (2.7%) 6 (7.4%) 0 8 (3.7%) + INV ID CHN-14 4 (5.4%) 2 (2.5%) 3 (4.7%) 9 (4.1%) + INV ID CHN-15 2 (2.7%) 0 4 (6.2%) 6 (2.7%) + INV ID CHN-16 0 3 (3.7%) 3 (4.7%) 6 (2.7%) + INV ID CHN-17 4 (5.4%) 4 (4.9%) 3 (4.7%) 11 (5%) + INV ID CHN-18 1 (1.4%) 0 2 (3.1%) 3 (1.4%) + INV ID CHN-2 9 (12.2%) 4 (4.9%) 3 (4.7%) 16 (7.3%) + INV ID CHN-3 5 (6.8%) 1 (1.2%) 5 (7.8%) 11 (5%) + INV ID CHN-4 3 (4.1%) 3 (3.7%) 3 (4.7%) 9 (4.1%) + INV ID CHN-5 4 (5.4%) 3 (3.7%) 4 (6.2%) 11 (5%) + INV ID CHN-6 1 (1.4%) 3 (3.7%) 0 4 (1.8%) + INV ID CHN-7 0 5 (6.2%) 1 (1.6%) 6 (2.7%) + INV ID CHN-8 1 (1.4%) 1 (1.2%) 0 2 (0.9%) + INV ID CHN-9 1 (1.4%) 2 (2.5%) 0 3 (1.4%) + USA 10 (7.5%) 13 (9.7%) 17 (12.9%) 40 (10.0%) + INV ID USA-1 1 (10%) 4 (30.8%) 5 (29.4%) 10 (25%) + INV ID USA-11 4 (40%) 2 (15.4%) 3 (17.6%) 9 (22.5%) + INV ID USA-12 1 (10%) 2 (15.4%) 3 (17.6%) 6 (15%) + INV ID USA-14 1 (10%) 0 0 1 (2.5%) + INV ID USA-15 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-17 1 (10%) 1 (7.7%) 0 2 (5%) + INV ID USA-19 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-2 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-3 1 (10%) 0 1 (5.9%) 2 (5%) + INV ID USA-4 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-5 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-6 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-8 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-9 1 (10%) 0 0 1 (2.5%) + BRA 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + INV ID BRA-1 4 (30.8%) 2 (28.6%) 2 (20%) 8 (26.7%) + INV ID BRA-11 4 (30.8%) 0 4 (40%) 8 (26.7%) + INV ID BRA-12 0 1 (14.3%) 0 1 (3.3%) + INV ID BRA-13 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-14 1 (7.7%) 0 1 (10%) 2 (6.7%) + INV ID BRA-15 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-2 1 (7.7%) 1 (14.3%) 0 2 (6.7%) + INV ID BRA-3 0 2 (28.6%) 0 2 (6.7%) + INV ID BRA-4 0 1 (14.3%) 1 (10%) 2 (6.7%) + INV ID BRA-5 0 0 1 (10%) 1 (3.3%) + INV ID BRA-6 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-7 0 0 1 (10%) 1 (3.3%) + PAK 12 (9.0%) 9 (6.7%) 10 (7.6%) 31 (7.8%) + INV ID PAK-1 2 (16.7%) 4 (44.4%) 4 (40%) 10 (32.3%) + INV ID PAK-11 4 (33.3%) 3 (33.3%) 2 (20%) 9 (29%) + INV ID PAK-12 2 (16.7%) 0 0 2 (6.5%) + INV ID PAK-13 1 (8.3%) 1 (11.1%) 0 2 (6.5%) + INV ID PAK-14 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-15 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-2 1 (8.3%) 0 2 (20%) 3 (9.7%) + INV ID PAK-4 0 1 (11.1%) 1 (10%) 2 (6.5%) + INV ID PAK-5 0 0 1 (10%) 1 (3.2%) + NGA 8 (6.0%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + INV ID NGA-1 3 (37.5%) 3 (42.9%) 4 (36.4%) 10 (38.5%) + INV ID NGA-11 1 (12.5%) 2 (28.6%) 3 (27.3%) 6 (23.1%) + INV ID NGA-12 0 1 (14.3%) 1 (9.1%) 2 (7.7%) + INV ID NGA-17 2 (25%) 0 0 2 (7.7%) + INV ID NGA-2 1 (12.5%) 1 (14.3%) 0 2 (7.7%) + INV ID NGA-4 1 (12.5%) 0 1 (9.1%) 2 (7.7%) + INV ID NGA-5 0 0 1 (9.1%) 1 (3.8%) + INV ID NGA-6 0 0 1 (9.1%) 1 (3.8%) + RUS 5 (3.7%) 8 (6.0%) 6 (4.5%) 19 (4.8%) + INV ID RUS-1 1 (20%) 0 0 1 (5.3%) + INV ID RUS-11 0 2 (25%) 2 (33.3%) 4 (21.1%) + INV ID RUS-12 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-13 1 (20%) 0 0 1 (5.3%) + INV ID RUS-14 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-16 1 (20%) 1 (12.5%) 0 2 (10.5%) + INV ID RUS-18 1 (20%) 0 0 1 (5.3%) + INV ID RUS-2 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-3 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-4 0 2 (25%) 1 (16.7%) 3 (15.8%) + INV ID RUS-5 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-6 1 (20%) 0 0 1 (5.3%) + INV ID RUS-7 0 0 1 (16.7%) 1 (5.3%) + JPN 5 (3.7%) 4 (3.0%) 9 (6.8%) 18 (4.5%) + INV ID JPN-1 2 (40%) 2 (50%) 1 (11.1%) 5 (27.8%) + INV ID JPN-11 0 0 3 (33.3%) 3 (16.7%) + INV ID JPN-12 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-14 0 1 (25%) 0 1 (5.6%) + INV ID JPN-17 0 0 2 (22.2%) 2 (11.1%) + INV ID JPN-18 1 (20%) 0 0 1 (5.6%) + INV ID JPN-2 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-3 0 1 (25%) 0 1 (5.6%) + INV ID JPN-5 1 (20%) 0 1 (11.1%) 2 (11.1%) + INV ID JPN-6 1 (20%) 0 0 1 (5.6%) + GBR 4 (3.0%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + INV ID GBR-1 2 (50%) 0 1 (50%) 3 (33.3%) + INV ID GBR-11 0 1 (33.3%) 1 (50%) 2 (22.2%) + INV ID GBR-13 1 (25%) 0 0 1 (11.1%) + INV ID GBR-15 1 (25%) 0 0 1 (11.1%) + INV ID GBR-17 0 1 (33.3%) 0 1 (11.1%) + INV ID GBR-6 0 1 (33.3%) 0 1 (11.1%) + CAN 3 (2.2%) 2 (1.5%) 3 (2.3%) 8 (2.0%) + INV ID CAN-1 1 (33.3%) 1 (50%) 0 2 (25%) + INV ID CAN-11 1 (33.3%) 0 1 (33.3%) 2 (25%) + INV ID CAN-14 1 (33.3%) 0 0 1 (12.5%) + INV ID CAN-4 0 1 (50%) 1 (33.3%) 2 (25%) + INV ID CAN-5 0 0 1 (33.3%) 1 (12.5%) + +# tables/safety/enrollment01.qmd result_v3 development + + Code + print(data_snap[[i]]) + Output + Geographic Region 1 + Country A: Drug X B: Placebo C: Combination All Patients + Investigator Number/Name (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Africa 8 (6.0%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + NGA 8 (6.0%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + INV ID NGA-1 / Dr. NGA-1 Doe 3 (37.5%) 3 (42.9%) 4 (36.4%) 10 (38.5%) + INV ID NGA-11 / Dr. NGA-11 Doe 1 (12.5%) 2 (28.6%) 3 (27.3%) 6 (23.1%) + INV ID NGA-12 / Dr. NGA-12 Doe 0 1 (14.3%) 1 (9.1%) 2 (7.7%) + INV ID NGA-17 / Dr. NGA-17 Doe 2 (25%) 0 0 2 (7.7%) + INV ID NGA-2 / Dr. NGA-2 Doe 1 (12.5%) 1 (14.3%) 0 2 (7.7%) + INV ID NGA-4 / Dr. NGA-4 Doe 1 (12.5%) 0 1 (9.1%) 2 (7.7%) + INV ID NGA-5 / Dr. NGA-5 Doe 0 0 1 (9.1%) 1 (3.8%) + INV ID NGA-6 / Dr. NGA-6 Doe 0 0 1 (9.1%) 1 (3.8%) + Asia 91 (67.9%) 94 (70.1%) 83 (62.9%) 268 (67.0%) + CHN 74 (55.2%) 81 (60.4%) 64 (48.5%) 219 (54.8%) + INV ID CHN-1 / Dr. CHN-1 Doe 21 (28.4%) 20 (24.7%) 16 (25%) 57 (26%) + INV ID CHN-10 / Dr. CHN-10 Doe 0 1 (1.2%) 0 1 (0.5%) + INV ID CHN-11 / Dr. CHN-11 Doe 12 (16.2%) 20 (24.7%) 16 (25%) 48 (21.9%) + INV ID CHN-12 / Dr. CHN-12 Doe 4 (5.4%) 3 (3.7%) 1 (1.6%) 8 (3.7%) + INV ID CHN-13 / Dr. CHN-13 Doe 2 (2.7%) 6 (7.4%) 0 8 (3.7%) + INV ID CHN-14 / Dr. CHN-14 Doe 4 (5.4%) 2 (2.5%) 3 (4.7%) 9 (4.1%) + INV ID CHN-15 / Dr. CHN-15 Doe 2 (2.7%) 0 4 (6.2%) 6 (2.7%) + INV ID CHN-16 / Dr. CHN-16 Doe 0 3 (3.7%) 3 (4.7%) 6 (2.7%) + INV ID CHN-17 / Dr. CHN-17 Doe 4 (5.4%) 4 (4.9%) 3 (4.7%) 11 (5%) + INV ID CHN-18 / Dr. CHN-18 Doe 1 (1.4%) 0 2 (3.1%) 3 (1.4%) + INV ID CHN-2 / Dr. CHN-2 Doe 9 (12.2%) 4 (4.9%) 3 (4.7%) 16 (7.3%) + INV ID CHN-3 / Dr. CHN-3 Doe 5 (6.8%) 1 (1.2%) 5 (7.8%) 11 (5%) + INV ID CHN-4 / Dr. CHN-4 Doe 3 (4.1%) 3 (3.7%) 3 (4.7%) 9 (4.1%) + INV ID CHN-5 / Dr. CHN-5 Doe 4 (5.4%) 3 (3.7%) 4 (6.2%) 11 (5%) + INV ID CHN-6 / Dr. CHN-6 Doe 1 (1.4%) 3 (3.7%) 0 4 (1.8%) + INV ID CHN-7 / Dr. CHN-7 Doe 0 5 (6.2%) 1 (1.6%) 6 (2.7%) + INV ID CHN-8 / Dr. CHN-8 Doe 1 (1.4%) 1 (1.2%) 0 2 (0.9%) + INV ID CHN-9 / Dr. CHN-9 Doe 1 (1.4%) 2 (2.5%) 0 3 (1.4%) + PAK 12 (9.0%) 9 (6.7%) 10 (7.6%) 31 (7.8%) + INV ID PAK-1 / Dr. PAK-1 Doe 2 (16.7%) 4 (44.4%) 4 (40%) 10 (32.3%) + INV ID PAK-11 / Dr. PAK-11 Doe 4 (33.3%) 3 (33.3%) 2 (20%) 9 (29%) + INV ID PAK-12 / Dr. PAK-12 Doe 2 (16.7%) 0 0 2 (6.5%) + INV ID PAK-13 / Dr. PAK-13 Doe 1 (8.3%) 1 (11.1%) 0 2 (6.5%) + INV ID PAK-14 / Dr. PAK-14 Doe 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-15 / Dr. PAK-15 Doe 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-2 / Dr. PAK-2 Doe 1 (8.3%) 0 2 (20%) 3 (9.7%) + INV ID PAK-4 / Dr. PAK-4 Doe 0 1 (11.1%) 1 (10%) 2 (6.5%) + INV ID PAK-5 / Dr. PAK-5 Doe 0 0 1 (10%) 1 (3.2%) + JPN 5 (3.7%) 4 (3.0%) 9 (6.8%) 18 (4.5%) + INV ID JPN-1 / Dr. JPN-1 Doe 2 (40%) 2 (50%) 1 (11.1%) 5 (27.8%) + INV ID JPN-11 / Dr. JPN-11 Doe 0 0 3 (33.3%) 3 (16.7%) + INV ID JPN-12 / Dr. JPN-12 Doe 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-14 / Dr. JPN-14 Doe 0 1 (25%) 0 1 (5.6%) + INV ID JPN-17 / Dr. JPN-17 Doe 0 0 2 (22.2%) 2 (11.1%) + INV ID JPN-18 / Dr. JPN-18 Doe 1 (20%) 0 0 1 (5.6%) + INV ID JPN-2 / Dr. JPN-2 Doe 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-3 / Dr. JPN-3 Doe 0 1 (25%) 0 1 (5.6%) + INV ID JPN-5 / Dr. JPN-5 Doe 1 (20%) 0 1 (11.1%) 2 (11.1%) + INV ID JPN-6 / Dr. JPN-6 Doe 1 (20%) 0 0 1 (5.6%) + Eurasia 5 (3.7%) 8 (6.0%) 6 (4.5%) 19 (4.8%) + RUS 5 (3.7%) 8 (6.0%) 6 (4.5%) 19 (4.8%) + INV ID RUS-1 / Dr. RUS-1 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-11 / Dr. RUS-11 Doe 0 2 (25%) 2 (33.3%) 4 (21.1%) + INV ID RUS-12 / Dr. RUS-12 Doe 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-13 / Dr. RUS-13 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-14 / Dr. RUS-14 Doe 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-16 / Dr. RUS-16 Doe 1 (20%) 1 (12.5%) 0 2 (10.5%) + INV ID RUS-18 / Dr. RUS-18 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-2 / Dr. RUS-2 Doe 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-3 / Dr. RUS-3 Doe 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-4 / Dr. RUS-4 Doe 0 2 (25%) 1 (16.7%) 3 (15.8%) + INV ID RUS-5 / Dr. RUS-5 Doe 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-6 / Dr. RUS-6 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-7 / Dr. RUS-7 Doe 0 0 1 (16.7%) 1 (5.3%) + Europe 4 (3.0%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + GBR 4 (3.0%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + INV ID GBR-1 / Dr. GBR-1 Doe 2 (50%) 0 1 (50%) 3 (33.3%) + INV ID GBR-11 / Dr. GBR-11 Doe 0 1 (33.3%) 1 (50%) 2 (22.2%) + INV ID GBR-13 / Dr. GBR-13 Doe 1 (25%) 0 0 1 (11.1%) + INV ID GBR-15 / Dr. GBR-15 Doe 1 (25%) 0 0 1 (11.1%) + INV ID GBR-17 / Dr. GBR-17 Doe 0 1 (33.3%) 0 1 (11.1%) + INV ID GBR-6 / Dr. GBR-6 Doe 0 1 (33.3%) 0 1 (11.1%) + North America 13 (9.7%) 15 (11.2%) 20 (15.2%) 48 (12.0%) + USA 10 (7.5%) 13 (9.7%) 17 (12.9%) 40 (10.0%) + INV ID USA-1 / Dr. USA-1 Doe 1 (10%) 4 (30.8%) 5 (29.4%) 10 (25%) + INV ID USA-11 / Dr. USA-11 Doe 4 (40%) 2 (15.4%) 3 (17.6%) 9 (22.5%) + INV ID USA-12 / Dr. USA-12 Doe 1 (10%) 2 (15.4%) 3 (17.6%) 6 (15%) + INV ID USA-14 / Dr. USA-14 Doe 1 (10%) 0 0 1 (2.5%) + INV ID USA-15 / Dr. USA-15 Doe 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-17 / Dr. USA-17 Doe 1 (10%) 1 (7.7%) 0 2 (5%) + INV ID USA-19 / Dr. USA-19 Doe 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-2 / Dr. USA-2 Doe 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-3 / Dr. USA-3 Doe 1 (10%) 0 1 (5.9%) 2 (5%) + INV ID USA-4 / Dr. USA-4 Doe 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-5 / Dr. USA-5 Doe 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-6 / Dr. USA-6 Doe 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-8 / Dr. USA-8 Doe 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-9 / Dr. USA-9 Doe 1 (10%) 0 0 1 (2.5%) + CAN 3 (2.2%) 2 (1.5%) 3 (2.3%) 8 (2.0%) + INV ID CAN-1 / Dr. CAN-1 Doe 1 (33.3%) 1 (50%) 0 2 (25%) + INV ID CAN-11 / Dr. CAN-11 Doe 1 (33.3%) 0 1 (33.3%) 2 (25%) + INV ID CAN-14 / Dr. CAN-14 Doe 1 (33.3%) 0 0 1 (12.5%) + INV ID CAN-4 / Dr. CAN-4 Doe 0 1 (50%) 1 (33.3%) 2 (25%) + INV ID CAN-5 / Dr. CAN-5 Doe 0 0 1 (33.3%) 1 (12.5%) + South America 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + BRA 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + INV ID BRA-1 / Dr. BRA-1 Doe 4 (30.8%) 2 (28.6%) 2 (20%) 8 (26.7%) + INV ID BRA-11 / Dr. BRA-11 Doe 4 (30.8%) 0 4 (40%) 8 (26.7%) + INV ID BRA-12 / Dr. BRA-12 Doe 0 1 (14.3%) 0 1 (3.3%) + INV ID BRA-13 / Dr. BRA-13 Doe 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-14 / Dr. BRA-14 Doe 1 (7.7%) 0 1 (10%) 2 (6.7%) + INV ID BRA-15 / Dr. BRA-15 Doe 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-2 / Dr. BRA-2 Doe 1 (7.7%) 1 (14.3%) 0 2 (6.7%) + INV ID BRA-3 / Dr. BRA-3 Doe 0 2 (28.6%) 0 2 (6.7%) + INV ID BRA-4 / Dr. BRA-4 Doe 0 1 (14.3%) 1 (10%) 2 (6.7%) + INV ID BRA-5 / Dr. BRA-5 Doe 0 0 1 (10%) 1 (3.3%) + INV ID BRA-6 / Dr. BRA-6 Doe 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-7 / Dr. BRA-7 Doe 0 0 1 (10%) 1 (3.3%) + +# tables/safety/enrollment01.qmd result_v4 development + + Code + print(data_snap[[i]]) + Output + Country A: Drug X B: Placebo C: Combination All Patients + Investigator Number/Name (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + CHN 74 (55.2%) 81 (60.4%) 64 (48.5%) 219 (54.8%) + INV ID CHN-1 / Dr. CHN-1 Doe 21 (28.4%) 20 (24.7%) 16 (25%) 57 (26%) + INV ID CHN-10 / Dr. CHN-10 Doe 0 1 (1.2%) 0 1 (0.5%) + INV ID CHN-11 / Dr. CHN-11 Doe 12 (16.2%) 20 (24.7%) 16 (25%) 48 (21.9%) + INV ID CHN-12 / Dr. CHN-12 Doe 4 (5.4%) 3 (3.7%) 1 (1.6%) 8 (3.7%) + INV ID CHN-13 / Dr. CHN-13 Doe 2 (2.7%) 6 (7.4%) 0 8 (3.7%) + INV ID CHN-14 / Dr. CHN-14 Doe 4 (5.4%) 2 (2.5%) 3 (4.7%) 9 (4.1%) + INV ID CHN-15 / Dr. CHN-15 Doe 2 (2.7%) 0 4 (6.2%) 6 (2.7%) + INV ID CHN-16 / Dr. CHN-16 Doe 0 3 (3.7%) 3 (4.7%) 6 (2.7%) + INV ID CHN-17 / Dr. CHN-17 Doe 4 (5.4%) 4 (4.9%) 3 (4.7%) 11 (5%) + INV ID CHN-18 / Dr. CHN-18 Doe 1 (1.4%) 0 2 (3.1%) 3 (1.4%) + INV ID CHN-2 / Dr. CHN-2 Doe 9 (12.2%) 4 (4.9%) 3 (4.7%) 16 (7.3%) + INV ID CHN-3 / Dr. CHN-3 Doe 5 (6.8%) 1 (1.2%) 5 (7.8%) 11 (5%) + INV ID CHN-4 / Dr. CHN-4 Doe 3 (4.1%) 3 (3.7%) 3 (4.7%) 9 (4.1%) + INV ID CHN-5 / Dr. CHN-5 Doe 4 (5.4%) 3 (3.7%) 4 (6.2%) 11 (5%) + INV ID CHN-6 / Dr. CHN-6 Doe 1 (1.4%) 3 (3.7%) 0 4 (1.8%) + INV ID CHN-7 / Dr. CHN-7 Doe 0 5 (6.2%) 1 (1.6%) 6 (2.7%) + INV ID CHN-8 / Dr. CHN-8 Doe 1 (1.4%) 1 (1.2%) 0 2 (0.9%) + INV ID CHN-9 / Dr. CHN-9 Doe 1 (1.4%) 2 (2.5%) 0 3 (1.4%) + USA 10 (7.5%) 13 (9.7%) 17 (12.9%) 40 (10.0%) + INV ID USA-1 / Dr. USA-1 Doe 1 (10%) 4 (30.8%) 5 (29.4%) 10 (25%) + INV ID USA-11 / Dr. USA-11 Doe 4 (40%) 2 (15.4%) 3 (17.6%) 9 (22.5%) + INV ID USA-12 / Dr. USA-12 Doe 1 (10%) 2 (15.4%) 3 (17.6%) 6 (15%) + INV ID USA-14 / Dr. USA-14 Doe 1 (10%) 0 0 1 (2.5%) + INV ID USA-15 / Dr. USA-15 Doe 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-17 / Dr. USA-17 Doe 1 (10%) 1 (7.7%) 0 2 (5%) + INV ID USA-19 / Dr. USA-19 Doe 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-2 / Dr. USA-2 Doe 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-3 / Dr. USA-3 Doe 1 (10%) 0 1 (5.9%) 2 (5%) + INV ID USA-4 / Dr. USA-4 Doe 0 1 (7.7%) 1 (5.9%) 2 (5%) + INV ID USA-5 / Dr. USA-5 Doe 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-6 / Dr. USA-6 Doe 0 1 (7.7%) 0 1 (2.5%) + INV ID USA-8 / Dr. USA-8 Doe 0 0 1 (5.9%) 1 (2.5%) + INV ID USA-9 / Dr. USA-9 Doe 1 (10%) 0 0 1 (2.5%) + BRA 13 (9.7%) 7 (5.2%) 10 (7.6%) 30 (7.5%) + INV ID BRA-1 / Dr. BRA-1 Doe 4 (30.8%) 2 (28.6%) 2 (20%) 8 (26.7%) + INV ID BRA-11 / Dr. BRA-11 Doe 4 (30.8%) 0 4 (40%) 8 (26.7%) + INV ID BRA-12 / Dr. BRA-12 Doe 0 1 (14.3%) 0 1 (3.3%) + INV ID BRA-13 / Dr. BRA-13 Doe 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-14 / Dr. BRA-14 Doe 1 (7.7%) 0 1 (10%) 2 (6.7%) + INV ID BRA-15 / Dr. BRA-15 Doe 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-2 / Dr. BRA-2 Doe 1 (7.7%) 1 (14.3%) 0 2 (6.7%) + INV ID BRA-3 / Dr. BRA-3 Doe 0 2 (28.6%) 0 2 (6.7%) + INV ID BRA-4 / Dr. BRA-4 Doe 0 1 (14.3%) 1 (10%) 2 (6.7%) + INV ID BRA-5 / Dr. BRA-5 Doe 0 0 1 (10%) 1 (3.3%) + INV ID BRA-6 / Dr. BRA-6 Doe 1 (7.7%) 0 0 1 (3.3%) + INV ID BRA-7 / Dr. BRA-7 Doe 0 0 1 (10%) 1 (3.3%) + PAK 12 (9.0%) 9 (6.7%) 10 (7.6%) 31 (7.8%) + INV ID PAK-1 / Dr. PAK-1 Doe 2 (16.7%) 4 (44.4%) 4 (40%) 10 (32.3%) + INV ID PAK-11 / Dr. PAK-11 Doe 4 (33.3%) 3 (33.3%) 2 (20%) 9 (29%) + INV ID PAK-12 / Dr. PAK-12 Doe 2 (16.7%) 0 0 2 (6.5%) + INV ID PAK-13 / Dr. PAK-13 Doe 1 (8.3%) 1 (11.1%) 0 2 (6.5%) + INV ID PAK-14 / Dr. PAK-14 Doe 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-15 / Dr. PAK-15 Doe 1 (8.3%) 0 0 1 (3.2%) + INV ID PAK-2 / Dr. PAK-2 Doe 1 (8.3%) 0 2 (20%) 3 (9.7%) + INV ID PAK-4 / Dr. PAK-4 Doe 0 1 (11.1%) 1 (10%) 2 (6.5%) + INV ID PAK-5 / Dr. PAK-5 Doe 0 0 1 (10%) 1 (3.2%) + NGA 8 (6.0%) 7 (5.2%) 11 (8.3%) 26 (6.5%) + INV ID NGA-1 / Dr. NGA-1 Doe 3 (37.5%) 3 (42.9%) 4 (36.4%) 10 (38.5%) + INV ID NGA-11 / Dr. NGA-11 Doe 1 (12.5%) 2 (28.6%) 3 (27.3%) 6 (23.1%) + INV ID NGA-12 / Dr. NGA-12 Doe 0 1 (14.3%) 1 (9.1%) 2 (7.7%) + INV ID NGA-17 / Dr. NGA-17 Doe 2 (25%) 0 0 2 (7.7%) + INV ID NGA-2 / Dr. NGA-2 Doe 1 (12.5%) 1 (14.3%) 0 2 (7.7%) + INV ID NGA-4 / Dr. NGA-4 Doe 1 (12.5%) 0 1 (9.1%) 2 (7.7%) + INV ID NGA-5 / Dr. NGA-5 Doe 0 0 1 (9.1%) 1 (3.8%) + INV ID NGA-6 / Dr. NGA-6 Doe 0 0 1 (9.1%) 1 (3.8%) + RUS 5 (3.7%) 8 (6.0%) 6 (4.5%) 19 (4.8%) + INV ID RUS-1 / Dr. RUS-1 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-11 / Dr. RUS-11 Doe 0 2 (25%) 2 (33.3%) 4 (21.1%) + INV ID RUS-12 / Dr. RUS-12 Doe 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-13 / Dr. RUS-13 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-14 / Dr. RUS-14 Doe 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-16 / Dr. RUS-16 Doe 1 (20%) 1 (12.5%) 0 2 (10.5%) + INV ID RUS-18 / Dr. RUS-18 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-2 / Dr. RUS-2 Doe 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-3 / Dr. RUS-3 Doe 0 0 1 (16.7%) 1 (5.3%) + INV ID RUS-4 / Dr. RUS-4 Doe 0 2 (25%) 1 (16.7%) 3 (15.8%) + INV ID RUS-5 / Dr. RUS-5 Doe 0 1 (12.5%) 0 1 (5.3%) + INV ID RUS-6 / Dr. RUS-6 Doe 1 (20%) 0 0 1 (5.3%) + INV ID RUS-7 / Dr. RUS-7 Doe 0 0 1 (16.7%) 1 (5.3%) + JPN 5 (3.7%) 4 (3.0%) 9 (6.8%) 18 (4.5%) + INV ID JPN-1 / Dr. JPN-1 Doe 2 (40%) 2 (50%) 1 (11.1%) 5 (27.8%) + INV ID JPN-11 / Dr. JPN-11 Doe 0 0 3 (33.3%) 3 (16.7%) + INV ID JPN-12 / Dr. JPN-12 Doe 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-14 / Dr. JPN-14 Doe 0 1 (25%) 0 1 (5.6%) + INV ID JPN-17 / Dr. JPN-17 Doe 0 0 2 (22.2%) 2 (11.1%) + INV ID JPN-18 / Dr. JPN-18 Doe 1 (20%) 0 0 1 (5.6%) + INV ID JPN-2 / Dr. JPN-2 Doe 0 0 1 (11.1%) 1 (5.6%) + INV ID JPN-3 / Dr. JPN-3 Doe 0 1 (25%) 0 1 (5.6%) + INV ID JPN-5 / Dr. JPN-5 Doe 1 (20%) 0 1 (11.1%) 2 (11.1%) + INV ID JPN-6 / Dr. JPN-6 Doe 1 (20%) 0 0 1 (5.6%) + GBR 4 (3.0%) 3 (2.2%) 2 (1.5%) 9 (2.2%) + INV ID GBR-1 / Dr. GBR-1 Doe 2 (50%) 0 1 (50%) 3 (33.3%) + INV ID GBR-11 / Dr. GBR-11 Doe 0 1 (33.3%) 1 (50%) 2 (22.2%) + INV ID GBR-13 / Dr. GBR-13 Doe 1 (25%) 0 0 1 (11.1%) + INV ID GBR-15 / Dr. GBR-15 Doe 1 (25%) 0 0 1 (11.1%) + INV ID GBR-17 / Dr. GBR-17 Doe 0 1 (33.3%) 0 1 (11.1%) + INV ID GBR-6 / Dr. GBR-6 Doe 0 1 (33.3%) 0 1 (11.1%) + CAN 3 (2.2%) 2 (1.5%) 3 (2.3%) 8 (2.0%) + INV ID CAN-1 / Dr. CAN-1 Doe 1 (33.3%) 1 (50%) 0 2 (25%) + INV ID CAN-11 / Dr. CAN-11 Doe 1 (33.3%) 0 1 (33.3%) 2 (25%) + INV ID CAN-14 / Dr. CAN-14 Doe 1 (33.3%) 0 0 1 (12.5%) + INV ID CAN-4 / Dr. CAN-4 Doe 0 1 (50%) 1 (33.3%) 2 (25%) + INV ID CAN-5 / Dr. CAN-5 Doe 0 0 1 (33.3%) 1 (12.5%) + diff --git a/package/tests/testthat/_snaps/development/tables-vital-signs-vst01.md b/package/tests/testthat/_snaps/development/tables-vital-signs-vst01.md new file mode 100644 index 0000000000..88a8e3832b --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-vital-signs-vst01.md @@ -0,0 +1,61 @@ +# tables/vital-signs/vst01.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + A: Drug X B: Placebo C: Combination + Change from Change from Change from + Value at Visit Baseline Value at Visit Baseline Value at Visit Baseline + Analysis Visit (N=134) (N=134) (N=134) (N=134) (N=132) (N=132) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + SCREENING + n 134 0 134 0 132 0 + Mean (SD) 99.92 (17.99) NE (NE) 101.88 (21.07) NE (NE) 100.48 (19.07) NE (NE) + Median 99.26 NE 100.22 NE 99.10 NE + Min - Max 54.22 - 152.98 NE - NE 48.15 - 148.03 NE - NE 42.22 - 149.95 NE - NE + BASELINE + n 134 134 132 + Mean (SD) 96.50 (19.90) 101.10 (19.87) 102.77 (19.48) + Median 96.05 100.45 102.01 + Min - Max 44.28 - 136.59 29.21 - 143.77 49.37 - 153.50 + WEEK 1 DAY 8 + n 134 134 134 134 132 132 + Mean (SD) 100.65 (18.79) 4.14 (26.93) 99.19 (19.36) -1.92 (27.37) 97.14 (19.72) -5.63 (25.95) + Median 100.22 1.52 99.37 -2.79 94.19 -5.57 + Min - Max 57.60 - 147.46 -50.92 - 74.84 59.28 - 141.21 -64.50 - 70.93 50.98 - 142.47 -55.15 - 56.11 + WEEK 2 DAY 15 + n 134 134 134 134 132 132 + Mean (SD) 102.09 (19.62) 5.58 (29.38) 99.29 (21.11) -1.81 (31.11) 99.95 (20.85) -2.81 (29.10) + Median 103.59 7.82 100.57 -1.77 102.52 -5.68 + Min - Max 54.73 - 150.85 -59.71 - 98.08 51.60 - 145.28 -71.00 - 92.43 37.06 - 138.92 -73.10 - 76.80 + WEEK 3 DAY 22 + n 134 134 134 134 132 132 + Mean (SD) 101.78 (19.54) 5.28 (27.16) 97.73 (19.85) -3.37 (27.76) 99.86 (19.15) -2.91 (27.25) + Median 100.39 6.53 98.83 -5.79 100.06 -1.54 + Min - Max 47.68 - 162.22 -64.46 - 76.64 36.25 - 142.78 -70.23 - 84.74 53.80 - 146.37 -74.30 - 67.46 + WEEK 4 DAY 29 + n 134 134 134 134 132 132 + Mean (SD) 100.18 (20.18) 3.68 (27.21) 99.06 (17.75) -2.04 (26.59) 99.27 (20.12) -3.50 (27.62) + Median 98.17 3.00 97.98 -1.89 99.61 -0.46 + Min - Max 48.52 - 153.41 -77.30 - 61.90 56.78 - 142.45 -82.96 - 89.87 46.87 - 146.12 -88.68 - 70.90 + WEEK 5 DAY 36 + n 134 134 134 134 132 132 + Mean (SD) 101.42 (18.83) 4.92 (28.02) 95.92 (19.90) -5.19 (29.34) 97.73 (18.92) -5.04 (26.64) + Median 98.56 3.93 94.30 -7.18 98.09 -5.62 + Min - Max 62.66 - 155.52 -63.05 - 78.66 51.06 - 151.52 -78.07 - 72.91 51.48 - 157.27 -76.13 - 86.42 + Post-Baseline Last + n 134 134 134 134 132 132 + Mean (SD) 101.42 (18.83) 4.92 (28.02) 95.92 (19.90) -5.19 (29.34) 97.73 (18.92) -5.04 (26.64) + Median 98.56 3.93 94.30 -7.18 98.09 -5.62 + Min - Max 62.66 - 155.52 -63.05 - 78.66 51.06 - 151.52 -78.07 - 72.91 51.48 - 157.27 -76.13 - 86.42 + Post-Baseline Minimum + n 134 134 134 134 132 132 + Mean (SD) 78.98 (11.94) -17.52 (23.92) 75.77 (13.25) -25.33 (25.39) 76.35 (13.13) -26.41 (22.78) + Median 80.14 -13.96 75.71 -26.70 76.26 -27.17 + Min - Max 47.68 - 110.54 -77.30 - 33.00 36.25 - 113.53 -82.96 - 69.23 37.06 - 112.35 -88.68 - 34.24 + Post-Baseline Maximum + n 134 134 134 134 132 132 + Mean (SD) 125.08 (12.28) 28.57 (23.20) 121.33 (12.01) 20.23 (23.64) 121.42 (12.09) 18.65 (22.74) + Median 124.20 29.14 120.80 18.74 122.55 16.93 + Min - Max 94.06 - 162.22 -21.49 - 98.08 94.43 - 151.52 -34.95 - 92.43 79.39 - 157.27 -43.32 - 86.42 + diff --git a/package/tests/testthat/_snaps/development/tables-vital-signs-vst02.md b/package/tests/testthat/_snaps/development/tables-vital-signs-vst02.md new file mode 100644 index 0000000000..a16026dc01 --- /dev/null +++ b/package/tests/testthat/_snaps/development/tables-vital-signs-vst02.md @@ -0,0 +1,54 @@ +# tables/vital-signs/vst02.qmd result_v1 development + + Code + print(data_snap[[i]]) + Output + Assessment A: Drug X B: Placebo C: Combination All Patients + Abnormality (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Diastolic Blood Pressure + Low 66/134 (49.3%) 86/134 (64.2%) 78/132 (59.1%) 230/400 (57.5%) + High 88/134 (65.7%) 70/134 (52.2%) 76/132 (57.6%) 234/400 (58.5%) + Pulse Rate + Low 58/134 (43.3%) 32/134 (23.9%) 48/132 (36.4%) 138/400 (34.5%) + High 53/134 (39.6%) 49/134 (36.6%) 44/132 (33.3%) 146/400 (36.5%) + Respiratory Rate + Low 97/134 (72.4%) 84/134 (62.7%) 98/132 (74.2%) 279/400 (69.8%) + High 96/134 (71.6%) 98/134 (73.1%) 98/132 (74.2%) 292/400 (73%) + Systolic Blood Pressure + Low 71/134 (53%) 77/134 (57.5%) 73/132 (55.3%) 221/400 (55.2%) + High 78/134 (58.2%) 74/134 (55.2%) 73/132 (55.3%) 225/400 (56.2%) + Temperature + Low 108/134 (80.6%) 110/134 (82.1%) 108/132 (81.8%) 326/400 (81.5%) + High 112/134 (83.6%) 106/134 (79.1%) 107/132 (81.1%) 325/400 (81.2%) + Weight + Low 43/134 (32.1%) 39/134 (29.1%) 39/132 (29.5%) 121/400 (30.2%) + High 46/134 (34.3%) 43/134 (32.1%) 44/132 (33.3%) 133/400 (33.2%) + +# tables/vital-signs/vst02.qmd result_v2 development + + Code + print(data_snap[[i]]) + Output + Assessment A: Drug X B: Placebo C: Combination All Patients + Abnormality (N=134) (N=134) (N=132) (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Diastolic Blood Pressure + Low 54/108 (50%) 76/116 (65.5%) 68/114 (59.6%) 198/338 (58.6%) + High 74/114 (64.9%) 56/109 (51.4%) 62/106 (58.5%) 192/329 (58.4%) + Pulse Rate + Low 53/121 (43.8%) 30/125 (24%) 42/119 (35.3%) 125/365 (34.2%) + High 48/123 (39%) 45/116 (38.8%) 39/120 (32.5%) 132/359 (36.8%) + Respiratory Rate + Low 72/100 (72%) 72/110 (65.5%) 79/102 (77.5%) 223/312 (71.5%) + High 77/107 (72%) 78/108 (72.2%) 79/109 (72.5%) 234/324 (72.2%) + Systolic Blood Pressure + Low 62/117 (53%) 63/114 (55.3%) 57/103 (55.3%) 182/334 (54.5%) + High 64/110 (58.2%) 67/120 (55.8%) 68/115 (59.1%) 199/345 (57.7%) + Temperature + Low 77/96 (80.2%) 78/94 (83%) 74/90 (82.2%) 229/280 (81.8%) + High 78/93 (83.9%) 73/92 (79.3%) 81/100 (81%) 232/285 (81.4%) + Weight + Low 42/129 (32.6%) 37/125 (29.6%) 37/123 (30.1%) 116/377 (30.8%) + High 41/126 (32.5%) 41/124 (33.1%) 42/121 (34.7%) 124/371 (33.4%) + diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v1.svg deleted file mode 100644 index 80f13721e0..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v1.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -104 -101 -99 - - -0 -25 -50 -75 -100 - - - - - - - - -A: Drug X -B: Placebo -C: Combination -Description of Actual Arm (N = 400) -Frequency -Frequency of Subjects With Serious AEs: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v2.svg deleted file mode 100644 index 673d0ffcc1..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v2.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -19.5 -18.75 -22.25 - - -0 -5 -10 -15 -20 - - - - - - - - -A: Drug X -B: Placebo -C: Combination -Description of Actual Arm (N = 400) -Percent -Percent of Subjects With cl A Disorders: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v3.svg deleted file mode 100644 index b68a04e5c1..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v3.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -25 -50 -75 - - - - - - - -A: Drug X - -N = 78 -B: Placebo - -N = 75 -C: Combination - -N = 89 -Description of Actual Arm (N = 400) -Frequency -Frequency of Subjects With Serious AEs: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v4.svg deleted file mode 100644 index c1022bd5bf..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v4.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X -B: Placebo -C: Combination - - - - - - - - -0 -25 -50 -75 -100 -Frequency -Description of Actual Arm (N = 400) -Frequency of Subjects With Serious AEs: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v5.svg deleted file mode 100644 index 5e1f7d11e4..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v5.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -1 -2 - - - - - - -A: Drug X -B: Placebo -C: Combination -Description of Actual Arm (N = 400) -Percentage -Percent of Subjects with Abnormaly High ALT: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v6.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v6.svg deleted file mode 100644 index fbd45163f4..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v6.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -20 -40 -60 -80 - - - - - - - - -A: Drug X -B: Placebo -C: Combination -Description of Actual Arm (N = 400) -Percent - -Sex - - - - -F -M -Percent of Subjects With Serious AEs: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v7.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v7.svg deleted file mode 100644 index 77b386e98f..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v7.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -5 -10 -15 - - - - - - -F -M -Sex (N = 400) -Percent - -Description of Actual Arm - - - - - - -A: Drug X -B: Placebo -C: Combination -Percent of Subjects With Serious AEs: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v8.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v8.svg deleted file mode 100644 index 1c600683ca..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v8.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5 -5.5 -4.25 - - -0 -2 -4 -6 - - - - - - - -A: Drug X -B: Placebo -C: Combination -Description of Actual Arm (N = 400) -Percent -Percent of Subjects with Abnormaly High CRP at Baseline - Safety-Evaluable Subjects - - - - - - - - - - - - - - - - - - -10.45 -10.34 -10.46 -10.23 -10.25 -10.33 - - -Median -Mean - - diff --git a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v9.svg b/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v9.svg deleted file mode 100644 index 399dbccdef..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/brg01-plot_v9.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -10 -20 -30 - - - - - - - -A: Drug X -B: Placebo -C: Combination -Description of Actual Arm (N = 400) -Percent - -Analysis Toxicity Grade (C) - - - - - - - - - - -1 -2 -3 -4 -5 -Percent of Subjects With AE by Highest - NCI CTCAE Grade: Safety-Evaluable Subjects - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v1.svg deleted file mode 100644 index 596d3080ba..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v1.svg +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -10 -20 -30 -40 - - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: WEEK 2 DAY 15 -Box Plot of Laboratory Test Results -The whiskers extend to the minimum and maximum values. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v2.svg deleted file mode 100644 index a52cab74dc..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v2.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -10 -20 -30 - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: WEEK 2 DAY 15 -Box Plot of Laboratory Test Results -The whiskers extend to the 5th and 95th percentile. Values outside the whiskers have not been plotted. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v3.svg deleted file mode 100644 index 640dfbfc15..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v3.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -10 -20 -30 -40 - - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: WEEK 2 DAY 15 -Box Plot of Laboratory Test Results -The whiskers extend to the 5th and 95th percentile. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v4.svg deleted file mode 100644 index 43006b26af..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v4.svg +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -141 -64 -256 -102 -154 -309 -264 -68 -70 -4 -203 -44 - - - - - - - - -0 -10 -20 -30 -40 - - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: WEEK 2 DAY 15 -Box Plot of Laboratory Test Results -The whiskers extend to the largest and smallest observed value within 1.5*IQR. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v5.svg deleted file mode 100644 index 24b7f99303..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v5.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -10 -20 -30 -40 - - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: WEEK 2 DAY 15 -Box Plot of Laboratory Test Results -The whiskers extend to the minimum and maximum values. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v6.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v6.svg deleted file mode 100644 index 22f9fe188b..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v6.svg +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -20 -40 - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -Visit -ALT (U/L) - -ARMCD - - - - - - - - - - - - - - - -ARM A -ARM B -ARM C -Box Plot of Laboratory Test Results -The whiskers extend to the minimum and maximum values. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v7.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v7.svg deleted file mode 100644 index 9dde4ecb26..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v7.svg +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -20 -40 - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) - -AVISIT - - - - - - - - - - - - - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -Box Plot of Laboratory Test Results -The whiskers extend to the minimum and maximum values. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v8.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v8.svg deleted file mode 100644 index ffb5237e9c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v8.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -20 -40 - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: SCREENING -Box Plot of Laboratory Test Results - - - - - - - - - - - - - - - - - - -2814 -2814 -2772 -10 -10.1 -10 -8.6 -8.5 -8.6 -8.6 - 8.4 -8.5 - 8.4 -8.6 - 8.5 -3 - 11.3 -3 - 11.6 -3 - 11.8 -0-54.24 -0-54.4 -0-44.75 - - -Min - Max -25% and 75%-ile -95% CI for Median -Median -Mean -n -The whiskers extend to the minimum and maximum values. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v9.svg b/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v9.svg deleted file mode 100644 index 61dc9b415f..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/bwg01-plot_v9.svg +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -20 -40 - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) -Visit: SCREENING -Box Plot of Laboratory Test Results - - - - - - - - - - - - - - - - - - -2814 -2814 -2772 - - -n -The whiskers extend to the minimum and maximum values. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v1_and_v2.svg b/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v1_and_v2.svg deleted file mode 100644 index 4ffd10a433..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v1_and_v2.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -14 -16 -18 -20 -22 - - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) - -SEX - - - - - - -F -M -Confidence Interval Plot by Treatment Group -Mean and 95% CIs for mean are displayed. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v3.svg deleted file mode 100644 index 3b582d5c4c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v3.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -16 -18 -20 -22 - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) - -STRATA2 - - - - - - -S1 -S2 -Confidence Interval Plot by Treatment Group -Mean and 95% CIs for mean are displayed. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v4.svg deleted file mode 100644 index f402136ee7..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v4.svg +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -15 -20 -25 - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) - -STRATA1 - - - - - - - - - -A -B -C -Confidence Interval Plot by Treatment Group -Median and 95% CIs for median are displayed. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v5.svg deleted file mode 100644 index c4e70dee8f..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/cig01-plot_v5.svg +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -15.0 -17.5 -20.0 -22.5 - - - - - - - -ARM A -ARM B -ARM C -Treatment Group -ALT (U/L) - -SEX - - - - - - -F -M -Confidence Interval Plot by Treatment Group -Mean and 90% CIs for mean are displayed. - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v1.svg deleted file mode 100644 index f8aade192c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v1.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -B: Placebo - -A: Drug X - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -n -134 -82 -52 -45 -56 -33 -Responders -84 -48 -36 -30 -34 -20 -Response (%) -62.7% -58.5% -69.2% -66.7% -60.7% -60.6% -n -134 -79 -55 -50 -37 -47 -Responders -100 -61 -39 -39 -27 -34 -Response (%) -74.6% -77.2% -70.9% -78.0% -73.0% -72.3% -Odds Ratio -1.76 -2.45 -1.08 -1.77 -1.73 -1.73 -95% CI -(1.04, 2.97) -(1.23, 4.86) -(0.48, 2.46) -(0.71, 4.39) -(0.71, 4.22) -(0.67, 4.44) - - - - - - - - - - - - - - - - - - - - -B: Placebo -Better -A: Drug X -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v2.svg deleted file mode 100644 index fa316c64a3..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v2.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -ARM B - -ARM A/ARM C - -Baseline Risk Factors -All Patients -Sex - M - F -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -400 -169 -231 -135 -135 -130 -n -134 -52 -82 -45 -56 -33 -Responders -84 -36 -48 -30 -34 -20 -Response (%) -62.7% -69.2% -58.5% -66.7% -60.7% -60.6% -n -266 -117 -149 -90 -79 -97 -Responders -181 -78 -103 -64 -51 -66 -Response (%) -68.0% -66.7% -69.1% -71.1% -64.6% -68.0% -Odds Ratio -1.27 -0.89 -1.57 -1.21 -1.20 -1.39 -95% CI -(0.82, 1.96) -(0.44, 1.80) -(0.90, 2.75) -(0.56, 2.61) -(0.59, 2.44) -(0.61, 3.13) - - - - - - - - - - - - - - - - - - - - -ARM B -Better -ARM A/ARM C -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v3.svg deleted file mode 100644 index fa92271694..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v3.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -Odds Ratio -1.76 -2.45 -1.08 -1.77 -1.73 -1.73 -90% CI -(1.13, 2.73) -(1.38, 4.36) -(0.54, 2.15) -(0.83, 3.79) -(0.82, 3.66) -(0.78, 3.81) - - - - - - - - - - - - - - - - - - - - -B: Placebo -Better -A: Drug X -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v4.svg deleted file mode 100644 index b9fe36ac7f..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v4.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -B: Placebo - -A: Drug X - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -n -134 -82 -52 -45 -56 -33 -Responders -84 -48 -36 -30 -34 -20 -Response (%) -62.7% -58.5% -69.2% -66.7% -60.7% -60.6% -n -134 -79 -55 -50 -37 -47 -Responders -100 -61 -39 -39 -27 -34 -Response (%) -74.6% -77.2% -70.9% -78.0% -73.0% -72.3% -Odds Ratio -1.76 -2.45 -1.08 -1.77 -1.73 -1.73 -95% CI -(1.04, 2.97) -(1.23, 4.86) -(0.48, 2.46) -(0.71, 4.39) -(0.71, 4.22) -(0.67, 4.44) - - - - - - - - - - - - - - - - - - - - -B: Placebo -Better -A: Drug X -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v5.svg deleted file mode 100644 index b3964c6260..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg01-plot_v5.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -B: Placebo - -A: Drug X - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -n -134 -82 -52 -45 -56 -33 -Responders -47 -25 -22 -21 -16 -10 -Response (%) -35.1% -30.5% -42.3% -46.7% -28.6% -30.3% -n -134 -79 -55 -50 -37 -47 -Responders -60 -39 -21 -27 -19 -14 -Response (%) -44.8% -49.4% -38.2% -54.0% -51.4% -29.8% -Odds Ratio -1.52 -2.32 -0.84 -1.43 -2.60 -0.99 -95% CI -(0.93, 2.48) -(1.21, 4.45) -(0.39, 1.82) -(0.63, 3.24) -(1.10, 6.16) -(0.38, 2.57) - - - - - - - - - - - - - - - - - - - - -B: Placebo -Better -A: Drug X -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v1.svg deleted file mode 100644 index 20955ba1d0..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v1.svg +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -B: Placebo - -A: Drug X - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -n -134 -82 -52 -45 -56 -33 -Median (Months) -NA -NA -NA -NA -NA -NA -n -134 -79 -55 -50 -37 -47 -Median (Months) -NA -NA -9.6 -9.3 -NA -NA -Hazard Ratio -1.00 -0.79 -1.39 -1.14 -0.97 -0.97 -95% Wald CI -(0.69, 1.44) -(0.49, 1.28) -(0.78, 2.47) -(0.64, 2.02) -(0.52, 1.82) -(0.45, 2.12) - - - - - - - - - - - - - - - - - - - - -A: Drug X -Better -B: Placebo -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v2.svg deleted file mode 100644 index 8a3c512539..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v2.svg +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -Placebo - -Drug X - -Baseline Risk Factors -All Patients -Sex - M - F -Stratification Factor 1 - C - B - A -Total n -268 -107 -161 -94 -92 -82 -n -134 -52 -82 -45 -45 -44 -Median (Months) -NA -NA -NA -NA -NA -NA -n -134 -55 -79 -49 -47 -38 -Median (Months) -NA -9.6 -NA -NA -NA -NA -Hazard Ratio -1.00 -1.39 -0.79 -0.75 -1.34 -1.02 -95% Wald CI -(0.69, 1.44) -(0.78, 2.47) -(0.49, 1.28) -(0.41, 1.38) -(0.71, 2.54) -(0.53, 1.97) - - - - - - - - - - - - - - - - - - - - -Drug X -Better -Placebo -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v3.svg deleted file mode 100644 index 43822ae34e..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v3.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -Hazard Ratio -1.00 -0.79 -1.39 -1.14 -0.97 -0.97 -90% Wald CI -(0.74, 1.36) -(0.53, 1.19) -(0.86, 2.25) -(0.71, 1.84) -(0.58, 1.64) -(0.51, 1.87) - - - - - - - - - - - - - - - - - - - - -A: Drug X -Better -B: Placebo -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v4.svg deleted file mode 100644 index a3d21aac31..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/fstg02-plot_v4.svg +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -B: Placebo - -A: Drug X - -Baseline Risk Factors -All Patients -Sex - F - M -Categorical Level Biomarker 2 - LOW - MEDIUM - HIGH -Total n -268 -161 -107 -95 -93 -80 -n -134 -82 -52 -45 -56 -33 -Median (Months) -NA -NA -NA -NA -NA -NA -n -134 -79 -55 -50 -37 -47 -Median (Months) -NA -NA -9.6 -9.3 -NA -NA -Hazard Ratio -1.00 -0.79 -1.39 -1.14 -0.97 -0.97 -95% Wald CI -(0.69, 1.44) -(0.49, 1.28) -(0.78, 2.47) -(0.64, 2.02) -(0.52, 1.82) -(0.45, 2.12) - - - - - - - - - - - - - - - - - - - - -A: Drug X -Better -B: Placebo -Better - - - - - - - - - - - - - - - - -0.1 -1 -10 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v1-1.svg b/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v1-1.svg deleted file mode 100644 index ebbab249f1..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v1-1.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -10 -20 -30 - - - - - - - - - -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -Visit -SGOT/ALT (U/L) - -Patient_ID - - - - - - - - - -128 -268 -73 -Treatment Arm A -Individual Patient Plots - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v1-2.svg b/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v1-2.svg deleted file mode 100644 index 1340001c01..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v1-2.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -10 -20 -30 - - - - - - - - - -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -Visit -SGOT/ALT (U/L) - -Patient_ID - - - - - - -45 -52 -Treatment Arm A -Individual Patient Plots - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v2-1.svg b/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v2-1.svg deleted file mode 100644 index dd9dc7e232..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v2-1.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -128 -73 -268 - - -10 -20 -30 -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -Visit -SGOT/ALT (U/L) -Patient_ID - - - -a - - - -a - - - -a -128 -268 -73 -Treatment Arm A -Individual Patient Plots - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v2-2.svg b/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v2-2.svg deleted file mode 100644 index 1efb28d181..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ippg01-plots_v2-2.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -52 -45 - - -10 -20 -30 -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -Visit -SGOT/ALT (U/L) -Patient_ID - - - -a - - - -a -45 -52 -Treatment Arm A -Individual Patient Plots - - diff --git a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v1.svg deleted file mode 100644 index b4e60e4f76..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v1.svg +++ /dev/null @@ -1,972 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N - - - - -134 - - - - -ARM A - - - - -Median - - - - -134 - - - - -ARM B - - - - -95% CI - - - - -132 - - - - -ARM C - - - - -NA - - - - -NA - - - - -286.6 - - - - -(283.1, NA) - - - - -(287.3, NA) - - - - -(232.1, NA) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -HR - - - - -1.00 - - - - -ARM B - - - - -95% CI - - - - -1.29 - - - - -ARM C - - - - -p-value (log-rank) - - - - -(0.69, 1.44) - - - - -(0.91, 1.83) - - - - -0.9998 - - - - -0.1541 - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - -Survival Probability - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - - - - - - -ARM A -ARM B -ARM C - - - -Censored -Patients at Risk: - - - -134 -121 -93 -76 -37 -0 -134 -124 -91 -76 -31 -0 -132 -116 -89 -63 -29 -0 - - - -ARM A -ARM B -ARM C - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v2.svg deleted file mode 100644 index 671a06d49c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v2.svg +++ /dev/null @@ -1,972 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N - - - - -134 - - - - -ARM A - - - - -Median - - - - -134 - - - - -ARM B - - - - -95% CI - - - - -132 - - - - -ARM C - - - - -NA - - - - -NA - - - - -286.6 - - - - -(283.1, NA) - - - - -(287.3, NA) - - - - -(232.1, NA) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -HR - - - - -1.00 - - - - -ARM B - - - - -95% CI - - - - -1.29 - - - - -ARM C - - - - -p-value (log-rank) - - - - -(0.69, 1.44) - - - - -(0.91, 1.83) - - - - -0.9998 - - - - -0.1541 - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - -Failure Probability - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - - - - - - -ARM A -ARM B -ARM C - - - -Censored -Patients at Risk: - - - -134 -121 -93 -76 -37 -0 -134 -124 -91 -76 -31 -0 -132 -116 -89 -63 -29 -0 - - - -ARM A -ARM B -ARM C - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v3.svg deleted file mode 100644 index 13e4fda442..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v3.svg +++ /dev/null @@ -1,793 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N - - - - -134 - - - - -ARM A - - - - -Median - - - - -134 - - - - -ARM B - - - - -95% CI - - - - -132 - - - - -ARM C - - - - -NA - - - - -NA - - - - -286.6 - - - - -(283.1, NA) - - - - -(287.3, NA) - - - - -(232.1, NA) - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - -Survival Probability - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - - - - - - -ARM A -ARM B -ARM C - - - -Censored -Patients at Risk: - - - -134 -121 -93 -76 -37 -0 -134 -124 -91 -76 -31 -0 -132 -116 -89 -63 -29 -0 - - - -ARM A -ARM B -ARM C - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v4.svg deleted file mode 100644 index 89e8bd393d..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v4.svg +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N - - - - -134 - - - - -ARM A - - - - -Median - - - - -134 - - - - -ARM B - - - - -95% CI - - - - -132 - - - - -ARM C - - - - -NA - - - - -NA - - - - -286.6 - - - - -(283.1, NA) - - - - -(287.3, NA) - - - - -(232.1, NA) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -HR - - - - -1.00 - - - - -ARM B - - - - -95% CI - - - - -1.29 - - - - -ARM C - - - - -p-value (log-rank) - - - - -(0.69, 1.44) - - - - -(0.91, 1.83) - - - - -0.9998 - - - - -0.1541 - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - -Survival Probability - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - - - - - - -ARM A -ARM B -ARM C -Patients at Risk: - - - -134 -121 -93 -76 -37 -0 -134 -124 -91 -76 -31 -0 -132 -116 -89 -63 -29 -0 - - - -ARM A -ARM B -ARM C - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v5.svg deleted file mode 100644 index 17bd43b077..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v5.svg +++ /dev/null @@ -1,756 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N - - - - -134 - - - - -ARM A - - - - -Median - - - - -134 - - - - -ARM B - - - - -95% CI - - - - -132 - - - - -ARM C - - - - -NA - - - - -NA - - - - -286.6 - - - - -(283.1, NA) - - - - -(287.3, NA) - - - - -(232.1, NA) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -HR - - - - -1.00 - - - - -ARM B - - - - -95% CI - - - - -1.29 - - - - -ARM C - - - - -p-value (log-rank) - - - - -(0.69, 1.44) - - - - -(0.91, 1.83) - - - - -0.9998 - - - - -0.1541 - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - -Survival Probability - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - - - - - - -ARM A -ARM B -ARM C - - -Censored -Patients at Risk: - - - -134 -121 -93 -76 -37 -0 -134 -124 -91 -76 -31 -0 -132 -116 -89 -63 -29 -0 - - - -ARM A -ARM B -ARM C - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v6.svg b/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v6.svg deleted file mode 100644 index 7dc79615ee..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/kmg01-plot_v6.svg +++ /dev/null @@ -1,972 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N - - - - -134 - - - - -ARM A - - - - -Median - - - - -134 - - - - -ARM B - - - - -80% CI - - - - -132 - - - - -ARM C - - - - -NA - - - - -NA - - - - -286.6 - - - - -(NA, NA) - - - - -(NA, NA) - - - - -(246.5, NA) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -HR - - - - -1.00 - - - - -ARM B - - - - -80% CI - - - - -1.26 - - - - -ARM C - - - - -p-value (wald) - - - - -(0.78, 1.27) - - - - -(1.00, 1.59) - - - - -0.986 - - - - -0.2032 - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - -Survival Probability - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - - - - - - -ARM A -ARM B -ARM C - - - -Censored -Patients at Risk: - - - -134 -121 -93 -76 -37 -0 -134 -124 -91 -76 -31 -0 -132 -116 -89 -63 -29 -0 - - - -ARM A -ARM B -ARM C - - - - - - -0 -100 -200 -300 -400 -500 -Time (Days) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v1.svg deleted file mode 100644 index ee612684e6..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v1.svg +++ /dev/null @@ -1,754 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X - - - - - - - - - - -B: Placebo - - - - - - - - - - -C: Combination - - - - - - - - - - -ALT - - - - - - - - - - -CRP - - - - - - - - - - -IGA - - - - - -2 -4 -6 - - - -2 -4 -6 - - - -2 -4 -6 -0 -10 -20 -30 - - - - -7 -8 -9 -10 -11 - - - - - -2.7 -2.8 -2.9 -3.0 -3.1 - - - - - -AVISIT -AVAL - -SUBJID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -id-128 -id-201 -id-220 -id-261 -id-262 -id-267 -id-378 -id-45 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v2.svg deleted file mode 100644 index 09e0f86187..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v2.svg +++ /dev/null @@ -1,757 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 2) - - - - - - - - - - -B: Placebo (N = 3) - - - - - - - - - - -C: Combination (N = 3) - - - - - - - - - - -ALT -(U/L) - - - - - - - - - - -CRP -(mg/L) - - - - - - - - - - -IGA -(g/L) - - - - - -2 -4 -6 - - - -2 -4 -6 - - - -2 -4 -6 -0 -10 -20 -30 - - - - -7 -8 -9 -10 -11 - - - - - -2.7 -2.8 -2.9 -3.0 -3.1 - - - - - -AVISIT -AVAL - -SUBJID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -id-128 -id-201 -id-220 -id-261 -id-262 -id-267 -id-378 -id-45 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v3.svg deleted file mode 100644 index a40f494852..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v3.svg +++ /dev/null @@ -1,3248 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 2) - - - - - - - - - - -B: Placebo (N = 3) - - - - - - - - - - -C: Combination (N = 3) - - - - - - - - - - -ALT -(U/L) - - - - - - - - - - -CRP -(mg/L) - - - - - - - - - - -IGA -(g/L) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -0 -10 -20 -30 - - - - -7 -8 -9 -10 -11 - - - - - -2.7 -2.8 -2.9 -3.0 -3.1 - - - - - - -SUBJID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -id-128 -id-201 -id-220 -id-261 -id-262 -id-267 -id-378 -id-45 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v4.svg deleted file mode 100644 index 0955d9c8f0..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v4.svg +++ /dev/null @@ -1,14601 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 11) - - - - - - - - - - -B: Placebo (N = 11) - - - - - - - - - - -C: Combination (N = 18) - - - - - - - - - - -ALT - - - - - - - - - - -CRP - - - - - - - - - - -IGA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -0 -10 -20 -30 -40 - - - - - -8 -10 -12 - - - -2.8 -3.0 -3.2 - - - - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v51.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v51.svg deleted file mode 100644 index e7e04faaf7..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v51.svg +++ /dev/null @@ -1,14822 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 11) - - - - - - - - - - -B: Placebo (N = 11) - - - - - - - - - - -C: Combination (N = 18) - - - - - - - - - - -ALT - - - - - - - - - - -CRP - - - - - - - - - - -IGA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -0 -10 -20 -30 -40 - - - - - -8 -10 -12 - - - -2.8 -3.0 -3.2 - - - - - - - -Mean +/- 95% CI - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v52.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v52.svg deleted file mode 100644 index faa7cc8a1e..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v52.svg +++ /dev/null @@ -1,15029 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 11) - - - - - - - - - - -B: Placebo (N = 11) - - - - - - - - - - -C: Combination (N = 18) - - - - - - - - - - -ALT - - - - - - - - - - -CRP - - - - - - - - - - -IGA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -0 -10 -20 -30 -40 - - - - - -8 -10 -12 - - - -2.8 -3.0 -3.2 - - - - -Aggregate - - - - - - - - - - -Mean +/- 95% CI -Median +/- 95% CI - - diff --git a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v53.svg b/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v53.svg deleted file mode 100644 index 242096f4aa..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/ltg01-plot_v53.svg +++ /dev/null @@ -1,14822 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 11) - - - - - - - - - - -B: Placebo (N = 11) - - - - - - - - - - -C: Combination (N = 18) - - - - - - - - - - -ALT - - - - - - - - - - -CRP - - - - - - - - - - -IGA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -SCREENING -BASELINE -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -0 -10 -20 -30 -40 - - - - - -8 -10 -12 - - - -2.8 -3.0 -3.2 - - - - - - - -Median +/- 80% CI - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v1.svg deleted file mode 100644 index 141ee18072..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v1.svg +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Adjusted mean of Analysis Value by treatment at visits - - - - - - - - -SCREENING -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -50 -60 -70 - - - -Visit -Estimates with 95% CIs - -ARM - - - - - - - - - -B: Placebo -A: Drug X -C: Combination - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v2.svg deleted file mode 100644 index 4e44e8721d..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v2.svg +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Adjusted mean of Analysis Value by treatment at visits - - - - - - - - -SCREENING -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -50 -60 -70 - - - -Visit -Estimates with 95% CIs - -ARM - - - - - - - - - - - - -B: Placebo -A: Drug X -C: Combination - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v3.svg deleted file mode 100644 index 9ca5c0dbb9..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v3.svg +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Adjusted mean of Analysis Value by treatment at visits - - - - - - - - -SCREENING -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 -50 -60 -70 - - - -Visit -Estimates with 95% CIs - -ARM - - - - - - - - - -B: Placebo -A: Drug X -C: Combination - - - - - - - - - - - - - - - - - - -134 -45.2 -0.7 -(43.78, 46.68) -134 -54.3 -0.7 -(52.99, 55.71) -134 -60.0 -0.8 -(58.49, 61.50) -134 -64.4 -0.9 -(62.71, 66.11) -134 -69.0 -1.0 -(67.01, 70.92) -134 -74.4 -1.1 -(72.29, 76.44) - - - - - - - - - - -134 -44.6 -0.7 -(43.12, 46.02) -134 -55.0 -0.7 -(53.66, 56.38) -134 -59.8 -0.8 -(58.29, 61.30) -134 -66.8 -0.9 -(65.09, 68.49) -134 -70.3 -1.0 -(68.30, 72.21) -134 -75.7 -1.1 -(73.63, 77.78) - - - - - - - - - - -132 -44.7 -0.7 -(43.24, 46.16) -132 -53.9 -0.7 -(52.57, 55.31) -132 -59.3 -0.8 -(57.77, 60.80) -132 -66.6 -0.9 -(64.85, 68.28) -132 -70.3 -1.0 -(68.32, 72.26) -132 -74.5 -1.1 -(72.39, 76.58) - - - - - - - - - - -C: Combination - - - - - - - - - - -A: Drug X - - - - - - - - - - -B: Placebo - - -95% CI -Std. Error -LS mean -n -95% CI -Std. Error -LS mean -n -95% CI -Std. Error -LS mean -n - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v4.svg deleted file mode 100644 index f29192ad85..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v4.svg +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.5235 -0.6112 -0.4924 -0.6772 -0.8504 -0.5140 -0.0528 -0.0800 -0.3593 -0.3480 -0.3704 -0.9378 - -Contrasts of FKSI-FWB means - - - - - - -SCREENING -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 --2.5 -0.0 -2.5 -5.0 - - - - -Visit -Estimates with 95% CIs - -ARM - - - - - - - - - -B: Placebo -A: Drug X -C: Combination - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v5.svg deleted file mode 100644 index 5edd45ab8d..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v5.svg +++ /dev/null @@ -1,2740 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING - - - - - - - - - - -WEEK 1 DAY 8 - - - - - - - - - - -WEEK 2 DAY 15 - - - - - - - - - - -WEEK 3 DAY 22 - - - - - - - - - - -WEEK 4 DAY 29 - - - - - - - - - - -WEEK 5 DAY 36 - - - - - - -44.6 -44.8 -45.0 -45.2 - - - - -54.0 -54.3 -54.6 -54.9 - - - - - -59.2 -59.4 -59.6 -59.8 -60.0 - - -65 -66 - - - - -69.2 -69.6 -70.0 -70.4 - - - -74.5 -75.0 -75.5 --40 --20 -0 -20 -40 - - - - - -Fitted values -Residuals - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v6.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v6.svg deleted file mode 100644 index a5345de989..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg01-plot_v6.svg +++ /dev/null @@ -1,2686 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCREENING - - - - - - - - - - -WEEK 1 DAY 8 - - - - - - - - - - -WEEK 2 DAY 15 - - - - - - - - - - -WEEK 3 DAY 22 - - - - - - - - - - -WEEK 4 DAY 29 - - - - - - - - - - -WEEK 5 DAY 36 - - - - - --2 -0 -2 - - - --2 -0 -2 - - - --2 -0 -2 - - - --2 -0 -2 - - - --2 -0 -2 - - - --2 -0 -2 --2 -0 -2 - - - -Standard normal quantiles -Standardized residuals - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg02-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg02-plot_v1.svg deleted file mode 100644 index d21631736a..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg02-plot_v1.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -Baseline Risk Factors -All Patients -group - subpopulation 1 - subpopulation 2 -SEX - F - M -Total n -393 -125 -268 -240 -153 -Mean Difference --1.3 --0.5 --1.1 --1.4 --1.2 -95% CI -(-3.3, 0.6) -(-3.4, 2.4) -(-3.2, 0.9) -(-4.0, 1.2) -(-4.1, 1.7) -p-value -0.1813 -0.7380 -0.2798 -0.2918 -0.4276 - - - - - - - - - - - - - - - - - - - -ARM B -Higher -ARM A -Higher - - - - - - - - - - - - - - - --5 --2.5 -0 -2.5 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mmrmg02-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/mmrmg02-plot_v2.svg deleted file mode 100644 index 6479c4834c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mmrmg02-plot_v2.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -Baseline Risk Factors -All Patients -group - subpopulation 1 - subpopulation 2 -SEX - F - M -Total n -383 -117 -266 -217 -166 -Mean Difference --1.4 --1.6 --1.0 --2.2 --0.4 -95% CI -(-3.3, 0.6) -(-4.7, 1.4) -(-3.1, 1.1) -(-4.9, 0.5) -(-3.2, 2.4) -p-value -0.1659 -0.2921 -0.3605 -0.1156 -0.7911 - - - - - - - - - - - - - - - - - - - -ARM B -Higher -ARM C -Higher - - - - - - - - - - - - - - - --5 --2.5 -0 -2.5 - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v1.svg deleted file mode 100644 index bc5b55da5e..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v1.svg +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -16 -18 -20 - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Laboratory Test: ALT (U/L) -Plot of Mean and 95% Confidence Limits by Visit - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v2.svg deleted file mode 100644 index ccc319b168..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v2.svg +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --10 --5 -0 -5 -10 - - - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Assessment: DIABP (Pa) -Plot of Mean and 95% Confidence Intervals of Change from Baseline by Visit - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v3.svg deleted file mode 100644 index 514497132e..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v3.svg +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -10 -15 -20 -25 -30 - - - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Laboratory Test: ALT (U/L) -Plot of Mean (+/-SD) - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v4.svg deleted file mode 100644 index 4f8fa132f2..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v4.svg +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -16 -17 -18 -19 -20 - - - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Laboratory Test: ALT (U/L) -Plot of Mean and 80% Confidence Limits by Visit - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v5.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v5.svg deleted file mode 100644 index a9fd89abf9..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v5.svg +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -16 -18 -20 - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Laboratory Test: ALT (U/L) -Plot of Mean and 95% Confidence Limits by Visit - - - - - - - - - - - - - - - - - - -134 -134 -134 -134 -134 - - - - - - - - - - -134 -134 -134 -134 -134 - - - - - - - - - - -132 -132 -132 -132 -132 - - - - - - - - - - -C: Combination - - - - - - - - - - -B: Placebo - - - - - - - - - - -A: Drug X - - -n -n -n - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v6.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v6.svg deleted file mode 100644 index 5d7b90728c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v6.svg +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -16 -18 -20 - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Laboratory Test: ALT (U/L) -Plot of Mean and 95% Confidence Limits by Visit - - - - - - - - - - - - - - - - - - -134 -16.8 -(15.20, 18.30) -134 -17.8 -(16.18, 19.46) -134 -18.4 -(16.78, 19.96) -134 -19.2 -(17.30, 21.05) -134 -19.2 -(17.60, 20.83) - - - - - - - - - - -134 -18.9 -(17.36, 20.50) -134 -18.8 -(17.15, 20.48) -134 -17.6 -(16.01, 19.28) -134 -17.2 -(15.40, 19.04) -134 -18.0 -(16.32, 19.71) - - - - - - - - - - -132 -19.6 -(18.01, 21.20) -132 -16.5 -(15.14, 17.95) -132 -16.8 -(15.11, 18.40) -132 -17.9 -(16.32, 19.52) -132 -18.5 -(16.89, 20.14) - - - - - - - - - - -C: Combination - - - - - - - - - - -B: Placebo - - - - - - - - - - -A: Drug X - - -Mean 95% CI -Mean -n -Mean 95% CI -Mean -n -Mean 95% CI -Mean -n - - diff --git a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v7.svg b/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v7.svg deleted file mode 100644 index fa4c56bb9a..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/mng01-plot_v7.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -17 -18 -19 -20 -21 - - - - - - - - - - -WEEK 1 DAY 8 -WEEK 2 DAY 15 -WEEK 3 DAY 22 -WEEK 4 DAY 29 -WEEK 5 DAY 36 - - - - - - - - - - - - - -A: Drug X (N = 134) -B: Placebo (N = 134) -C: Combination (N = 132) -Laboratory Test: ALT (U/L) -Plot of Mean and 95% Confidence Limits by Visit - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkcg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkcg01-plot_v1.svg deleted file mode 100644 index 84ad9d8345..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkcg01-plot_v1.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -5 -10 -15 - - - - - - - - - - -0 -5 -10 -15 -20 -25 -Norminal Time from First Dose (hr) -Concentration (ug/mL) - -Patient_ID - - - -1 -Analyte: Plasma Drug X (ug/mL) -Treatment Group: ARM A -Plot of Plasma Drug X (ug/mL) Concentrations Over Time by -Patient: PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkcg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/pkcg01-plot_v2.svg deleted file mode 100644 index 65291e106e..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkcg01-plot_v2.svg +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.001 -0.01 -0.1 -1 -10 - - - - - - - - - - - -0 -5 -10 -15 -20 -25 -Norminal Time from First Dose (hr) -Concentration (ug/mL) - -Patient_ID - - - -1 -Analyte: Plasma Drug X (ug/mL) -Treatment Group: ARM A -Plot of Plasma Drug X (ug/mL) Concentrations Over Time by -Patient: PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkcg02-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkcg02-plot_v1.svg deleted file mode 100644 index 766e3be2a0..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkcg02-plot_v1.svg +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -5 -10 -15 - - - - - - - - - - -0 -5 -10 -15 -20 -25 -Norminal Time from First Dose (hr) -Concentration (ug/mL) - -Patient_ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -105 -134 -177 -217 -23 -345 -397 -42 -50 -93 -Analyte: Plasma X (ug/mL) -Treatment Group: ARM A -Plot of X Concentration (ug/mL) Over Time by Treatment: -PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkcg02-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/pkcg02-plot_v2.svg deleted file mode 100644 index 39a7c07e54..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkcg02-plot_v2.svg +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.001 -0.01 -0.1 -1 -10 - - - - - - - - - - - -0 -5 -10 -15 -20 -25 -Norminal Time from First Dose (hr) -Concentration (ug/mL) - -Patient_ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -105 -134 -177 -217 -23 -345 -397 -42 -50 -93 -Analyte: Plasma X (ug/mL) -Treatment Group: ARM A -Log-scale Plot of X Concentration (ug/mL) Over Time by Treatment: -PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkcg03-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkcg03-plot_v1.svg deleted file mode 100644 index 562219deb7..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkcg03-plot_v1.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -5 -10 -15 - - - - - - - - - - -0 -5 -10 -15 -20 -25 -Nom. Rel. Time from Analyte First Dose -Concentration (ug/mL) - - - - - - - - - -A: Drug X (N = 134) -C: Combination (N = 132) -Analyte: Plasma Drug X (ug/mL) -Plot of Mean (+/- SD) Plasma Concentrations Over Time by Treatment, -PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkcg03-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/pkcg03-plot_v2.svg deleted file mode 100644 index 9e466b057a..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkcg03-plot_v2.svg +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.001 -0.01 -0.1 -1 -10 - - - - - - - - - - - -0 -5 -10 -15 -20 -25 -Nom. Rel. Time from Analyte First Dose -Concentration (ug/mL) - - - - - - - - - -A: Drug X (N = 134) -C: Combination (N = 132) -Analyte: Plasma Drug X (ug/mL) -Plot of Mean (+/- SD) Log-Scale Plasma Concentrations Over Time by Treatment, -PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg01-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg01-plot_v1.svg deleted file mode 100644 index 3b09c93e6c..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg01-plot_v1.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -14 -16 -18 - - - - - -12 -24 -Time (hours) -Cummulative Percentage (%) - - - - - - - - - -A: Drug X (N = 134) -C: Combination (N = 132) -Analyte: Plasma Drug X -Visit: CYCLE 1 DAY 1 -PK Parameter: Fe (%) -Plot of Mean (+/- SD) Cummulative Percentage (%) of Recovered Drug in Urine -by Analyte, Visit: PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg01-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg01-plot_v2.svg deleted file mode 100644 index fc723d9833..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg01-plot_v2.svg +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -12 -14 -16 -18 -20 - - - - - - - -12 -24 -Time (hours) -Cummulative Percentage (%) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A: Drug X (N = 134) -C: Combination (N = 132) -D: Drug D (N = 173) -E: Drug E (N = 138) -F: Drug F (N = 104) -G: Drug G (N = 43) -Analyte: Plasma Drug X -Visit: CYCLE 1 DAY 1 -PK Parameter: Fe (%) -Plot of Mean (+/- SD) Cummulative Percentage (%) of Recovered Drug in Urine -by Analyte, Visit: PK Evaluable Patients -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg02-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg02-plot_v1.svg deleted file mode 100644 index 81af1fdf96..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg02-plot_v1.svg +++ /dev/null @@ -1,878 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -y = 5.34 - 0.01 x , RΒ² = -0.00113 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5 - - - - - - -720 -960 -1200 -480 -1440 -Dose (mg/mL) -AUCinf day*ug/mL - -Treatment Arm - - - - -A: Drug X (268) -C: Combination (528) -Summary of serum PK parameters by treatment -Dose-Proportionality Plot of Serum A: Drug X AUCinf in day*ug/mL - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg02-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg02-plot_v2.svg deleted file mode 100644 index d91eba8ba0..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg02-plot_v2.svg +++ /dev/null @@ -1,863 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -y = 5.34 - 0.01 x , RΒ² = -0.00113 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5 - - - - - - -720 -960 -1200 -480 -1440 -Dose (mg/mL) -AUCinf day*ug/mL - -Treatment Arm - - - - -A: Drug X (268) -C: Combination (528) -Summary of serum PK parameters by treatment -Dose-Proportionality Plot of Serum A: Drug X AUCinf in day*ug/mL - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg03-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg03-plot_v1.svg deleted file mode 100644 index be5bb288a5..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg03-plot_v1.svg +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -id-53 -id-360 -id-10 -id-104 -id-78 -id-224 -id-324 -id-104 -id-140 -id-187 -id-195 -id-99 -id-378 -id-215 -id-245 -id-64 -id-363 -id-181 - - - -10 -20 -30 -40 -50 - - - - - - - - -SCREENING -CYCLE 1 DAY 1 -CYCLE 1 DAY 2 -Visit -Max Conc (ug/mL) - -ACTARM - - - - - - - - - -a - - - - - - - - - -a -A: Drug X -C: Combination -Analyte: -PK Parameter: Max Conc (ug/mL) -Boxplot of Max Conc by Visit -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg04-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg04-plot_v1.svg deleted file mode 100644 index e8f4d865d1..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg04-plot_v1.svg +++ /dev/null @@ -1,2579 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -id-53 -id-360 -id-10 -id-104 -id-78 -id-224 -id-324 -id-104 -id-140 -id-187 -id-195 -id-99 -id-378 -id-215 -id-245 -id-64 -id-363 -id-181 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -10 -20 -30 -40 -50 - - - - - - - - -SCREENING -CYCLE 1 DAY 1 -CYCLE 1 DAY 2 -Visit -Max Conc (ug/mL) - -ACTARM - - - - - - - - - -a - - - - - - - - - - -a - -A: Drug X -C: Combination -Analyte: -PK Parameter: Max Conc (ug/mL) -Boxplot of Max Conc by Visit -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v1.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v1.svg deleted file mode 100644 index 30f6785452..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v1.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AB12345-PAK-11-id-268 -AB12345-CHN-14-id-1 -AB12345-PAK-11-id-49 -AB12345-CHN-3-id-303 -AB12345-BRA-1-id-93 -AB12345-CHN-1-id-389 -AB12345-CHN-1-id-25 -AB12345-CHN-15-id-262 -AB12345-CHN-15-id-297 -AB12345-PAK-11-id-49 -AB12345-CHN-1-id-279 -AB12345-CHN-17-id-10 -AB12345-CHN-11-id-113 - - - -1 -2 - - - - -AUCIFO -CMAX -Parameter -Metabolite to Parent Ratio - -ACTARM - - - - - - - - - - - - - - - - - - -A: Drug X -C: Combination -Analyte: Plasma Drug X, Metabolite Drug X -PK Parameter: AUCIFO, CMAX -Visit: CYCLE 1 DAY 1 -Boxplot of Metabolite to Parent Ratios by Treatment -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v2.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v2.svg deleted file mode 100644 index c532e2b7a2..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v2.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AB12345-CHN-15-id-201 -AB12345-PAK-4-id-15 -AB12345-CHN-15-id-297 - - - -0.5 -1.0 -1.5 -2.0 - - - - - - -AUCIFO -CMAX -Parameter -Metabolite to Parent Ratio - -ACTARM - - - - - - - - - -C: Combination -Analyte: Plasma Drug Y, Metabolite Drug Y -PK Parameter: AUCIFO, CMAX -Visit: CYCLE 1 DAY 1 -Boxplot of Metabolite to Parent Ratios by Treatment -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v3.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v3.svg deleted file mode 100644 index 1784d791a0..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v3.svg +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 -2 - - - - -AUCIFO -CMAX -Parameter -Metabolite to Parent Ratio - -ACTARM - - - - - - - - - - - - - - - - - - -A: Drug X -C: Combination -Analyte: Plasma Drug X, Metabolite Drug X -PK Parameter: AUCIFO, CMAX -Visit: CYCLE 1 DAY 1 -Boxplot of Metabolite to Parent Ratios by Treatment -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v4.svg b/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v4.svg deleted file mode 100644 index 17087e68de..0000000000 --- a/package/tests/testthat/_snaps/graph-snaps/pkpg06-plot_v4.svg +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AB12345-PAK-11-id-268 -AB12345-CHN-11-id-263 -AB12345-CHN-14-id-1 -AB12345-CHN-5-id-160 -AB12345-CHN-4-id-114 -AB12345-PAK-12-id-328 -AB12345-CHN-15-id-297 -AB12345-CHN-11-id-392 -AB12345-CHN-5-id-83 -AB12345-JPN-1-id-7 -AB12345-CHN-14-id-228 -AB12345-BRA-14-id-23 -AB12345-JPN-1-id-225 -AB12345-PAK-11-id-49 -AB12345-CHN-3-id-303 -AB12345-CHN-11-id-256 -AB12345-CHN-14-id-375 -AB12345-NGA-1-id-46 -AB12345-CHN-1-id-181 -AB12345-BRA-1-id-93 -AB12345-CHN-1-id-389 -AB12345-RUS-11-id-283 -AB12345-NGA-11-id-41 -AB12345-CHN-14-id-143 -AB12345-BRA-14-id-120 -AB12345-JPN-5-id-252 -AB12345-CHN-1-id-25 -AB12345-RUS-6-id-77 -AB12345-CHN-15-id-262 -AB12345-RUS-1-id-52 -AB12345-BRA-11-id-50 -AB12345-CAN-14-id-104 -AB12345-USA-3-id-320 -AB12345-PAK-12-id-328 -AB12345-CHN-15-id-297 -AB12345-BRA-11-id-217 -AB12345-CHN-12-id-57 -AB12345-CHN-15-id-399 -AB12345-PAK-11-id-49 -AB12345-CHN-11-id-192 -AB12345-CHN-11-id-377 -AB12345-CHN-1-id-279 -AB12345-CHN-12-id-255 -AB12345-USA-12-id-140 -AB12345-CHN-11-id-2 -AB12345-RUS-11-id-283 -AB12345-PAK-12-id-85 -AB12345-CHN-1-id-25 -AB12345-PAK-1-id-125 -AB12345-CHN-11-id-349 -AB12345-USA-11-id-224 -AB12345-CHN-17-id-10 -AB12345-CHN-1-id-71 -AB12345-JPN-6-id-260 -AB12345-CHN-11-id-113 -AB12345-CHN-1-id-277 - - - -1 -2 - - - - -AUCIFO -CMAX -Parameter -Metabolite to Parent Ratio - -ACTARM - - - - - - - - - - - - - - - - - - -A: Drug X -C: Combination -Analyte: Plasma Drug X, Metabolite Drug X -PK Parameter: AUCIFO, CMAX -Visit: CYCLE 1 DAY 1 -Boxplot of Metabolite to Parent Ratios by Treatment -Program: -Output: - - diff --git a/package/tests/testthat/_snaps/rbmit01/markdown-snaps.md b/package/tests/testthat/_snaps/rbmit01/markdown-snaps.md deleted file mode 100644 index bddddaf9c2..0000000000 --- a/package/tests/testthat/_snaps/rbmit01/markdown-snaps.md +++ /dev/null @@ -1,36 +0,0 @@ -# result_v1 - - Code - print(data_snap[[i]]) - Output - Visit ref alt - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - 4 - Adjusted Mean (SE) -1.616 (0.486) -1.708 (0.475) - 95% CI (-2.576, -0.656) (-2.645, -0.770) - Difference in Adjusted Means (SE) -0.092 (0.683) - 95% CI (-1.439, 1.256) - Relative Reduction (%) 5.7% - p-value (RBMI) 0.8932 - 5 - Adjusted Mean (SE) -4.248 (0.649) -2.808 (0.644) - 95% CI (-5.530, -2.966) (-4.080, -1.536) - Difference in Adjusted Means (SE) 1.441 (0.920) - 95% CI (-0.376, 3.257) - Relative Reduction (%) -33.9% - p-value (RBMI) 0.1192 - 6 - Adjusted Mean (SE) -6.366 (0.711) -4.130 (0.703) - 95% CI (-7.771, -4.961) (-5.519, -2.740) - Difference in Adjusted Means (SE) 2.236 (1.004) - 95% CI (0.250, 4.222) - Relative Reduction (%) -35.1% - p-value (RBMI) 0.0276 - 7 - Adjusted Mean (SE) -7.626 (0.819) -4.820 (0.773) - 95% CI (-9.249, -6.004) (-6.349, -3.292) - Difference in Adjusted Means (SE) 2.806 (1.121) - 95% CI (0.588, 5.024) - Relative Reduction (%) -36.8% - p-value (RBMI) 0.0136 - diff --git a/package/tests/testthat/_snaps/cig01/graph-snaps.md b/package/tests/testthat/_snaps/stable/graphs-other-cig01.md similarity index 89% rename from package/tests/testthat/_snaps/cig01/graph-snaps.md rename to package/tests/testthat/_snaps/stable/graphs-other-cig01.md index e48b5fe58e..f429c80b03 100644 --- a/package/tests/testthat/_snaps/cig01/graph-snaps.md +++ b/package/tests/testthat/_snaps/stable/graphs-other-cig01.md @@ -1,4 +1,4 @@ -# plot_v9 +# graphs/other/cig01.qmd table_v6 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/adal02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-ADA-adal02.md similarity index 95% rename from package/tests/testthat/_snaps/adal02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-ADA-adal02.md index a8fde51228..b73d882a71 100644 --- a/package/tests/testthat/_snaps/adal02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-ADA-adal02.md @@ -1,4 +1,4 @@ -# lsting +# listings/ADA/adal02.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/egl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-ECG-egl01.md similarity index 98% rename from package/tests/testthat/_snaps/egl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-ECG-egl01.md index 6241658404..fa89fcd3e3 100644 --- a/package/tests/testthat/_snaps/egl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-ECG-egl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/ECG/egl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ael01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael01.md similarity index 94% rename from package/tests/testthat/_snaps/ael01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-adverse-events-ael01.md index 57542218fb..53f685566f 100644 --- a/package/tests/testthat/_snaps/ael01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael01.md @@ -1,4 +1,4 @@ -# lsting +# listings/adverse-events/ael01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ael01_nollt/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael01_nollt.md similarity index 92% rename from package/tests/testthat/_snaps/ael01_nollt/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-adverse-events-ael01_nollt.md index 09c9427697..293993dabd 100644 --- a/package/tests/testthat/_snaps/ael01_nollt/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael01_nollt.md @@ -1,4 +1,4 @@ -# lsting +# listings/adverse-events/ael01_nollt.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ael02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael02.md similarity index 97% rename from package/tests/testthat/_snaps/ael02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-adverse-events-ael02.md index b3a75b10f0..6953e5960c 100644 --- a/package/tests/testthat/_snaps/ael02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael02.md @@ -1,4 +1,4 @@ -# lsting +# listings/adverse-events/ael02.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ael02_ed/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael02_ed.md similarity index 97% rename from package/tests/testthat/_snaps/ael02_ed/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-adverse-events-ael02_ed.md index a7020f4a23..e3cb0ff1c2 100644 --- a/package/tests/testthat/_snaps/ael02_ed/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael02_ed.md @@ -1,4 +1,4 @@ -# lsting +# listings/adverse-events/ael02_ed.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ael03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael03.md similarity index 97% rename from package/tests/testthat/_snaps/ael03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-adverse-events-ael03.md index 67530e6c4a..a65bcc03ff 100644 --- a/package/tests/testthat/_snaps/ael03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael03.md @@ -1,4 +1,4 @@ -# lsting +# listings/adverse-events/ael03.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ael04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael04.md similarity index 96% rename from package/tests/testthat/_snaps/ael04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-adverse-events-ael04.md index 0eb8e836c3..4f3065cae7 100644 --- a/package/tests/testthat/_snaps/ael04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-adverse-events-ael04.md @@ -1,4 +1,4 @@ -# lsting +# listings/adverse-events/ael04.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cml01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml01.md similarity index 97% rename from package/tests/testthat/_snaps/cml01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml01.md index fb83a5479a..0346d65931 100644 --- a/package/tests/testthat/_snaps/cml01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml01.md @@ -1,4 +1,4 @@ -# lsting +# listings/concomitant-medications/cml01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cml02a_gl/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml02a_gl.md similarity index 94% rename from package/tests/testthat/_snaps/cml02a_gl/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml02a_gl.md index a0a045d248..81d00fe353 100644 --- a/package/tests/testthat/_snaps/cml02a_gl/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml02a_gl.md @@ -1,4 +1,4 @@ -# lsting +# listings/concomitant-medications/cml02a_gl.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cml02b_gl/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml02b_gl.md similarity index 96% rename from package/tests/testthat/_snaps/cml02b_gl/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml02b_gl.md index e65f67ed2d..c71e37c301 100644 --- a/package/tests/testthat/_snaps/cml02b_gl/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-concomitant-medications-cml02b_gl.md @@ -1,4 +1,4 @@ -# lsting +# listings/concomitant-medications/cml02b_gl.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dsur4/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-development-safety-update-report-dsur4.md similarity index 91% rename from package/tests/testthat/_snaps/dsur4/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-development-safety-update-report-dsur4.md index 5b76f0229f..8d580e9c21 100644 --- a/package/tests/testthat/_snaps/dsur4/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-development-safety-update-report-dsur4.md @@ -1,4 +1,4 @@ -# lsting +# listings/development-safety-update-report/dsur4.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dsl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-disposition-dsl01.md similarity index 96% rename from package/tests/testthat/_snaps/dsl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-disposition-dsl01.md index 633a3a7ba9..25a979b3b2 100644 --- a/package/tests/testthat/_snaps/dsl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-disposition-dsl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/disposition/dsl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dsl02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-disposition-dsl02.md similarity index 85% rename from package/tests/testthat/_snaps/dsl02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-disposition-dsl02.md index a4ef1ced21..2af1a756ec 100644 --- a/package/tests/testthat/_snaps/dsl02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-disposition-dsl02.md @@ -1,4 +1,4 @@ -# lsting +# listings/disposition/dsl02.qmd lsting stable Code print(data_snap[[i]]) @@ -13,8 +13,8 @@ 5 C: Combination CHN-11/id-91 44/M/BLACK OR AFRICAN AMERICAN SSADTM EOSDY SSAEDY RANDEDY DCSREAS - 1 2020-11-21 00:00:00 455 455 455 DEATH - 2 2021-01-26 00:00:00 388 388 388 DEATH + 1 2020-11-22 00:00:00 455 454 455 DEATH + 2 2021-01-27 00:00:00 388 387 388 DEATH 3 2019-10-02 00:00:00 865 864 868 DEATH 4 2020-03-10 00:00:00 705 705 707 LACK OF EFFICACY 5 2020-05-29 00:00:00 625 625 626 DEATH diff --git a/package/tests/testthat/_snaps/oncl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-efficacy-oncl01.md similarity index 98% rename from package/tests/testthat/_snaps/oncl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-efficacy-oncl01.md index 043194d0fd..8204997151 100644 --- a/package/tests/testthat/_snaps/oncl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-efficacy-oncl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/efficacy/oncl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/exl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-exposure-exl01.md similarity index 96% rename from package/tests/testthat/_snaps/exl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-exposure-exl01.md index 9573e17c97..b97ab79441 100644 --- a/package/tests/testthat/_snaps/exl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-exposure-exl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/exposure/exl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl01.md similarity index 97% rename from package/tests/testthat/_snaps/lbl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-lab-results-lbl01.md index 6dec87f6e0..899965131f 100644 --- a/package/tests/testthat/_snaps/lbl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/lab-results/lbl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbl01_rls/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl01_rls.md similarity index 95% rename from package/tests/testthat/_snaps/lbl01_rls/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-lab-results-lbl01_rls.md index ea7f946c67..688d0f03a8 100644 --- a/package/tests/testthat/_snaps/lbl01_rls/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl01_rls.md @@ -1,4 +1,4 @@ -# lsting +# listings/lab-results/lbl01_rls.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbl02a/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl02a.md similarity index 97% rename from package/tests/testthat/_snaps/lbl02a/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-lab-results-lbl02a.md index 036badf402..60b6fa9ac2 100644 --- a/package/tests/testthat/_snaps/lbl02a/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl02a.md @@ -1,4 +1,4 @@ -# lsting +# listings/lab-results/lbl02a.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbl02a_rls/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl02a_rls.md similarity index 97% rename from package/tests/testthat/_snaps/lbl02a_rls/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-lab-results-lbl02a_rls.md index 3eef204b10..ae7b7eb7af 100644 --- a/package/tests/testthat/_snaps/lbl02a_rls/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl02a_rls.md @@ -1,4 +1,4 @@ -# lsting +# listings/lab-results/lbl02a_rls.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbl02b/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl02b.md similarity index 97% rename from package/tests/testthat/_snaps/lbl02b/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-lab-results-lbl02b.md index 020489c21b..eac598d176 100644 --- a/package/tests/testthat/_snaps/lbl02b/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-lab-results-lbl02b.md @@ -1,4 +1,4 @@ -# lsting +# listings/lab-results/lbl02b.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/mhl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-medical-history-mhl01.md similarity index 97% rename from package/tests/testthat/_snaps/mhl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-medical-history-mhl01.md index ca1673f4e9..a349691a10 100644 --- a/package/tests/testthat/_snaps/mhl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-medical-history-mhl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/medical-history/mhl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkcl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkcl01.md similarity index 94% rename from package/tests/testthat/_snaps/pkcl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkcl01.md index cb0ff2a60c..f77a2ccc8e 100644 --- a/package/tests/testthat/_snaps/pkcl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkcl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/pharmacokinetic/pkcl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkcl02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkcl02.md similarity index 99% rename from package/tests/testthat/_snaps/pkcl02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkcl02.md index 609c1c1b45..f1f0fa555d 100644 --- a/package/tests/testthat/_snaps/pkcl02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkcl02.md @@ -1,4 +1,4 @@ -# lsting +# listings/pharmacokinetic/pkcl02.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl01.md similarity index 97% rename from package/tests/testthat/_snaps/pkpl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl01.md index 69366f6d74..a1c7abc996 100644 --- a/package/tests/testthat/_snaps/pkpl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/pharmacokinetic/pkpl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpl02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl02.md similarity index 97% rename from package/tests/testthat/_snaps/pkpl02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl02.md index 0ec7916af1..c5df009bc1 100644 --- a/package/tests/testthat/_snaps/pkpl02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl02.md @@ -1,4 +1,4 @@ -# lsting +# listings/pharmacokinetic/pkpl02.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpl04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl04.md similarity index 98% rename from package/tests/testthat/_snaps/pkpl04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl04.md index 514e63519a..d093323404 100644 --- a/package/tests/testthat/_snaps/pkpl04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-pharmacokinetic-pkpl04.md @@ -1,4 +1,4 @@ -# lsting +# listings/pharmacokinetic/pkpl04.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/vsl01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/listings-vital-signs-vsl01.md similarity index 98% rename from package/tests/testthat/_snaps/vsl01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/listings-vital-signs-vsl01.md index 28fa3d3b7d..3d4ec65f5c 100644 --- a/package/tests/testthat/_snaps/vsl01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/listings-vital-signs-vsl01.md @@ -1,4 +1,4 @@ -# lsting +# listings/vital-signs/vsl01.qmd lsting stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/adat01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ADA-adat01.md similarity index 63% rename from package/tests/testthat/_snaps/adat01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ADA-adat01.md index 7c9d7fa937..4bde192615 100644 --- a/package/tests/testthat/_snaps/adat01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ADA-adat01.md @@ -1,26 +1,26 @@ -# result_v1 +# tables/ADA/adat01.qmd result_v1 stable Code print(data_snap[[i]]) Output Baseline Prevalence and Incidence of Treatment Emergent ADA - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - A: Drug X C: Combination B: Placebo All Drug X - (N=134) (N=132) (N=0) (N=134) (N=266) - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - Baseline Prevalence of ADAs - Baseline evaluable patients 134 132 0 0 266 - Patient with a positive sample at baseline 63 (47.0%) 64 (48.5%) 0 0 127 (47.7%) - Patient with no positive samples at baseline 71 68 0 0 139 - Incidence of Treatment Emergent ADAs - Post-baseline evaluable patients 134 132 0 0 266 - Patient positive for Treatment Emergent ADA 0 0 0 0 0 - Treatment-induced ADA 0 0 0 0 0 - Treatment-enhanced ADA 0 0 0 0 0 - Patient negative for Treatment Emergent ADA 0 0 0 0 0 - Treatment unaffected 0 0 0 0 0 - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination B: Placebo All Drug X + (N=134) (N=132) (N=0) (N=134) (N=266) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Baseline Prevalence of ADAs + Baseline evaluable patients 134 132 0 0 266 + Patient with a positive sample at baseline 63 (47.0%) 64 (48.5%) 0 0 127 (47.7%) + Patient with no positive samples at baseline 71 68 0 0 139 + Incidence of Treatment Emergent ADAs + Post-baseline evaluable patients 134 132 0 0 266 + Patient positive for Treatment Emergent ADA 0 0 0 0 0 + Treatment-induced ADA 0 0 0 0 0 + Treatment-enhanced ADA 0 0 0 0 0 + Patient negative for Treatment Emergent ADA 0 0 0 0 0 + Treatment unaffected 0 0 0 0 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient = a patient with an ADA assay result from a baseline sample(s) Post-baseline evaluable patient = a patient with an ADA assay result from at least one post-baseline sample Number of patients positive for Treatment Emergent diff --git a/package/tests/testthat/_snaps/adat02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ADA-adat02.md similarity index 98% rename from package/tests/testthat/_snaps/adat02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ADA-adat02.md index e40d856a5f..d78f1366bc 100644 --- a/package/tests/testthat/_snaps/adat02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ADA-adat02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ADA/adat02.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/adat03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ADA-adat03.md similarity index 89% rename from package/tests/testthat/_snaps/adat03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ADA-adat03.md index e449f17c4b..372c5185a9 100644 --- a/package/tests/testthat/_snaps/adat03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ADA-adat03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ADA/adat03.qmd result_v1 stable Code print(data_snap[[i]]) @@ -24,11 +24,8 @@ Overall 1328 6.54 11.0 0 0 39.5 167.5 NA 997 (75.1%) β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - {1} - Refers to the total no. of measurable ADA samples that have a corresponding measurable drug concentration sample (i.e. results with - valid numeric values and LTRs). LTR results on post-dose samples are replaced by aaa Β΅g/mL i.e. half of MQC value. - {2} - In validation, the assay was able to detect yyy ng/mL of surrogate ADA in the presence of zzz Β΅g/mL of [drug]. BLQ = Below Limit of - Quantitation, LTR = Lower than Reportable, MQC = Minimum Quantifiable Concentration, ADA = Anti-Drug Antibodies (is also referred to as ATA, - or Anti-Therapeutic Antibodies). RXXXXXXX is also known as [drug] + {1} - Refers to the total no. of measurable ADA samples that have a corresponding measurable drug concentration sample (i.e. results with valid numeric values and LTRs). LTR results on post-dose samples are replaced by aaa Β΅g/mL i.e. half of MQC value. + {2} - In validation, the assay was able to detect yyy ng/mL of surrogate ADA in the presence of zzz Β΅g/mL of [drug]. BLQ = Below Limit of Quantitation, LTR = Lower than Reportable, MQC = Minimum Quantifiable Concentration, ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies). RXXXXXXX is also known as [drug] β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” diff --git a/package/tests/testthat/_snaps/adat04a/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ADA-adat04a.md similarity index 63% rename from package/tests/testthat/_snaps/adat04a/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ADA-adat04a.md index f64bebb211..bf1b2ad936 100644 --- a/package/tests/testthat/_snaps/adat04a/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ADA-adat04a.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ADA/adat04a.qmd result_v1 stable Code print(data_snap[[i]]) @@ -6,24 +6,24 @@ Baseline Prevalence and Incidence of Treatment Emergent NAbs Protocol: A: Drug X Antibody - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - A: Drug X C: Combination B: Placebo All Drug X - (N=134) (N=132) (N=0) (N=134) (N=266) - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - Baseline Prevalence of NAbs - Baseline evaluable patients for ADA 134 132 0 0 266 - Patients with a positive ADA sample at baseline 63 64 0 0 127 - Patients with a positive NAb sample at baseline 0 0 0 0 0 - Patient with no positive NAb samples at baseline 0 0 0 0 0 - Incidence of Treatment Emergent NAbs - Post-baseline evaluable patients for ADA 134 132 0 0 266 - Patients positive for ADA 66 59 0 0 125 - Patients positive for Treatment Emergent NAb 0 0 0 0 0 - Treatment-induced NAb 0 0 0 0 0 - Treatment-enhanced NAb 0 0 0 0 0 - Patients negative for NAb 0 0 0 0 0 - Treatment unaffected 0 0 0 0 0 - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination B: Placebo All Drug X + (N=134) (N=132) (N=0) (N=134) (N=266) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Baseline Prevalence of NAbs + Baseline evaluable patients for ADA 134 132 0 0 266 + Patients with a positive ADA sample at baseline 63 64 0 0 127 + Patients with a positive NAb sample at baseline 0 0 0 0 0 + Patient with no positive NAb samples at baseline 0 0 0 0 0 + Incidence of Treatment Emergent NAbs + Post-baseline evaluable patients for ADA 134 132 0 0 266 + Patients positive for ADA 66 59 0 0 125 + Patients positive for Treatment Emergent NAb 0 0 0 0 0 + Treatment-induced NAb 0 0 0 0 0 + Treatment-enhanced NAb 0 0 0 0 0 + Patients negative for NAb 0 0 0 0 0 + Treatment unaffected 0 0 0 0 0 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) diff --git a/package/tests/testthat/_snaps/adat04b/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ADA-adat04b.md similarity index 60% rename from package/tests/testthat/_snaps/adat04b/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ADA-adat04b.md index dbbbc5132c..9f33160c46 100644 --- a/package/tests/testthat/_snaps/adat04b/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ADA-adat04b.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ADA/adat04b.qmd result_v1 stable Code print(data_snap[[i]]) @@ -6,21 +6,21 @@ Baseline Prevalence and Incidence of Neutralizing Antibodies (NAbs) Protocol: A: Drug X Antibody - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - A: Drug X C: Combination B: Placebo All Drug X - (N=134) (N=132) (N=0) (N=134) (N=266) - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” - Baseline Prevalence of NAbs - Baseline evaluable patients for ADA 134 132 0 0 266 - Patients with a positive ADA sample at baseline 63 64 0 0 127 - Patients with a positive NAb sample at baseline 0 0 0 0 0 - Patients with no positive NAb sample at baseline 0 0 0 0 0 - Incidence of NAbs - Post-baseline evaluable patients for ADA 134 132 0 0 266 - Patients positive for ADA 66 59 0 0 125 - Patients positive for NAb 0 0 0 0 0 - Patients negative for NAb 134 132 0 0 266 - β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + A: Drug X C: Combination B: Placebo All Drug X + (N=134) (N=132) (N=0) (N=134) (N=266) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + Baseline Prevalence of NAbs + Baseline evaluable patients for ADA 134 132 0 0 266 + Patients with a positive ADA sample at baseline 63 64 0 0 127 + Patients with a positive NAb sample at baseline 0 0 0 0 0 + Patients with no positive NAb sample at baseline 0 0 0 0 0 + Incidence of NAbs + Post-baseline evaluable patients for ADA 134 132 0 0 266 + Patients positive for ADA 66 59 0 0 125 + Patients positive for NAb 0 0 0 0 0 + Patients negative for NAb 134 132 0 0 266 + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” NAb = Neutralizing Antibodies ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient for ADA = a patient with an ADA assay result from a baseline sample(s) Baseline evaluable patient for NAb = a patient with a NAb assay result from a baseline sample(s) Post-baseline evaluable patient for ADA = a patient with an ADA assay result from at least one post-baseline sample Post-baseline evaluable patient for NAb = a patient with a NAb assay result from at least one post-baseline sample Number of patients positive for ADA = the number of post-baseline evaluable patients for ADA determined to have Treatment Emergent ADA during the study period. Number of patients positive for NAb = the number (and percentage) of post-baseline evaluable patients for ADA determined to have at least one positive post-baseline NAb result during the study period. Number of patients negative for NAb = number of post-baseline evaluable patients with all negative post-baseline NAb results. diff --git a/package/tests/testthat/_snaps/egt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ECG-egt01.md similarity index 99% rename from package/tests/testthat/_snaps/egt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ECG-egt01.md index 987e913bac..016d0d4ad1 100644 --- a/package/tests/testthat/_snaps/egt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ECG-egt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ECG/egt01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/egt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ECG-egt02.md similarity index 96% rename from package/tests/testthat/_snaps/egt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ECG-egt02.md index dc313515c5..5a998a7555 100644 --- a/package/tests/testthat/_snaps/egt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ECG-egt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ECG/egt02.qmd result_v1 stable Code print(data_snap[[i]]) @@ -16,7 +16,7 @@ Low 45/134 (33.6%) 26/134 (19.4%) 38/132 (28.8%) High 29/134 (21.6%) 49/134 (36.6%) 27/132 (20.5%) -# result_v2 +# tables/ECG/egt02.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/egt03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ECG-egt03.md similarity index 97% rename from package/tests/testthat/_snaps/egt03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ECG-egt03.md index 212ab4b376..c996ed1f1f 100644 --- a/package/tests/testthat/_snaps/egt03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ECG-egt03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ECG/egt03.qmd result_v1 stable Code print(data_snap[[i]]) @@ -22,7 +22,7 @@ HIGH 1 (0.8%) 8 (6.1%) 0 1 (0.8%) Missing 1 (0.8%) 0 0 0 -# result_v2 +# tables/ECG/egt03.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/egt04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ECG-egt04.md similarity index 96% rename from package/tests/testthat/_snaps/egt04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ECG-egt04.md index 8e0579a483..e0e78bdf44 100644 --- a/package/tests/testthat/_snaps/egt04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ECG-egt04.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ECG/egt04.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/egt05_qtcat/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-ECG-egt05_qtcat.md similarity index 99% rename from package/tests/testthat/_snaps/egt05_qtcat/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-ECG-egt05_qtcat.md index 635fba2bb9..e1f5629341 100644 --- a/package/tests/testthat/_snaps/egt05_qtcat/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-ECG-egt05_qtcat.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/ECG/egt05_qtcat.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet01.md similarity index 98% rename from package/tests/testthat/_snaps/aet01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet01.md index bcee06b6ad..602a12056d 100644 --- a/package/tests/testthat/_snaps/aet01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -23,7 +23,7 @@ Related AE leading to dose modification/interruption 44 (32.8%) 44 (32.8%) 51 (38.6%) Severe AE (at greatest intensity) 77 (57.5%) 70 (52.2%) 79 (59.8%) -# result_v2 +# tables/adverse-events/aet01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -52,7 +52,7 @@ SMQ 02 Reference Name 0 0 0 D.2.1.5.3/A.1.1.1.1 AESI 62 (46.3%) 61 (45.5%) 76 (57.6%) -# result_v3 +# tables/adverse-events/aet01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -73,7 +73,7 @@ Grade 3-5 AE 90 (67.2%) 83 (61.9%) 93 (70.5%) Grade 4/5 AE 77 (57.5%) 70 (52.2%) 79 (59.8%) -# result_v4 +# tables/adverse-events/aet01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet01_aesi/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet01_aesi.md similarity index 98% rename from package/tests/testthat/_snaps/aet01_aesi/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet01_aesi.md index 4c54810785..019f9966a7 100644 --- a/package/tests/testthat/_snaps/aet01_aesi/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet01_aesi.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet01_aesi.qmd result_v1 stable Code print(data_snap[[i]]) @@ -22,7 +22,7 @@ Total number of patients with at least one serious AE 85 (63.4%) 80 (59.7%) 87 (65.9%) Total number of patients with at least one related AE 86 (64.2%) 85 (63.4%) 92 (69.7%) -# result_v2 +# tables/adverse-events/aet01_aesi.qmd result_v2 stable Code print(data_snap[[i]]) @@ -59,7 +59,7 @@ No. of patients with treatment received for related AE 53 (39.6%) 58 (43.3%) 60 (45.5%) No. of patients with serious, related AE 64 (47.8%) 52 (38.8%) 64 (48.5%) -# result_v3 +# tables/adverse-events/aet01_aesi.qmd result_v3 stable Code print(data_snap[[i]]) @@ -113,7 +113,7 @@ No. of patients with treatment received for AE related to study drug 2 53 (39.6%) 58 (43.3%) 60 (45.5%) No. of patients with serious AE related to study drug 2 64 (47.8%) 52 (38.8%) 64 (48.5%) -# result_v4 +# tables/adverse-events/aet01_aesi.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet02.md similarity index 98% rename from package/tests/testthat/_snaps/aet02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet02.md index 97af9dae32..15fcbb467b 100644 --- a/package/tests/testthat/_snaps/aet02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet02.qmd result_v1 stable Code print(data_snap[[i]]) @@ -40,7 +40,7 @@ Total number of events 49 57 65 171 dcd D.2.1.5.3 37 (27.6%) 46 (34.3%) 50 (37.9%) 133 (33.2%) -# result_v2 +# tables/adverse-events/aet02.qmd result_v2 stable Code print(data_snap[[i]]) @@ -82,7 +82,7 @@ Total number of events 47 51 54 152 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) -# result_v3 +# tables/adverse-events/aet02.qmd result_v3 stable Code print(data_snap[[i]]) @@ -124,7 +124,7 @@ dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) 106 (26.5%) Total number of events 47 51 54 152 -# result_v4 +# tables/adverse-events/aet02.qmd result_v4 stable Code print(data_snap[[i]]) @@ -194,7 +194,7 @@ Total number of events 47 51 54 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v5 +# tables/adverse-events/aet02.qmd result_v5 stable Code print(data_snap[[i]]) @@ -215,7 +215,7 @@ dcd B.1.1.1.1 38 (28.4%) 37 (27.6%) 36 (27.3%) dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v6 +# tables/adverse-events/aet02.qmd result_v6 stable Code print(data_snap[[i]]) @@ -257,7 +257,7 @@ Total number of events 39 40 0 dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 0 -# result_v7 +# tables/adverse-events/aet02.qmd result_v7 stable Code print(data_snap[[i]]) @@ -283,7 +283,7 @@ cl C.1 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v8 +# tables/adverse-events/aet02.qmd result_v8 stable Code print(data_snap[[i]]) @@ -319,7 +319,7 @@ hlt C.1.1.1 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v9 +# tables/adverse-events/aet02.qmd result_v9 stable Code print(data_snap[[i]]) @@ -345,7 +345,7 @@ cl C.1 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v10 +# tables/adverse-events/aet02.qmd result_v10 stable Code print(data_snap[[i]]) @@ -371,7 +371,7 @@ cl C.1 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v11 +# tables/adverse-events/aet02.qmd result_v11 stable Code print(data_snap[[i]]) @@ -391,7 +391,7 @@ cl C.2 dcd C.2.1.2.1 28 (20.9%) 36 (26.9%) 48 (36.4%) -# result_v12 +# tables/adverse-events/aet02.qmd result_v12 stable Code print(data_snap[[i]]) @@ -417,7 +417,7 @@ cl C.1 dcd C.1.1.1.3 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v13 +# tables/adverse-events/aet02.qmd result_v13 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet02_smq/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet02_smq.md similarity index 96% rename from package/tests/testthat/_snaps/aet02_smq/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet02_smq.md index 46860b7bef..c0061dbbc4 100644 --- a/package/tests/testthat/_snaps/aet02_smq/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet02_smq.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet02_smq.qmd result_v1 stable Code print(data_snap[[i]]) @@ -13,7 +13,7 @@ dcd B.2.2.3.1 48 (35.8%) 54 (40.3%) 51 (38.6%) dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) -# result_v2 +# tables/adverse-events/aet02_smq.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet03.md similarity index 99% rename from package/tests/testthat/_snaps/aet03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet03.md index 12086f0dfc..0c9031a511 100644 --- a/package/tests/testthat/_snaps/aet03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet03.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet04.md similarity index 99% rename from package/tests/testthat/_snaps/aet04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet04.md index 72c4924a7e..f746ca5140 100644 --- a/package/tests/testthat/_snaps/aet04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet04.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet04.qmd result_v1 stable Code print(data_snap[[i]]) @@ -93,7 +93,7 @@ Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) 4 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v2 +# tables/adverse-events/aet04.qmd result_v2 stable Code print(data_snap[[i]]) @@ -188,7 +188,7 @@ Grade 1-2 28 (20.9%) 0 0 2 28 (20.9%) 0 0 -# result_v3 +# tables/adverse-events/aet04.qmd result_v3 stable Code print(data_snap[[i]]) @@ -367,7 +367,7 @@ 4 36 (26.9%) 34 (25.4%) 36 (27.3%) Grade 5 0 0 0 -# result_v4 +# tables/adverse-events/aet04.qmd result_v4 stable Code print(data_snap[[i]]) @@ -465,7 +465,7 @@ Grade 3-5 36 (26.9%) 34 (25.4%) 36 (27.3%) 4 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v6 +# tables/adverse-events/aet04.qmd result_v6 stable Code print(data_snap[[i]]) @@ -560,7 +560,7 @@ Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) 4 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v8 +# tables/adverse-events/aet04.qmd result_v8 stable Code print(data_snap[[i]]) @@ -655,7 +655,7 @@ Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) 4 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v9 +# tables/adverse-events/aet04.qmd result_v9 stable Code print(data_snap[[i]]) @@ -750,7 +750,7 @@ Grade 3-4 36 (26.9%) 34 (25.4%) 36 (27.3%) 4 36 (26.9%) 34 (25.4%) 36 (27.3%) -# result_v11 +# tables/adverse-events/aet04.qmd result_v11 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet04_pi/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet04_pi.md similarity index 98% rename from package/tests/testthat/_snaps/aet04_pi/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet04_pi.md index c5e82f67e5..e8838765b1 100644 --- a/package/tests/testthat/_snaps/aet04_pi/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet04_pi.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet04_pi.qmd result_v1 stable Code print(data_snap[[i]]) @@ -25,7 +25,7 @@ cl C.1 dcd C.1.1.1.3 32 32 0 34 34 0 33 33 0 -# result_v2 +# tables/adverse-events/aet04_pi.qmd result_v2 stable Code print(data_snap[[i]]) @@ -39,7 +39,7 @@ cl D.1 dcd D.1.1.1.1 37 0 37 31 0 31 39 0 39 -# result_v3 +# tables/adverse-events/aet04_pi.qmd result_v3 stable Code print(data_snap[[i]]) @@ -57,7 +57,7 @@ cl C.2 dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 -# result_v4 +# tables/adverse-events/aet04_pi.qmd result_v4 stable Code print(data_snap[[i]]) @@ -69,7 +69,7 @@ cl C.2 dcd C.2.1.2.1 26 0 0 36 0 0 42 0 0 -# result_v5 +# tables/adverse-events/aet04_pi.qmd result_v5 stable Code print(data_snap[[i]]) @@ -92,7 +92,7 @@ cl C.1 dcd C.1.1.1.3 32 32 0 34 34 0 33 33 0 -# result_v6 +# tables/adverse-events/aet04_pi.qmd result_v6 stable Code print(data_snap[[i]]) @@ -110,7 +110,7 @@ cl C.2 dcd C.2.1.2.1 26 26 0 0 36 36 0 0 42 42 0 0 -# result_v7 +# tables/adverse-events/aet04_pi.qmd result_v7 stable Code print(data_snap[[i]]) @@ -128,7 +128,7 @@ cl C.2 dcd C.2.1.2.1 26 0 0 0 36 0 0 0 42 0 0 0 -# result_v8 +# tables/adverse-events/aet04_pi.qmd result_v8 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet05/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet05.md similarity index 94% rename from package/tests/testthat/_snaps/aet05/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet05.md index 308babb9e1..008c982bbc 100644 --- a/package/tests/testthat/_snaps/aet05/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet05.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet05.qmd result_v1 stable Code print(data_snap[[i]]) @@ -11,7 +11,7 @@ AE rate per 100 patient-years 48.03 100.14 38.82 95% CI (37.37, 58.69) (80.89, 119.38) (29.53, 48.12) -# result_v2 +# tables/adverse-events/aet05.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet05_all/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet05_all.md similarity index 94% rename from package/tests/testthat/_snaps/aet05_all/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet05_all.md index d188acc9f4..ae171afc53 100644 --- a/package/tests/testthat/_snaps/aet05_all/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet05_all.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet05_all.qmd result_v1 stable Code print(data_snap[[i]]) @@ -11,7 +11,7 @@ AE rate per 100 patient-years 101.51 114.51 116.22 95% CI (90.77, 112.25) (103.00, 126.02) (104.79, 127.65) -# result_v2 +# tables/adverse-events/aet05_all.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet06/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet06.md similarity index 99% rename from package/tests/testthat/_snaps/aet06/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet06.md index a548496ccc..653e82321d 100644 --- a/package/tests/testthat/_snaps/aet06/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet06.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet06.qmd result_v1 stable Code print(data_snap[[i]]) @@ -41,7 +41,7 @@ Total number of events 39 16 52 11 44 20 dcd C.1.1.1.3 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) -# result_v2 +# tables/adverse-events/aet06.qmd result_v2 stable Code print(data_snap[[i]]) @@ -84,7 +84,7 @@ Total number of events 21 19 15 24 23 16 18 29 17 dcd C.1.1.1.3 17 (34.0%) 14 (37.8%) 12 (25.5%) 17 (37.8%) 17 (30.4%) 12 (36.4%) 12 (30.0%) 17 (40.5%) 14 (28.0%) -# result_v3 +# tables/adverse-events/aet06.qmd result_v3 stable Code print(data_snap[[i]]) @@ -127,7 +127,7 @@ Total number of events 14 7 4 30 20 7 1 35 8 12 9 35 dcd C.1.1.1.3 11 (25.0%) 4 (23.5%) 4 (36.4%) 24 (38.7%) 13 (35.1%) 6 (33.3%) 1 (10.0%) 26 (37.7%) 6 (21.4%) 7 (35.0%) 6 (33.3%) 24 (36.4%) -# result_v4 +# tables/adverse-events/aet06.qmd result_v4 stable Code print(data_snap[[i]]) @@ -170,7 +170,7 @@ Total number of events 5 50 18 45 13 51 dcd C.1.1.1.3 5 (18.5%) 38 (35.5%) 13 (50.0%) 33 (30.6%) 8 (38.1%) 35 (31.5%) -# result_v5 +# tables/adverse-events/aet06.qmd result_v5 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet06_smq/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet06_smq.md similarity index 97% rename from package/tests/testthat/_snaps/aet06_smq/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet06_smq.md index 679e824db3..e464b37ada 100644 --- a/package/tests/testthat/_snaps/aet06_smq/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet06_smq.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet06_smq.qmd result_v1 stable Code print(data_snap[[i]]) @@ -14,7 +14,7 @@ dcd B.2.2.3.1 30 (38.0%) 18 (32.7%) 32 (39.0%) 22 (42.3%) 26 (37.1%) 25 (40.3%) dcd C.1.1.1.3 30 (38.0%) 13 (23.6%) 36 (43.9%) 10 (19.2%) 27 (38.6%) 16 (25.8%) -# result_v2 +# tables/adverse-events/aet06_smq.qmd result_v2 stable Code print(data_snap[[i]]) @@ -38,7 +38,7 @@ Total number of patients with at least one adverse event 0 0 0 0 0 0 Total number of events 0 0 0 0 0 0 -# result_v3 +# tables/adverse-events/aet06_smq.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet07/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet07.md similarity index 92% rename from package/tests/testthat/_snaps/aet07/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet07.md index 2b66cb1136..159e21b682 100644 --- a/package/tests/testthat/_snaps/aet07/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet07.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet07.qmd result_v1 stable Code print(data_snap[[i]]) @@ -10,7 +10,7 @@ cl D.1 / dcd D.1.1.1.1 42 (31.3%) 51 (38.6%) cl B.1 / dcd B.1.1.1.1 49 (36.6%) 43 (32.6%) -# result_v2 +# tables/adverse-events/aet07.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet09/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet09.md similarity index 98% rename from package/tests/testthat/_snaps/aet09/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet09.md index 4fe1c30e6e..a219cb3c3d 100644 --- a/package/tests/testthat/_snaps/aet09/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet09.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet09.qmd result_v1 stable Code print(data_snap[[i]]) @@ -29,7 +29,7 @@ Total number of events related to study drug 55 63 64 182 dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) 132 (33.0%) -# result_v2 +# tables/adverse-events/aet09.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet09_smq/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet09_smq.md similarity index 96% rename from package/tests/testthat/_snaps/aet09_smq/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet09_smq.md index 29e94b4628..98e2c99d00 100644 --- a/package/tests/testthat/_snaps/aet09_smq/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet09_smq.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet09_smq.qmd result_v1 stable Code print(data_snap[[i]]) @@ -12,7 +12,7 @@ Total number of events 55 63 64 dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) -# result_v2 +# tables/adverse-events/aet09_smq.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aet10/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet10.md similarity index 95% rename from package/tests/testthat/_snaps/aet10/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-adverse-events-aet10.md index 05f87849ed..c55555db05 100644 --- a/package/tests/testthat/_snaps/aet10/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-adverse-events-aet10.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/adverse-events/aet10.qmd result_v1 stable Code print(data_snap[[i]]) @@ -17,7 +17,7 @@ dcd C.2.1.2.1 35 (26.1%) 48 (35.8%) 55 (41.7%) 138 (34.5%) dcd C.1.1.1.3 43 (32.1%) 46 (34.3%) 43 (32.6%) 132 (33.0%) -# result_v2 +# tables/adverse-events/aet10.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cmt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01.md similarity index 97% rename from package/tests/testthat/_snaps/cmt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01.md index a057a02100..bc907b0e75 100644 --- a/package/tests/testthat/_snaps/cmt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/concomitant-medications/cmt01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -24,7 +24,7 @@ medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) -# result_v2 +# tables/concomitant-medications/cmt01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -44,7 +44,7 @@ medname B_2/4 52 (38.8%) 55 (41.0%) 56 (42.4%) medname B_3/4 47 (35.1%) 47 (35.1%) 52 (39.4%) -# result_v3 +# tables/concomitant-medications/cmt01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -67,7 +67,7 @@ medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) medname C_1/2 51 (38.1%) 50 (37.3%) 56 (42.4%) -# result_v4 +# tables/concomitant-medications/cmt01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cmt01a/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01a.md similarity index 98% rename from package/tests/testthat/_snaps/cmt01a/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01a.md index c201af271f..da84344603 100644 --- a/package/tests/testthat/_snaps/cmt01a/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01a.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/concomitant-medications/cmt01a.qmd result_v1 stable Code print(data_snap[[i]]) @@ -45,7 +45,7 @@ Total number of treatments 69 73 80 medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) -# result_v2 +# tables/concomitant-medications/cmt01a.qmd result_v2 stable Code print(data_snap[[i]]) @@ -92,7 +92,7 @@ Total number of treatments 69 73 80 medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) -# result_v3 +# tables/concomitant-medications/cmt01a.qmd result_v3 stable Code print(data_snap[[i]]) @@ -139,7 +139,7 @@ Total number of treatments 58 66 64 medname A_3/3 45 (33.6%) 54 (40.3%) 48 (36.4%) -# result_v4 +# tables/concomitant-medications/cmt01a.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cmt01b/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01b.md similarity index 99% rename from package/tests/testthat/_snaps/cmt01b/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01b.md index 6c2b6f3716..3b0544f7e3 100644 --- a/package/tests/testthat/_snaps/cmt01b/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt01b.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/concomitant-medications/cmt01b.qmd result_v1 stable Code print(data_snap[[i]]) @@ -72,7 +72,7 @@ Total number of treatments 69 73 80 medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) -# result_v2 +# tables/concomitant-medications/cmt01b.qmd result_v2 stable Code print(data_snap[[i]]) @@ -128,7 +128,7 @@ Total number of treatments 69 73 80 medname C_2/2 52 (38.8%) 58 (43.3%) 60 (45.5%) -# result_v4 +# tables/concomitant-medications/cmt01b.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cmt02_pt/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt02_pt.md similarity index 96% rename from package/tests/testthat/_snaps/cmt02_pt/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt02_pt.md index 85529b019d..3d42a84d8e 100644 --- a/package/tests/testthat/_snaps/cmt02_pt/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-concomitant-medications-cmt02_pt.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/concomitant-medications/cmt02_pt.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dtht01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-deaths-dtht01.md similarity index 97% rename from package/tests/testthat/_snaps/dtht01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-deaths-dtht01.md index e997719f29..a7126e3c7c 100644 --- a/package/tests/testthat/_snaps/dtht01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-deaths-dtht01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/deaths/dtht01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -13,7 +13,7 @@ PROGRESSIVE DISEASE 8 (32%) 6 (26.1%) 6 (27.3%) 20 (28.6%) OTHER 8 (32%) 10 (43.5%) 6 (27.3%) 24 (34.3%) -# result_v2 +# tables/deaths/dtht01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -48,7 +48,7 @@ PROGRESSIVE DISEASE 2 (18.2%) 3 (25%) 2 (25%) 7 (22.6%) OTHER 4 (36.4%) 4 (33.3%) 2 (25%) 10 (32.3%) -# result_v3 +# tables/deaths/dtht01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -65,7 +65,7 @@ Post-study reportings of death 1 (12.5%) 2 (20.0%) 1 (16.7%) 4 (16.7%) All other causes 7 (87.5%) 8 (80.0%) 5 (83.3%) 20 (83.3%) -# result_v4 +# tables/deaths/dtht01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dmt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-demography-dmt01.md similarity index 98% rename from package/tests/testthat/_snaps/dmt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-demography-dmt01.md index 3f73b98326..740f5d30f3 100644 --- a/package/tests/testthat/_snaps/dmt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-demography-dmt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/demography/dmt01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -42,7 +42,7 @@ Median 5.4 4.8 4.6 4.8 Min - Max 0.4 - 17.7 0.6 - 14.2 0.2 - 21.4 0.2 - 21.4 -# result_v2 +# tables/demography/dmt01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -86,7 +86,7 @@ MEDIUM 84 (62.7%) 76 (56.7%) 80 (60.6%) HIGH 17 (12.7%) 17 (12.7%) 14 (10.6%) -# result_v3 +# tables/demography/dmt01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -129,7 +129,7 @@ Median 5.8 5.6 4.5 Min - Max 0.5 - 15.1 1.5 - 13.9 1.2 - 21.4 -# result_v4 +# tables/demography/dmt01.qmd result_v4 stable Code print(data_snap[[i]]) @@ -167,7 +167,7 @@ Median 150.1 153.0 146.5 Min - Max 69.1 - 231.2 87.2 - 220.9 71.8 - 220.2 -# result_v5 +# tables/demography/dmt01.qmd result_v5 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/disclosurest01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-disclosures-disclosurest01.md similarity index 97% rename from package/tests/testthat/_snaps/disclosurest01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-disclosures-disclosurest01.md index e0da639b57..98ecc3de9f 100644 --- a/package/tests/testthat/_snaps/disclosurest01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-disclosures-disclosurest01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/disclosures/disclosurest01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -15,7 +15,7 @@ Protocol Violation 4 (26.7%) 4 (14.3%) 4 (16.7%) 12 (17.9%) Withdrawal By Subject 2 (13.3%) 10 (35.7%) 3 (12.5%) 15 (22.4%) -# result_v2 +# tables/disclosures/disclosurest01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -54,7 +54,7 @@ NOT REPORTED 6 (4.5%) 10 (7.5%) 11 (8.3%) 27 (6.8%) UNKNOWN 9 (6.7%) 3 (2.2%) 5 (3.8%) 17 (4.2%) -# result_v3 +# tables/disclosures/disclosurest01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -73,7 +73,7 @@ GBR 4 (3%) 3 (2.2%) 2 (1.5%) 9 (2.2%) CAN 3 (2.2%) 2 (1.5%) 3 (2.3%) 8 (2%) -# result_v4 +# tables/disclosures/disclosurest01.qmd result_v4 stable Code print(data_snap[[i]]) @@ -95,7 +95,7 @@ cl D.2 dcd D.2.1.5.3 47 62 58 72 57 74 -# result_v5 +# tables/disclosures/disclosurest01.qmd result_v5 stable Code print(data_snap[[i]]) @@ -113,7 +113,7 @@ cl D.1 dcd D.1.1.1.1 50 61 61 61 61 -# result_v6 +# tables/disclosures/disclosurest01.qmd result_v6 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/eudrat01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-disclosures-eudrat01.md similarity index 98% rename from package/tests/testthat/_snaps/eudrat01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-disclosures-eudrat01.md index db49e70f11..6424974b0e 100644 --- a/package/tests/testthat/_snaps/eudrat01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-disclosures-eudrat01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/disclosures/eudrat01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/eudrat02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-disclosures-eudrat02.md similarity index 97% rename from package/tests/testthat/_snaps/eudrat02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-disclosures-eudrat02.md index ee86c79c88..1c661890c2 100644 --- a/package/tests/testthat/_snaps/eudrat02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-disclosures-eudrat02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/disclosures/eudrat02.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dst01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-disposition-dst01.md similarity index 97% rename from package/tests/testthat/_snaps/dst01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-disposition-dst01.md index fe8529e19d..59ce732f83 100644 --- a/package/tests/testthat/_snaps/dst01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-disposition-dst01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/disposition/dst01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -17,7 +17,7 @@ WITHDRAWAL BY PARENT/GUARDIAN 4 (3%) 2 (1.5%) 1 (0.8%) 7 (1.8%) WITHDRAWAL BY SUBJECT 1 (0.7%) 1 (0.7%) 1 (0.8%) 3 (0.8%) -# result_v2 +# tables/disposition/dst01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -38,7 +38,7 @@ WITHDRAWAL BY PARENT/GUARDIAN 4 (3%) 2 (1.5%) 1 (0.8%) 7 (1.8%) WITHDRAWAL BY SUBJECT 1 (0.7%) 1 (0.7%) 1 (0.8%) 3 (0.8%) -# result_v3 +# tables/disposition/dst01.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pdt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-disposition-pdt01.md similarity index 98% rename from package/tests/testthat/_snaps/pdt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-disposition-pdt01.md index 31a8c4cdac..460c99aafe 100644 --- a/package/tests/testthat/_snaps/pdt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-disposition-pdt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/disposition/pdt01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pdt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-disposition-pdt02.md similarity index 97% rename from package/tests/testthat/_snaps/pdt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-disposition-pdt02.md index 075944b70b..5fb2e1320d 100644 --- a/package/tests/testthat/_snaps/pdt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-disposition-pdt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/disposition/pdt02.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aovt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-aovt01.md similarity index 98% rename from package/tests/testthat/_snaps/aovt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-aovt01.md index 3d2b1ab1d0..545e82a5cc 100644 --- a/package/tests/testthat/_snaps/aovt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-aovt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/aovt01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aovt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-aovt02.md similarity index 97% rename from package/tests/testthat/_snaps/aovt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-aovt02.md index 52244814ab..8d7f1e7da4 100644 --- a/package/tests/testthat/_snaps/aovt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-aovt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/aovt02.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/aovt03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-aovt03.md similarity index 98% rename from package/tests/testthat/_snaps/aovt03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-aovt03.md index 052246e3d5..2f00f0257f 100644 --- a/package/tests/testthat/_snaps/aovt03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-aovt03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/aovt03.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cfbt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-cfbt01.md similarity index 99% rename from package/tests/testthat/_snaps/cfbt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-cfbt01.md index 9d3f274a0c..bc577e53be 100644 --- a/package/tests/testthat/_snaps/cfbt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-cfbt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/cfbt01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/cmht01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-cmht01.md similarity index 99% rename from package/tests/testthat/_snaps/cmht01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-cmht01.md index 0e33af4055..35a21c13be 100644 --- a/package/tests/testthat/_snaps/cmht01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-cmht01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/cmht01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -19,7 +19,7 @@ p-value (Cochran-Mantel-Haenszel Test) 0.6397 0.7952 Odds Ratio (95% CI) 1.12 (0.68 - 1.83) 0.99 (0.60 - 1.64) -# result_v2 +# tables/efficacy/cmht01.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/coxt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-coxt01.md similarity index 97% rename from package/tests/testthat/_snaps/coxt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-coxt01.md index 54be06e0d9..88a187c781 100644 --- a/package/tests/testthat/_snaps/coxt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-coxt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/coxt01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -13,7 +13,7 @@ Sex 247 0.98 (0.67, 1.43) 0.8970 Race 247 0.98 (0.67, 1.44) 0.9239 -# result_v2 +# tables/efficacy/coxt01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -31,7 +31,7 @@ BLACK OR AFRICAN AMERICAN 1.08 (0.51, 2.29) WHITE 0.67 (0.27, 1.71) -# result_v3 +# tables/efficacy/coxt01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -50,7 +50,7 @@ F 0.77 (0.47, 1.27) M 1.38 (0.75, 2.52) -# result_v4 +# tables/efficacy/coxt01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/coxt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-coxt02.md similarity index 95% rename from package/tests/testthat/_snaps/coxt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-coxt02.md index 01925a4ee2..c001ac0663 100644 --- a/package/tests/testthat/_snaps/coxt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-coxt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/coxt02.qmd result_v1 stable Code print(data_snap[[i]]) @@ -15,7 +15,7 @@ Age All 0.99 (0.97, 1.01) 0.5104 -# result_v2 +# tables/efficacy/coxt02.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/dort01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-dort01.md similarity index 97% rename from package/tests/testthat/_snaps/dort01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-dort01.md index 99a43e40d0..f4a5f66723 100644 --- a/package/tests/testthat/_snaps/dort01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-dort01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/dort01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -22,7 +22,7 @@ Event Free Rate (%) NA NA NA 95% CI NA NA NA -# result_v2 +# tables/efficacy/dort01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -46,7 +46,7 @@ Hazard Ratio 0.60 0.90 95% CI (0.39, 0.93) (0.57, 1.44) -# result_v3 +# tables/efficacy/dort01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -70,7 +70,7 @@ Event Free Rate (%) NA NA NA 97.5% CI NA NA NA -# result_v4 +# tables/efficacy/dort01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lgrt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-lgrt02.md similarity index 98% rename from package/tests/testthat/_snaps/lgrt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-lgrt02.md index 36928d0ff3..bdd51e55cf 100644 --- a/package/tests/testthat/_snaps/lgrt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-lgrt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/lgrt02.qmd result_v1 stable Code print(data_snap[[i]]) @@ -15,7 +15,7 @@ Age Age 1 0.070 0.054 1.07 (0.97, 1.19) 0.1945 -# result_v2 +# tables/efficacy/lgrt02.qmd result_v2 stable Code print(data_snap[[i]]) @@ -46,7 +46,7 @@ ARM B * F, n = 82 1 16.373 2362.767 0.9945 ARM C * F, n = 70 1 32.492 3156.732 0.9918 -# result_v3 +# tables/efficacy/lgrt02.qmd result_v3 stable Code print(data_snap[[i]]) @@ -70,7 +70,7 @@ MULTIPLE, n = 1 1 -0.363 10941.553 0.70 (0.00, >999.99) 1.0000 NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER, n = 1 1 1.036 10941.553 2.82 (0.00, >999.99) 0.9999 -# result_v4 +# tables/efficacy/lgrt02.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/mmrmt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-mmrmt01.md similarity index 89% rename from package/tests/testthat/_snaps/mmrmt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-mmrmt01.md index 00f8edcc70..b197682aed 100644 --- a/package/tests/testthat/_snaps/mmrmt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-mmrmt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/mmrmt01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -13,7 +13,7 @@ Difference in Adjusted Means (SE) 0.759 (0.973) -0.325 (0.976) 95% CI (-1.155, 2.672) (-2.243, 1.593) Relative Increase (%) 21.8% -9.3% - p-value (MMRM) 0.4362 0.7393 + p-value (MMRM) 0.4362 0.7394 WEEK 2 DAY 15 n 134 134 132 Adjusted Mean (SE) 9.135 (0.768) 9.018 (0.767) 8.509 (0.773) @@ -21,7 +21,7 @@ Difference in Adjusted Means (SE) -0.117 (1.087) -0.626 (1.090) 95% CI (-2.253, 2.020) (-2.768, 1.517) Relative Increase (%) -1.3% -6.8% - p-value (MMRM) 0.9147 0.5662 + p-value (MMRM) 0.9146 0.5662 WEEK 3 DAY 22 n 134 134 132 Adjusted Mean (SE) 13.547 (0.871) 16.014 (0.871) 15.789 (0.877) @@ -47,7 +47,7 @@ Relative Increase (%) 6.1% 0.9% p-value (MMRM) 0.3408 0.8937 -# result_v2 +# tables/efficacy/mmrmt01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -76,7 +76,7 @@ Adjusted Mean (SE) 24.028 (0.747) 95% CI (22.560, 25.496) -# result_v3 +# tables/efficacy/mmrmt01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -149,3 +149,32 @@ Relative Increase (%) 8.7% 4.3% p-value (MMRM) 0.0324 0.2924 +# tables/efficacy/mmrmt01.qmd result_baseline stable + + Code + print(data_snap[[i]]) + Output + Visit All Patients + Statistics (N=400) + β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + WEEK 1 DAY 8 + n 400 + Adjusted Mean (SE) 3.615 (0.620) + 95% CI (2.396, 4.834) + WEEK 2 DAY 15 + n 400 + Adjusted Mean (SE) 8.870 (0.602) + 95% CI (7.687, 10.053) + WEEK 3 DAY 22 + n 400 + Adjusted Mean (SE) 15.094 (0.683) + 95% CI (13.751, 16.437) + WEEK 4 DAY 29 + n 400 + Adjusted Mean (SE) 19.009 (0.717) + 95% CI (17.599, 20.418) + WEEK 5 DAY 36 + n 400 + Adjusted Mean (SE) 24.028 (0.747) + 95% CI (22.560, 25.496) + diff --git a/package/tests/testthat/_snaps/onct05/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-onct05.md similarity index 97% rename from package/tests/testthat/_snaps/onct05/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-onct05.md index 053804e323..144e32fd17 100644 --- a/package/tests/testthat/_snaps/onct05/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-onct05.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/onct05.qmd result_v1 stable Code print(data_snap[[i]]) @@ -14,7 +14,7 @@ S1 140 67 38 56.7% 73 56 76.7% 2.51 (1.22, 5.20) S2 128 67 46 68.7% 61 44 72.1% 1.18 (0.55, 2.53) -# result_v2 +# tables/efficacy/onct05.qmd result_v2 stable Code print(data_snap[[i]]) @@ -31,7 +31,7 @@ B 92 45 26 57.8% 47 32 68.1% 1.56 (0.66, 3.66) A 82 44 25 56.8% 38 31 81.6% 3.37 (1.22, 9.28) -# result_v3 +# tables/efficacy/onct05.qmd result_v3 stable Code print(data_snap[[i]]) @@ -47,7 +47,7 @@ S1 140 67 38 56.7% 73 56 76.7% 2.51 (1.37, 4.63) 0.0119 S2 128 67 46 68.7% 61 44 72.1% 1.18 (0.62, 2.24) 0.6674 -# result_v4 +# tables/efficacy/onct05.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ratet01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-ratet01.md similarity index 77% rename from package/tests/testthat/_snaps/ratet01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-ratet01.md index 06a673d5c0..5c7d1efcc1 100644 --- a/package/tests/testthat/_snaps/ratet01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-ratet01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/ratet01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -24,5 +24,11 @@ Rate CI (1.6194, 3.7219) (1.8974, 4.2850) (2.2946, 5.1284) Rate Ratio 1.1615 1.3973 Rate Ratio CI (0.6462, 2.0877) (0.7789, 2.5067) - p value 0.6169 0.2619 + p-value 0.6169 0.2619 + Adjusted (NB) exacerbation rate (per year) + Rate 2.7374 2.8150 2.9789 + Rate CI (2.3932, 3.1311) (2.4681, 3.2106) (2.6152, 3.3932) + Rate Ratio 1.0283 1.0882 + Rate Ratio CI (0.8856, 1.1941) (0.9381, 1.2624) + p-value 0.7140 0.2643 diff --git a/package/tests/testthat/_snaps/rspt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-rspt01.md similarity index 97% rename from package/tests/testthat/_snaps/rspt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-rspt01.md index 05cb31028a..7dbd29bafc 100644 --- a/package/tests/testthat/_snaps/rspt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-rspt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/rspt01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -24,7 +24,7 @@ Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) -# result_v2 +# tables/efficacy/rspt01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -49,7 +49,7 @@ Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) -# result_v3 +# tables/efficacy/rspt01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -75,7 +75,7 @@ Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) 90% CI (Clopper-Pearson) (0.04, 3.49) (5.25, 14.11) (1.50, 7.80) -# result_v4 +# tables/efficacy/rspt01.qmd result_v4 stable Code print(data_snap[[i]]) @@ -106,7 +106,7 @@ Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) -# result_v5 +# tables/efficacy/rspt01.qmd result_v5 stable Code print(data_snap[[i]]) @@ -132,7 +132,7 @@ Not Evaluable (NE) 1 (0.7%) 12 (9.0%) 5 (3.8%) 95% CI (Wald, with correction) (0.00, 2.58) (3.75, 14.16) (0.15, 7.42) -# result_v6 +# tables/efficacy/rspt01.qmd result_v6 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ttet01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-efficacy-ttet01.md similarity index 98% rename from package/tests/testthat/_snaps/ttet01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-efficacy-ttet01.md index cb3896614f..0922521b3a 100644 --- a/package/tests/testthat/_snaps/ttet01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-efficacy-ttet01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/efficacy/ttet01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -39,7 +39,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v2 +# tables/efficacy/ttet01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -72,7 +72,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v3 +# tables/efficacy/ttet01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -106,7 +106,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v4 +# tables/efficacy/ttet01.qmd result_v4 stable Code print(data_snap[[i]]) @@ -144,7 +144,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v5 +# tables/efficacy/ttet01.qmd result_v5 stable Code print(data_snap[[i]]) @@ -178,7 +178,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v6 +# tables/efficacy/ttet01.qmd result_v6 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/ext01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-exposure-ext01.md similarity index 99% rename from package/tests/testthat/_snaps/ext01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-exposure-ext01.md index 9dec9e0f88..954952d5e4 100644 --- a/package/tests/testthat/_snaps/ext01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-exposure-ext01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/exposure/ext01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -49,7 +49,7 @@ Median 9.0 10.0 11.0 Min - Max 0.0 - 20.0 0.0 - 20.0 1.0 - 20.0 -# result_v2 +# tables/exposure/ext01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -102,7 +102,7 @@ Median 7.0 7.0 7.0 Min - Max 7.0 - 7.0 7.0 - 7.0 7.0 - 7.0 -# result_v3 +# tables/exposure/ext01.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt01.md similarity index 99% rename from package/tests/testthat/_snaps/lbt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt01.md index 25ea2e3ff6..3c9056ce17 100644 --- a/package/tests/testthat/_snaps/lbt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt02.md similarity index 98% rename from package/tests/testthat/_snaps/lbt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt02.md index a3768ad49e..c94b1fb1e6 100644 --- a/package/tests/testthat/_snaps/lbt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt02.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt03.md similarity index 98% rename from package/tests/testthat/_snaps/lbt03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt03.md index 3d9093c880..17206030bf 100644 --- a/package/tests/testthat/_snaps/lbt03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt03.qmd result_v1 stable Code print(data_snap[[i]]) @@ -37,7 +37,7 @@ Median 0.01 0.15 0.05 Min - Max -4.15 - 3.96 -3.50 - 3.53 -3.63 - 4.78 -# result_v2 +# tables/lab-results/lbt03.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt04.md similarity index 96% rename from package/tests/testthat/_snaps/lbt04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt04.md index 055e2ca7f6..816a4c5733 100644 --- a/package/tests/testthat/_snaps/lbt04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt04.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt04.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt05/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt05.md similarity index 98% rename from package/tests/testthat/_snaps/lbt05/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt05.md index fed2fb215c..774276d54b 100644 --- a/package/tests/testthat/_snaps/lbt05/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt05.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt05.qmd result_v1 stable Code print(data_snap[[i]]) @@ -30,7 +30,7 @@ Last or replicated 48 (37.2%) 47 (38.5%) 55 (45.5%) Any Abnormality 52 (40.3%) 53 (43.4%) 58 (47.9%) -# result_v2 +# tables/lab-results/lbt05.qmd result_v2 stable Code print(data_snap[[i]]) @@ -66,7 +66,7 @@ Last or replicated 48 (37.2%) 47 (38.5%) 55 (45.5%) Any Abnormality 52 (40.3%) 53 (43.4%) 58 (47.9%) -# result_v4 +# tables/lab-results/lbt05.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt06/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt06.md similarity index 99% rename from package/tests/testthat/_snaps/lbt06/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt06.md index b24b653d15..99b53cfce3 100644 --- a/package/tests/testthat/_snaps/lbt06/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt06.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt06.qmd result_v1 stable Code print(data_snap[[i]]) @@ -53,7 +53,7 @@ High 4/20 (20%) 6/22 (27.3%) 2/17 (11.8%) Total 23/134 (17.2%) 23/134 (17.2%) 13/132 (9.8%) -# result_v2 +# tables/lab-results/lbt06.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt07/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt07.md similarity index 98% rename from package/tests/testthat/_snaps/lbt07/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt07.md index 075505d80a..d4f978d217 100644 --- a/package/tests/testthat/_snaps/lbt07/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt07.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt07.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt08/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt08.md similarity index 98% rename from package/tests/testthat/_snaps/lbt08/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt08.md index f43985dc8a..464745541b 100644 --- a/package/tests/testthat/_snaps/lbt08/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt08.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt08.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt09/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt09.md similarity index 99% rename from package/tests/testthat/_snaps/lbt09/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt09.md index 295c2d0e7f..bbeb6f817d 100644 --- a/package/tests/testthat/_snaps/lbt09/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt09.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt09.qmd result_v1 stable Code print(data_snap[[i]]) @@ -43,7 +43,7 @@ AST >10 - <= 20xULN 29/134 (21.6%) 31/134 (23.1%) 28/134 (20.9%) 22/134 (16.4%) 22/132 (16.7%) 21/132 (15.9%) AST > 20xULN 34/134 (25.4%) 21/134 (15.7%) 19/134 (14.2%) 28/134 (20.9%) 21/132 (15.9%) 33/132 (25.0%) -# result_v2 +# tables/lab-results/lbt09.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt10/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt10.md similarity index 94% rename from package/tests/testthat/_snaps/lbt10/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt10.md index 4b8cbe5575..4bd00277eb 100644 --- a/package/tests/testthat/_snaps/lbt10/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt10.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt10.qmd result_v1 stable Code print(data_snap[[i]]) @@ -13,7 +13,7 @@ ALT >3xULN at 2 Visits 24/134 (17.9%) 32/134 (23.9%) 24/132 (18.2%) AST >3xULN at 2 Visits 33/134 (24.6%) 29/134 (21.6%) 25/132 (18.9%) -# result_v2 +# tables/lab-results/lbt10.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt10_bl/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt10_bl.md similarity index 94% rename from package/tests/testthat/_snaps/lbt10_bl/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt10_bl.md index 96c9dc71fe..9a9821c514 100644 --- a/package/tests/testthat/_snaps/lbt10_bl/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt10_bl.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt10_bl.qmd result_v1 stable Code print(data_snap[[i]]) @@ -13,7 +13,7 @@ ALT >3xULN at 2 Visits 26/134 (19.4%) 31/134 (23.1%) 23/132 (17.4%) AST >3xULN at 2 Visits 30/134 (22.4%) 27/134 (20.1%) 26/132 (19.7%) -# result_v2 +# tables/lab-results/lbt10_bl.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt11/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt11.md similarity index 97% rename from package/tests/testthat/_snaps/lbt11/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt11.md index f226aacaeb..7a4c838705 100644 --- a/package/tests/testthat/_snaps/lbt11/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt11.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt11.qmd result_v1 stable Code print(data_snap[[i]]) @@ -24,7 +24,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v2 +# tables/lab-results/lbt11.qmd result_v2 stable Code print(data_snap[[i]]) @@ -46,7 +46,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v3 +# tables/lab-results/lbt11.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt11_bl/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt11_bl.md similarity index 97% rename from package/tests/testthat/_snaps/lbt11_bl/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt11_bl.md index 5c95afcc4f..513d6f6e2f 100644 --- a/package/tests/testthat/_snaps/lbt11_bl/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt11_bl.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt11_bl.qmd result_v1 stable Code print(data_snap[[i]]) @@ -23,7 +23,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v2 +# tables/lab-results/lbt11_bl.qmd result_v2 stable Code print(data_snap[[i]]) @@ -44,7 +44,7 @@ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -# result_v3 +# tables/lab-results/lbt11_bl.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt12/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt12.md similarity index 96% rename from package/tests/testthat/_snaps/lbt12/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt12.md index 27afc42711..dc2f2ed138 100644 --- a/package/tests/testthat/_snaps/lbt12/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt12.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt12.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt12_bl/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt12_bl.md similarity index 96% rename from package/tests/testthat/_snaps/lbt12_bl/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt12_bl.md index d038f52811..8bc41cc593 100644 --- a/package/tests/testthat/_snaps/lbt12_bl/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt12_bl.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt12_bl.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt13/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt13.md similarity index 99% rename from package/tests/testthat/_snaps/lbt13/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt13.md index 135d372e75..3cf23975e5 100644 --- a/package/tests/testthat/_snaps/lbt13/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt13.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt13.qmd result_v1 stable Code print(data_snap[[i]]) @@ -117,7 +117,7 @@ Not Low 1 (100%) 2 (100%) 1 (50.0%) 1 0 0 1 (50.0%) -# result_v2 +# tables/lab-results/lbt13.qmd result_v2 stable Code print(data_snap[[i]]) @@ -239,7 +239,7 @@ 1 1 (20.0%) 0 0 3 0 1 (33.3%) 0 -# result_v3 +# tables/lab-results/lbt13.qmd result_v3 stable Code print(data_snap[[i]]) @@ -358,7 +358,7 @@ Not Low 1 (100%) 2 (100%) 1 (50.0%) 1 0 0 1 (50.0%) -# result_v4 +# tables/lab-results/lbt13.qmd result_v4 stable Code print(data_snap[[i]]) @@ -480,7 +480,7 @@ 1 1 (20.0%) 0 0 3 0 1 (33.3%) 0 -# result_v5 +# tables/lab-results/lbt13.qmd result_v5 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt14/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt14.md similarity index 99% rename from package/tests/testthat/_snaps/lbt14/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt14.md index 9815e0532f..6b7c4cbefb 100644 --- a/package/tests/testthat/_snaps/lbt14/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt14.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt14.qmd result_v1 stable Code print(data_snap[[i]]) @@ -66,7 +66,7 @@ 2 1 (0.7%) 1 (0.7%) 0 4 1 (0.7%) 1 (0.7%) 0 -# result_v2 +# tables/lab-results/lbt14.qmd result_v2 stable Code print(data_snap[[i]]) @@ -134,7 +134,7 @@ Not Low 134 134 132 Not Low 134 (100%) 134 (100%) 132 (100%) -# result_v3 +# tables/lab-results/lbt14.qmd result_v3 stable Code print(data_snap[[i]]) @@ -202,7 +202,7 @@ 2 1 (0.7%) 1 (0.7%) 0 4 1 (0.7%) 1 (0.7%) 0 -# result_v4 +# tables/lab-results/lbt14.qmd result_v4 stable Code print(data_snap[[i]]) @@ -270,7 +270,7 @@ Not Low 134 134 132 Not Low 134 (100%) 134 (100%) 132 (100%) -# result_v5 +# tables/lab-results/lbt14.qmd result_v5 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/lbt15/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt15.md similarity index 97% rename from package/tests/testthat/_snaps/lbt15/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-lab-results-lbt15.md index 00a58e2a7f..e0faeb61fc 100644 --- a/package/tests/testthat/_snaps/lbt15/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-lab-results-lbt15.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/lab-results/lbt15.qmd result_v1 stable Code print(data_snap[[i]]) @@ -19,7 +19,7 @@ Low 0/134 0/134 0/132 0/400 High 33/128 (25.8%) 32/124 (25.8%) 28/120 (23.3%) 93/372 (25%) -# result_v2 +# tables/lab-results/lbt15.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/mht01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-medical-history-mht01.md similarity index 98% rename from package/tests/testthat/_snaps/mht01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-medical-history-mht01.md index e0bc75a87b..843c80c9c1 100644 --- a/package/tests/testthat/_snaps/mht01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-medical-history-mht01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/medical-history/mht01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -31,7 +31,7 @@ trm D_2/3 48 (35.8%) 42 (31.3%) 50 (37.9%) trm D_3/3 47 (35.1%) 58 (43.3%) 57 (43.2%) -# result_v2 +# tables/medical-history/mht01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -46,7 +46,7 @@ Total number of conditions 0 0 1 trm D_2/3 0 0 1 (0.8%) -# result_v3 +# tables/medical-history/mht01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -74,7 +74,7 @@ trm D_2/3 48 (35.8%) 42 (31.3%) 50 (37.9%) trm D_3/3 47 (35.1%) 58 (43.3%) 57 (43.2%) -# result_v4 +# tables/medical-history/mht01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkct01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkct01.md similarity index 98% rename from package/tests/testthat/_snaps/pkct01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkct01.md index b93d5fa539..d984d655d1 100644 --- a/package/tests/testthat/_snaps/pkct01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkct01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkct01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -30,7 +30,7 @@ NE: Not Estimable -# result_v2 +# tables/pharmacokinetic/pkct01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -63,7 +63,7 @@ NE: Not Estimable ND: Not Derived -# result_v3 +# tables/pharmacokinetic/pkct01.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt02.md similarity index 97% rename from package/tests/testthat/_snaps/pkpt02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt02.md index c641b7b0d9..1d28d7ddf7 100644 --- a/package/tests/testthat/_snaps/pkpt02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt02.qmd result_v1 stable Code print(data_snap[[i]]) @@ -35,7 +35,7 @@ Median 5.08 4.97 Min - Max 2.25 - 7.39 2.10 - 7.49 -# result_v2 +# tables/pharmacokinetic/pkpt02.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt03.md similarity index 98% rename from package/tests/testthat/_snaps/pkpt03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt03.md index 5893c7a1bb..4b4a433db1 100644 --- a/package/tests/testthat/_snaps/pkpt03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt03.qmd result_v1 stable Code print(data_snap[[i]]) @@ -40,7 +40,7 @@ CL obs (ml/day/kg) 132 5.07 1.07 21.1 4.96 22.4 5.01 2.48 7.50 -# result_v2 +# tables/pharmacokinetic/pkpt03.qmd result_v2 stable Code print(data_snap[[i]]) @@ -81,7 +81,7 @@ CL obs (ml/day/kg) 132 5.07 1.07 21.1 4.96 22.4 5.01 2.48 7.50 -# result_v3 +# tables/pharmacokinetic/pkpt03.qmd result_v3 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt04.md similarity index 97% rename from package/tests/testthat/_snaps/pkpt04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt04.md index 13356dc215..7a7fd7dba4 100644 --- a/package/tests/testthat/_snaps/pkpt04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt04.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt04.qmd result_v1 stable Code print(data_snap[[i]]) @@ -43,7 +43,7 @@ Median 0.00497 0.00515 Min - Max 0.00238 - 0.00726 0.00236 - 0.00741 -# result_v2 +# tables/pharmacokinetic/pkpt04.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt05/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt05.md similarity index 97% rename from package/tests/testthat/_snaps/pkpt05/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt05.md index c083e677d6..6e769699a7 100644 --- a/package/tests/testthat/_snaps/pkpt05/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt05.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt05.qmd result_v1 stable Code print(data_snap[[i]]) @@ -22,7 +22,7 @@ CLR (L/hr) 132 0.0502 0.0105 20.9 0.0491 21.9 0.0498 0.0251 0.0856 RENALCLD (L/hr/mg) 132 0.00511 0.000934 18.3 0.00502 19.7 0.00515 0.00236 0.00741 -# result_v2 +# tables/pharmacokinetic/pkpt05.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt06/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt06.md similarity index 95% rename from package/tests/testthat/_snaps/pkpt06/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt06.md index 4ba32ee95b..5db9f9cfb4 100644 --- a/package/tests/testthat/_snaps/pkpt06/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt06.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt06.qmd result_v1 stable Code print(data_snap[[i]]) @@ -19,7 +19,7 @@ Median 0.00497 0.00515 Min - Max 0.00238 - 0.00726 0.00236 - 0.00741 -# result_v2 +# tables/pharmacokinetic/pkpt06.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt07/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt07.md similarity index 96% rename from package/tests/testthat/_snaps/pkpt07/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt07.md index 8fbe703ed3..2aa921162d 100644 --- a/package/tests/testthat/_snaps/pkpt07/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt07.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt07.qmd result_v1 stable Code print(data_snap[[i]]) @@ -16,7 +16,7 @@ ARM C RENALCLD (L/hr/mg) 132 0.00511 0.000934 18.3 0.00502 19.7 0.00515 0.00236 0.00741 -# result_v2 +# tables/pharmacokinetic/pkpt07.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt08/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt08.md similarity index 97% rename from package/tests/testthat/_snaps/pkpt08/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt08.md index 7c981d59ae..f3fced68fc 100644 --- a/package/tests/testthat/_snaps/pkpt08/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt08.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt08.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/pkpt11/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt11.md similarity index 97% rename from package/tests/testthat/_snaps/pkpt11/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt11.md index 9262d6b5f9..a9491623d8 100644 --- a/package/tests/testthat/_snaps/pkpt11/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-pharmacokinetic-pkpt11.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/pharmacokinetic/pkpt11.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/rmpt01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt01.md similarity index 96% rename from package/tests/testthat/_snaps/rmpt01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt01.md index 96bb42f107..7cef65f54a 100644 --- a/package/tests/testthat/_snaps/rmpt01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/risk-management-plan/rmpt01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/rmpt03/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt03.md similarity index 97% rename from package/tests/testthat/_snaps/rmpt03/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt03.md index 8488c81bd4..cbc43de064 100644 --- a/package/tests/testthat/_snaps/rmpt03/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt03.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/risk-management-plan/rmpt03.qmd result_v1 stable Code print(data_snap[[i]]) @@ -16,7 +16,7 @@ * Patient Time is the sum of exposure across all patients in days. -# result_v2 +# tables/risk-management-plan/rmpt03.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/rmpt04/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt04.md similarity index 94% rename from package/tests/testthat/_snaps/rmpt04/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt04.md index 2c928310c8..a7420f55af 100644 --- a/package/tests/testthat/_snaps/rmpt04/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt04.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/risk-management-plan/rmpt04.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/rmpt05/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt05.md similarity index 96% rename from package/tests/testthat/_snaps/rmpt05/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt05.md index 51b0cc4ef1..82cffefbc8 100644 --- a/package/tests/testthat/_snaps/rmpt05/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt05.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/risk-management-plan/rmpt05.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/rmpt06/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt06.md similarity index 97% rename from package/tests/testthat/_snaps/rmpt06/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt06.md index cea0efde75..1f44ceb414 100644 --- a/package/tests/testthat/_snaps/rmpt06/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-risk-management-plan-rmpt06.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/risk-management-plan/rmpt06.qmd result_v1 stable Code print(data_snap[[i]]) @@ -24,7 +24,7 @@ Recovering/Resolving 81 (66.4%) 84 (68.3%) 88 (73.3%) Unknown outcome 38 (31.1%) 49 (39.8%) 44 (36.7%) -# result_v2 +# tables/risk-management-plan/rmpt06.qmd result_v2 stable Code print(data_snap[[i]]) @@ -43,7 +43,7 @@ Grade 5 76 (56.7%) 70 (52.2%) 75 (56.8%) Number of patients with at least one serious AE 104 (77.6%) 101 (75.4%) 99 (75.0%) -# result_v3 +# tables/risk-management-plan/rmpt06.qmd result_v3 stable Code print(data_snap[[i]]) @@ -71,7 +71,7 @@ Recovering/Resolving 81 (66.4%) 84 (68.3%) 88 (73.3%) Unknown outcome 38 (31.1%) 49 (39.8%) 44 (36.7%) -# result_v4 +# tables/risk-management-plan/rmpt06.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/enrollment01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-safety-enrollment01.md similarity index 99% rename from package/tests/testthat/_snaps/enrollment01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-safety-enrollment01.md index 2b083ccd00..4eb07289df 100644 --- a/package/tests/testthat/_snaps/enrollment01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-safety-enrollment01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/safety/enrollment01.qmd result_v1 stable Code print(data_snap[[i]]) @@ -118,7 +118,7 @@ INV ID BRA-6 1 (7.7%) 0 0 1 (3.3%) INV ID BRA-7 0 0 1 (10%) 1 (3.3%) -# result_v2 +# tables/safety/enrollment01.qmd result_v2 stable Code print(data_snap[[i]]) @@ -231,7 +231,7 @@ INV ID CAN-4 0 1 (50%) 1 (33.3%) 2 (25%) INV ID CAN-5 0 0 1 (33.3%) 1 (12.5%) -# result_v3 +# tables/safety/enrollment01.qmd result_v3 stable Code print(data_snap[[i]]) @@ -351,7 +351,7 @@ INV ID BRA-6 / Dr. BRA-6 Doe 1 (7.7%) 0 0 1 (3.3%) INV ID BRA-7 / Dr. BRA-7 Doe 0 0 1 (10%) 1 (3.3%) -# result_v4 +# tables/safety/enrollment01.qmd result_v4 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/vst01/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-vital-signs-vst01.md similarity index 99% rename from package/tests/testthat/_snaps/vst01/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-vital-signs-vst01.md index 8c5a803eeb..aaa088eac1 100644 --- a/package/tests/testthat/_snaps/vst01/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-vital-signs-vst01.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/vital-signs/vst01.qmd result_v1 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/_snaps/vst02/markdown-snaps.md b/package/tests/testthat/_snaps/stable/tables-vital-signs-vst02.md similarity index 98% rename from package/tests/testthat/_snaps/vst02/markdown-snaps.md rename to package/tests/testthat/_snaps/stable/tables-vital-signs-vst02.md index 628bcc93c2..721df7d069 100644 --- a/package/tests/testthat/_snaps/vst02/markdown-snaps.md +++ b/package/tests/testthat/_snaps/stable/tables-vital-signs-vst02.md @@ -1,4 +1,4 @@ -# result_v1 +# tables/vital-signs/vst02.qmd result_v1 stable Code print(data_snap[[i]]) @@ -25,7 +25,7 @@ Low 43/134 (32.1%) 39/134 (29.1%) 39/132 (29.5%) 121/400 (30.2%) High 46/134 (34.3%) 43/134 (32.1%) 44/132 (33.3%) 133/400 (33.2%) -# result_v2 +# tables/vital-signs/vst02.qmd result_v2 stable Code print(data_snap[[i]]) diff --git a/package/tests/testthat/helper.R b/package/tests/testthat/helper.R new file mode 100644 index 0000000000..3afbb520be --- /dev/null +++ b/package/tests/testthat/helper.R @@ -0,0 +1,66 @@ +test_article <- function(article_path) { + if (isTRUE(if_render_articles)) { + quarto::quarto_render( + file.path(test_book_path, article_path), + as_job = FALSE, + quiet = TRUE, + cache = FALSE, + profile = test_profile, + metadata = list(execute = list(freeze = FALSE)) + ) + } + + data_file <- file.path(test_data_path, test_profile, paste0(tools::file_path_sans_ext(article_path), ".rds")) + + if (isFALSE(file.exists(data_file))) { + return() + } + + data_snap <- readRDS(data_file) + + for (i in names(data_snap)) { + testthat::test_that(paste(c(article_path, i, test_profile), collapse = " "), { + if (rtables::is_rtable(data_snap[[i]]) || is.data.frame(data_snap[[i]])) { + testthat::expect_snapshot( + print(data_snap[[i]]), + variant = test_profile + ) + } else if (isTRUE(if_test_plots) && (ggplot2::is.ggplot(data_snap[[i]]) || grid::is.grob(data_snap[[i]]))) { + testthat::skip_if_not_installed("svglite") + testthat::skip_on_ci() + + plot_dims <- sapply(c("width", "height"), function(x) { # check for plotting area dimensions + if (paste0(i, ".", x) %in% names(data_snap)) { + data_snap[[paste0(i, ".", x)]] # variant-specific dimensions + } else if (x %in% names(data_snap)) { + data_snap[[x]] # template-specific default dimensions + } else { + if (x == "width") 7 else 5 # ggplot2 default dimensions + } + }) + + plot_file <- file.path(test_data_path, paste0(tools::file_path_sans_ext(article_path), "-", i, ".svg")) + + withr::with_seed( + 123, + suppressMessages( + ggplot2::ggsave(plot_file, data_snap[[i]], + width = plot_dims[["width"]], height = plot_dims[["height"]], + create.dir = TRUE + ) + ) + ) + + testthat::announce_snapshot_file(name = plot_file) + testthat::expect_snapshot_file(plot_file, variant = test_profile) + } else { + testthat::skip( + sprintf( + "Snapshot test is not implemented for object of class: %s.", + paste0(class(data_snap[[i]]), collapse = ", ") + ) + ) + } + }) + } +} diff --git a/package/tests/testthat/setup-options.R b/package/tests/testthat/setup-options.R new file mode 100644 index 0000000000..f4bde07e10 --- /dev/null +++ b/package/tests/testthat/setup-options.R @@ -0,0 +1,27 @@ +knitr_options <- list( + warnPartialMatchDollar = TRUE, + warnPartialMatchArgs = TRUE, + warnPartialMatchAttr = TRUE, + lifecycle_verbosity = "error", + warn = 2L +) + +withr::local_envvar( + # source: https://yihui.org/en/2023/10/opts-chunk/ + # setting R options doesn't work as quarto_render() creates a new R process + # setting env var instead does the trick + R_KNITR_OPTIONS = sprintf( + "knitr.chunk.R.options = %s", + paste0(deparse(knitr_options, width.cutoff = 500L), collapse = " ") + ), + .local_envir = testthat::teardown_env() +) + +test_options <- list( + "pillar.width" = Inf +) + +withr::local_options( + test_options, + .local_envir = testthat::teardown_env() +) diff --git a/package/tests/testthat/setup.R b/package/tests/testthat/setup.R index 4a11bcd5c4..1248826f75 100644 --- a/package/tests/testthat/setup.R +++ b/package/tests/testthat/setup.R @@ -1,13 +1,44 @@ +test_profile <- Sys.getenv("QUARTO_PROFILE", "stable") test_book_path <- testthat::test_path("_book") test_data_path <- testthat::test_path("_data") Sys.setenv("QUARTO_TESTTHAT_DATA_PATH" = normalizePath(test_data_path)) -options(pillar.width = Inf) -cat("Start rendering the book...\n") -quarto::quarto_render(test_book_path, as_job = FALSE, quiet = FALSE, cache = FALSE) -cat("Render finished!\n") +# Flags for developers +# use it if you want to disable render of book or render individual articles instead +# for the latter: +# (i) set if_render_book to FALSE +# (ii) set if_render_article to TRUE +# (iii) assure proper value of `test_profile` ("development" or "stable") +# (iv) run `devtools::test(filter = "")` +if_render_book <- TRUE # Remember to change this to FALSE if you want to render articles (otherwise loop) +if_render_articles <- !if_render_book +if_test_plots <- FALSE # Additional option for optional skip of local plot tests +# Example for render articles (NOTE: KEEP THESE COMMENTED WHEN RUNNING!!): +# setwd("package") +# Sys.setenv("QUARTO_PROFILE" = "development") +# devtools::test(filter = "tables-efficacy-rbmit01") +# devtools::test(filter = "tables-ADA-adat01") +# if the snapshot changed only an error will be printed and you need to update the snapshot +# testthat::snapshot_accept('development/tables-efficacy-rbmit01') + + +if (isTRUE(if_render_book) && isTRUE(if_render_articles)) { + stop("Render both book and articles at the same time is not efficient! Please set one of them to FALSE.") +} + +if (isTRUE(if_render_book)) { + cat("Start rendering the book...\n") + quarto::quarto_render( + test_book_path, + as_job = FALSE, + quiet = FALSE, + cache = FALSE, + profile = test_profile, + metadata = list(execute = list(freeze = FALSE)) + ) + cat("Render finished!\n") +} # clean up -created_files <- list.files(test_data_path, pattern = "\\.rds$", full.names = TRUE, recursive = TRUE) -withr::defer(unlink(created_files), testthat::teardown_env()) +withr::defer(Sys.unsetenv("QUARTO_PROFILE"), testthat::teardown_env()) withr::defer(Sys.unsetenv("QUARTO_TESTTHAT_DATA_PATH"), testthat::teardown_env()) diff --git a/package/tests/testthat/test-graph-snaps.R b/package/tests/testthat/test-graph-snaps.R deleted file mode 100644 index 068443f590..0000000000 --- a/package/tests/testthat/test-graph-snaps.R +++ /dev/null @@ -1,88 +0,0 @@ -quarto_docs <- list.files( - file.path(test_book_path, "graphs"), - recursive = TRUE, - full.names = FALSE, - pattern = "*.qmd" -) - -snapshot_docs <- basename(quarto_docs) -snapshot_variants <- gsub("\\.qmd$", "", snapshot_docs) -rds_files <- list.files(test_data_path, pattern = "*.rds") -rds_variants <- gsub("\\.rds$", "", rds_files) - -skip_tests <- setdiff(snapshot_variants, rds_variants) -if (length(skip_tests)) { - print( - paste0( - "Data snapshot file not found for ", length(skip_tests), " articles. Skipping tests for the articles: ", - paste(skip_tests, collapse = ", ") - ) - ) -} - -# expect_snapshot_ggplot - set custom plot dimensions -expect_snapshot_ggplot <- function(title, fig, width = NA, height = NA) { - skip_if_not_installed("svglite") - - name <- paste0(title, ".svg") - path <- tempdir() - suppressMessages(ggplot2::ggsave(name, fig, path = path, width = width, height = height)) - path <- file.path(path, name) - - testthat::announce_snapshot_file(name = name) - testthat::expect_snapshot_file(path, name) -} - -for (snapshot_variant in intersect(snapshot_variants, rds_variants)) { - path <- file.path(test_data_path, paste0(snapshot_variant, ".rds")) - if (isFALSE(file.exists(path))) { - testthat::skip(paste( - "Data snapshot file", path, "not found. Skipping tests for the article:", paste0(snapshot_variant, ".qmd"), - sep = " " - )) - } - data_snap <- readRDS(path) - plot_nms <- grep("width|height", names(data_snap), value = TRUE, invert = TRUE) - for (i in plot_nms) { - if (grepl("table", i)) { # process tables within graph templates - testthat::expect_snapshot( - print(data_snap[[i]]), - variant = snapshot_variant - ) - } else { - plot_dims <- sapply(c("width", "height"), function(x) { # check for plotting area dimensions - if (paste0(i, ".", x) %in% names(data_snap)) { - data_snap[[paste0(i, ".", x)]] # variant-specific dimensions - } else if (x %in% names(data_snap)) { - data_snap[[x]] # template-specific default dimensions - } else { - if (x == "width") 7 else 5 # ggplot2 default dimensions - } - }) - # Some plot objects have multiple plots in them and stored as unnamed list of plots - if (inherits(data_snap[[i]], "list")) { - for (plot_index in seq_len(length(data_snap[[i]]))) { - # Random seed to get consistent graphs - set.seed(123) - expect_snapshot_ggplot( - title = paste(snapshot_variant, i, plot_index, sep = "-"), - fig = data_snap[[i]][[plot_index]], - width = plot_dims[["width"]], - height = plot_dims[["height"]] - ) - } - } else { - testthat::test_that(i, { - # Random seed to get consistent graphs - set.seed(123) - expect_snapshot_ggplot( - title = paste(snapshot_variant, i, sep = "-"), - fig = data_snap[[i]], - width = plot_dims[["width"]], - height = plot_dims[["height"]] - ) - }) - } - } - } -} diff --git a/package/tests/testthat/test-graphs-efficacy-fstg01.R b/package/tests/testthat/test-graphs-efficacy-fstg01.R new file mode 100644 index 0000000000..acda25ef24 --- /dev/null +++ b/package/tests/testthat/test-graphs-efficacy-fstg01.R @@ -0,0 +1 @@ +test_article("graphs/efficacy/fstg01.qmd") diff --git a/package/tests/testthat/test-graphs-efficacy-fstg02.R b/package/tests/testthat/test-graphs-efficacy-fstg02.R new file mode 100644 index 0000000000..a3129c75ed --- /dev/null +++ b/package/tests/testthat/test-graphs-efficacy-fstg02.R @@ -0,0 +1 @@ +test_article("graphs/efficacy/fstg02.qmd") diff --git a/package/tests/testthat/test-graphs-efficacy-kmg01.R b/package/tests/testthat/test-graphs-efficacy-kmg01.R new file mode 100644 index 0000000000..02f3e4b9e4 --- /dev/null +++ b/package/tests/testthat/test-graphs-efficacy-kmg01.R @@ -0,0 +1 @@ +test_article("graphs/efficacy/kmg01.qmd") diff --git a/package/tests/testthat/test-graphs-efficacy-mmrmg01.R b/package/tests/testthat/test-graphs-efficacy-mmrmg01.R new file mode 100644 index 0000000000..2def0fb4f8 --- /dev/null +++ b/package/tests/testthat/test-graphs-efficacy-mmrmg01.R @@ -0,0 +1 @@ +test_article("graphs/efficacy/mmrmg01.qmd") diff --git a/package/tests/testthat/test-graphs-efficacy-mmrmg02.R b/package/tests/testthat/test-graphs-efficacy-mmrmg02.R new file mode 100644 index 0000000000..5791955950 --- /dev/null +++ b/package/tests/testthat/test-graphs-efficacy-mmrmg02.R @@ -0,0 +1 @@ +test_article("graphs/efficacy/mmrmg02.qmd") diff --git a/package/tests/testthat/test-graphs-other-brg01.R b/package/tests/testthat/test-graphs-other-brg01.R new file mode 100644 index 0000000000..430820a54b --- /dev/null +++ b/package/tests/testthat/test-graphs-other-brg01.R @@ -0,0 +1 @@ +test_article("graphs/other/brg01.qmd") diff --git a/package/tests/testthat/test-graphs-other-bwg01.R b/package/tests/testthat/test-graphs-other-bwg01.R new file mode 100644 index 0000000000..f55d9e303d --- /dev/null +++ b/package/tests/testthat/test-graphs-other-bwg01.R @@ -0,0 +1 @@ +test_article("graphs/other/bwg01.qmd") diff --git a/package/tests/testthat/test-graphs-other-cig01.R b/package/tests/testthat/test-graphs-other-cig01.R new file mode 100644 index 0000000000..f81e6d11fc --- /dev/null +++ b/package/tests/testthat/test-graphs-other-cig01.R @@ -0,0 +1 @@ +test_article("graphs/other/cig01.qmd") diff --git a/package/tests/testthat/test-graphs-other-ippg01.R b/package/tests/testthat/test-graphs-other-ippg01.R new file mode 100644 index 0000000000..06beb2dd85 --- /dev/null +++ b/package/tests/testthat/test-graphs-other-ippg01.R @@ -0,0 +1 @@ +test_article("graphs/other/ippg01.qmd") diff --git a/package/tests/testthat/test-graphs-other-ltg01.R b/package/tests/testthat/test-graphs-other-ltg01.R new file mode 100644 index 0000000000..51fed02834 --- /dev/null +++ b/package/tests/testthat/test-graphs-other-ltg01.R @@ -0,0 +1 @@ +test_article("graphs/other/ltg01.qmd") diff --git a/package/tests/testthat/test-graphs-other-mng01.R b/package/tests/testthat/test-graphs-other-mng01.R new file mode 100644 index 0000000000..67c90bcd9d --- /dev/null +++ b/package/tests/testthat/test-graphs-other-mng01.R @@ -0,0 +1 @@ +test_article("graphs/other/mng01.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkcg01.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkcg01.R new file mode 100644 index 0000000000..a198a656e6 --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkcg01.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkcg01.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkcg02.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkcg02.R new file mode 100644 index 0000000000..e0f49c6cb4 --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkcg02.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkcg02.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkcg03.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkcg03.R new file mode 100644 index 0000000000..1fc1e4783b --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkcg03.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkcg03.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkpg01.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg01.R new file mode 100644 index 0000000000..2241a20c99 --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg01.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkpg01.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkpg02.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg02.R new file mode 100644 index 0000000000..3b15ff9793 --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg02.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkpg02.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkpg03.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg03.R new file mode 100644 index 0000000000..ce594b5ab8 --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg03.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkpg03.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkpg04.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg04.R new file mode 100644 index 0000000000..250cf742df --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg04.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkpg04.qmd") diff --git a/package/tests/testthat/test-graphs-pharmacokinetic-pkpg06.R b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg06.R new file mode 100644 index 0000000000..706a9cc77a --- /dev/null +++ b/package/tests/testthat/test-graphs-pharmacokinetic-pkpg06.R @@ -0,0 +1 @@ +test_article("graphs/pharmacokinetic/pkpg06.qmd") diff --git a/package/tests/testthat/test-listings-ADA-adal02.R b/package/tests/testthat/test-listings-ADA-adal02.R new file mode 100644 index 0000000000..718f191cfb --- /dev/null +++ b/package/tests/testthat/test-listings-ADA-adal02.R @@ -0,0 +1 @@ +test_article("listings/ADA/adal02.qmd") diff --git a/package/tests/testthat/test-listings-ECG-egl01.R b/package/tests/testthat/test-listings-ECG-egl01.R new file mode 100644 index 0000000000..f81cacc49b --- /dev/null +++ b/package/tests/testthat/test-listings-ECG-egl01.R @@ -0,0 +1 @@ +test_article("listings/ECG/egl01.qmd") diff --git a/package/tests/testthat/test-listings-adverse-events-ael01.R b/package/tests/testthat/test-listings-adverse-events-ael01.R new file mode 100644 index 0000000000..017a94f5d9 --- /dev/null +++ b/package/tests/testthat/test-listings-adverse-events-ael01.R @@ -0,0 +1 @@ +test_article("listings/adverse-events/ael01.qmd") diff --git a/package/tests/testthat/test-listings-adverse-events-ael01_nollt.R b/package/tests/testthat/test-listings-adverse-events-ael01_nollt.R new file mode 100644 index 0000000000..a705bd46e1 --- /dev/null +++ b/package/tests/testthat/test-listings-adverse-events-ael01_nollt.R @@ -0,0 +1 @@ +test_article("listings/adverse-events/ael01_nollt.qmd") diff --git a/package/tests/testthat/test-listings-adverse-events-ael02.R b/package/tests/testthat/test-listings-adverse-events-ael02.R new file mode 100644 index 0000000000..d3b87d78af --- /dev/null +++ b/package/tests/testthat/test-listings-adverse-events-ael02.R @@ -0,0 +1 @@ +test_article("listings/adverse-events/ael02.qmd") diff --git a/package/tests/testthat/test-listings-adverse-events-ael02_ed.R b/package/tests/testthat/test-listings-adverse-events-ael02_ed.R new file mode 100644 index 0000000000..0dccfeaed8 --- /dev/null +++ b/package/tests/testthat/test-listings-adverse-events-ael02_ed.R @@ -0,0 +1 @@ +test_article("listings/adverse-events/ael02_ed.qmd") diff --git a/package/tests/testthat/test-listings-adverse-events-ael03.R b/package/tests/testthat/test-listings-adverse-events-ael03.R new file mode 100644 index 0000000000..137cfe88b2 --- /dev/null +++ b/package/tests/testthat/test-listings-adverse-events-ael03.R @@ -0,0 +1 @@ +test_article("listings/adverse-events/ael03.qmd") diff --git a/package/tests/testthat/test-listings-adverse-events-ael04.R b/package/tests/testthat/test-listings-adverse-events-ael04.R new file mode 100644 index 0000000000..e94bf1c04f --- /dev/null +++ b/package/tests/testthat/test-listings-adverse-events-ael04.R @@ -0,0 +1 @@ +test_article("listings/adverse-events/ael04.qmd") diff --git a/package/tests/testthat/test-listings-concomitant-medications-cml01.R b/package/tests/testthat/test-listings-concomitant-medications-cml01.R new file mode 100644 index 0000000000..45019d471d --- /dev/null +++ b/package/tests/testthat/test-listings-concomitant-medications-cml01.R @@ -0,0 +1 @@ +test_article("listings/concomitant-medications/cml01.qmd") diff --git a/package/tests/testthat/test-listings-concomitant-medications-cml02a_gl.R b/package/tests/testthat/test-listings-concomitant-medications-cml02a_gl.R new file mode 100644 index 0000000000..747778e22e --- /dev/null +++ b/package/tests/testthat/test-listings-concomitant-medications-cml02a_gl.R @@ -0,0 +1 @@ +test_article("listings/concomitant-medications/cml02a_gl.qmd") diff --git a/package/tests/testthat/test-listings-concomitant-medications-cml02b_gl.R b/package/tests/testthat/test-listings-concomitant-medications-cml02b_gl.R new file mode 100644 index 0000000000..7e04a37662 --- /dev/null +++ b/package/tests/testthat/test-listings-concomitant-medications-cml02b_gl.R @@ -0,0 +1 @@ +test_article("listings/concomitant-medications/cml02b_gl.qmd") diff --git a/package/tests/testthat/test-listings-development-safety-update-report-dsur4.R b/package/tests/testthat/test-listings-development-safety-update-report-dsur4.R new file mode 100644 index 0000000000..d3975d3296 --- /dev/null +++ b/package/tests/testthat/test-listings-development-safety-update-report-dsur4.R @@ -0,0 +1 @@ +test_article("listings/development-safety-update-report/dsur4.qmd") diff --git a/package/tests/testthat/test-listings-disposition-dsl01.R b/package/tests/testthat/test-listings-disposition-dsl01.R new file mode 100644 index 0000000000..685cd5e9ba --- /dev/null +++ b/package/tests/testthat/test-listings-disposition-dsl01.R @@ -0,0 +1 @@ +test_article("listings/disposition/dsl01.qmd") diff --git a/package/tests/testthat/test-listings-disposition-dsl02.R b/package/tests/testthat/test-listings-disposition-dsl02.R new file mode 100644 index 0000000000..0b148a2670 --- /dev/null +++ b/package/tests/testthat/test-listings-disposition-dsl02.R @@ -0,0 +1 @@ +test_article("listings/disposition/dsl02.qmd") diff --git a/package/tests/testthat/test-listings-efficacy-oncl01.R b/package/tests/testthat/test-listings-efficacy-oncl01.R new file mode 100644 index 0000000000..e67c0a6548 --- /dev/null +++ b/package/tests/testthat/test-listings-efficacy-oncl01.R @@ -0,0 +1 @@ +test_article("listings/efficacy/oncl01.qmd") diff --git a/package/tests/testthat/test-listings-exposure-exl01.R b/package/tests/testthat/test-listings-exposure-exl01.R new file mode 100644 index 0000000000..0d170054a9 --- /dev/null +++ b/package/tests/testthat/test-listings-exposure-exl01.R @@ -0,0 +1 @@ +test_article("listings/exposure/exl01.qmd") diff --git a/package/tests/testthat/test-listings-lab-results-lbl01.R b/package/tests/testthat/test-listings-lab-results-lbl01.R new file mode 100644 index 0000000000..7603cb9f1e --- /dev/null +++ b/package/tests/testthat/test-listings-lab-results-lbl01.R @@ -0,0 +1 @@ +test_article("listings/lab-results/lbl01.qmd") diff --git a/package/tests/testthat/test-listings-lab-results-lbl01_rls.R b/package/tests/testthat/test-listings-lab-results-lbl01_rls.R new file mode 100644 index 0000000000..6b7a7e8a73 --- /dev/null +++ b/package/tests/testthat/test-listings-lab-results-lbl01_rls.R @@ -0,0 +1 @@ +test_article("listings/lab-results/lbl01_rls.qmd") diff --git a/package/tests/testthat/test-listings-lab-results-lbl02a.R b/package/tests/testthat/test-listings-lab-results-lbl02a.R new file mode 100644 index 0000000000..d05859e21b --- /dev/null +++ b/package/tests/testthat/test-listings-lab-results-lbl02a.R @@ -0,0 +1 @@ +test_article("listings/lab-results/lbl02a.qmd") diff --git a/package/tests/testthat/test-listings-lab-results-lbl02a_rls.R b/package/tests/testthat/test-listings-lab-results-lbl02a_rls.R new file mode 100644 index 0000000000..52ec04f5c5 --- /dev/null +++ b/package/tests/testthat/test-listings-lab-results-lbl02a_rls.R @@ -0,0 +1 @@ +test_article("listings/lab-results/lbl02a_rls.qmd") diff --git a/package/tests/testthat/test-listings-lab-results-lbl02b.R b/package/tests/testthat/test-listings-lab-results-lbl02b.R new file mode 100644 index 0000000000..475135264b --- /dev/null +++ b/package/tests/testthat/test-listings-lab-results-lbl02b.R @@ -0,0 +1 @@ +test_article("listings/lab-results/lbl02b.qmd") diff --git a/package/tests/testthat/test-listings-medical-history-mhl01.R b/package/tests/testthat/test-listings-medical-history-mhl01.R new file mode 100644 index 0000000000..9e3d851cfd --- /dev/null +++ b/package/tests/testthat/test-listings-medical-history-mhl01.R @@ -0,0 +1 @@ +test_article("listings/medical-history/mhl01.qmd") diff --git a/package/tests/testthat/test-listings-pharmacokinetic-pkcl01.R b/package/tests/testthat/test-listings-pharmacokinetic-pkcl01.R new file mode 100644 index 0000000000..6218ed19f3 --- /dev/null +++ b/package/tests/testthat/test-listings-pharmacokinetic-pkcl01.R @@ -0,0 +1 @@ +test_article("listings/pharmacokinetic/pkcl01.qmd") diff --git a/package/tests/testthat/test-listings-pharmacokinetic-pkcl02.R b/package/tests/testthat/test-listings-pharmacokinetic-pkcl02.R new file mode 100644 index 0000000000..1ad1e09ec6 --- /dev/null +++ b/package/tests/testthat/test-listings-pharmacokinetic-pkcl02.R @@ -0,0 +1 @@ +test_article("listings/pharmacokinetic/pkcl02.qmd") diff --git a/package/tests/testthat/test-listings-pharmacokinetic-pkpl01.R b/package/tests/testthat/test-listings-pharmacokinetic-pkpl01.R new file mode 100644 index 0000000000..7d0a0acb12 --- /dev/null +++ b/package/tests/testthat/test-listings-pharmacokinetic-pkpl01.R @@ -0,0 +1 @@ +test_article("listings/pharmacokinetic/pkpl01.qmd") diff --git a/package/tests/testthat/test-listings-pharmacokinetic-pkpl02.R b/package/tests/testthat/test-listings-pharmacokinetic-pkpl02.R new file mode 100644 index 0000000000..1e7f1cd4dc --- /dev/null +++ b/package/tests/testthat/test-listings-pharmacokinetic-pkpl02.R @@ -0,0 +1 @@ +test_article("listings/pharmacokinetic/pkpl02.qmd") diff --git a/package/tests/testthat/test-listings-pharmacokinetic-pkpl04.R b/package/tests/testthat/test-listings-pharmacokinetic-pkpl04.R new file mode 100644 index 0000000000..42bc9d7200 --- /dev/null +++ b/package/tests/testthat/test-listings-pharmacokinetic-pkpl04.R @@ -0,0 +1 @@ +test_article("listings/pharmacokinetic/pkpl04.qmd") diff --git a/package/tests/testthat/test-listings-vital-signs-vsl01.R b/package/tests/testthat/test-listings-vital-signs-vsl01.R new file mode 100644 index 0000000000..9f52640620 --- /dev/null +++ b/package/tests/testthat/test-listings-vital-signs-vsl01.R @@ -0,0 +1 @@ +test_article("listings/vital-signs/vsl01.qmd") diff --git a/package/tests/testthat/test-markdown-snaps.R b/package/tests/testthat/test-markdown-snaps.R deleted file mode 100644 index 41da942abf..0000000000 --- a/package/tests/testthat/test-markdown-snaps.R +++ /dev/null @@ -1,46 +0,0 @@ -quarto_docs <- list.files( - file.path(test_book_path, c("tables", "listings")), - recursive = TRUE, - full.names = FALSE, - pattern = "*.qmd" -) - -snapshot_docs <- basename(quarto_docs) -snapshot_variants <- gsub("\\.qmd$", "", snapshot_docs) -rds_files <- list.files(test_data_path, pattern = "*.rds") -rds_variants <- gsub("\\.rds$", "", rds_files) - -skip_tests <- setdiff(snapshot_variants, rds_variants) -if (length(skip_tests)) { - print( - paste0( - "Data snapshot file not found for ", length(skip_tests), " articles. Skipping tests for the articles: ", - paste(skip_tests, collapse = ", ") - ) - ) -} - -if (!length(intersect(snapshot_variants, rds_variants)) > 0) { - stop("No data snapshot found. Please be sure to have built the book correctly.") -} - -for (snapshot_variant in intersect(snapshot_variants, rds_variants)) { - path <- file.path(test_data_path, paste0(snapshot_variant, ".rds")) - if (isFALSE(file.exists(path))) { - testthat::skip(paste( - "Data snapshot file", path, - "not found. Skipping tests for the article:", - paste0(snapshot_variant, ".qmd"), - sep = " " - )) - } - data_snap <- readRDS(path) - for (i in names(data_snap)) { - testthat::test_that(i, { - testthat::expect_snapshot( - print(data_snap[[i]]), - variant = snapshot_variant - ) - }) - } -} diff --git a/package/tests/testthat/test-tables-ADA-adat01.R b/package/tests/testthat/test-tables-ADA-adat01.R new file mode 100644 index 0000000000..24fb196418 --- /dev/null +++ b/package/tests/testthat/test-tables-ADA-adat01.R @@ -0,0 +1 @@ +test_article("tables/ADA/adat01.qmd") diff --git a/package/tests/testthat/test-tables-ADA-adat02.R b/package/tests/testthat/test-tables-ADA-adat02.R new file mode 100644 index 0000000000..0f8dd69ef7 --- /dev/null +++ b/package/tests/testthat/test-tables-ADA-adat02.R @@ -0,0 +1 @@ +test_article("tables/ADA/adat02.qmd") diff --git a/package/tests/testthat/test-tables-ADA-adat03.R b/package/tests/testthat/test-tables-ADA-adat03.R new file mode 100644 index 0000000000..daeadfe1aa --- /dev/null +++ b/package/tests/testthat/test-tables-ADA-adat03.R @@ -0,0 +1 @@ +test_article("tables/ADA/adat03.qmd") diff --git a/package/tests/testthat/test-tables-ADA-adat04a.R b/package/tests/testthat/test-tables-ADA-adat04a.R new file mode 100644 index 0000000000..82da6013ff --- /dev/null +++ b/package/tests/testthat/test-tables-ADA-adat04a.R @@ -0,0 +1 @@ +test_article("tables/ADA/adat04a.qmd") diff --git a/package/tests/testthat/test-tables-ADA-adat04b.R b/package/tests/testthat/test-tables-ADA-adat04b.R new file mode 100644 index 0000000000..b5c9bf380a --- /dev/null +++ b/package/tests/testthat/test-tables-ADA-adat04b.R @@ -0,0 +1 @@ +test_article("tables/ADA/adat04b.qmd") diff --git a/package/tests/testthat/test-tables-ECG-egt01.R b/package/tests/testthat/test-tables-ECG-egt01.R new file mode 100644 index 0000000000..4fc0792f60 --- /dev/null +++ b/package/tests/testthat/test-tables-ECG-egt01.R @@ -0,0 +1 @@ +test_article("tables/ECG/egt01.qmd") diff --git a/package/tests/testthat/test-tables-ECG-egt02.R b/package/tests/testthat/test-tables-ECG-egt02.R new file mode 100644 index 0000000000..e9f4fceb60 --- /dev/null +++ b/package/tests/testthat/test-tables-ECG-egt02.R @@ -0,0 +1 @@ +test_article("tables/ECG/egt02.qmd") diff --git a/package/tests/testthat/test-tables-ECG-egt03.R b/package/tests/testthat/test-tables-ECG-egt03.R new file mode 100644 index 0000000000..293642a8f7 --- /dev/null +++ b/package/tests/testthat/test-tables-ECG-egt03.R @@ -0,0 +1 @@ +test_article("tables/ECG/egt03.qmd") diff --git a/package/tests/testthat/test-tables-ECG-egt04.R b/package/tests/testthat/test-tables-ECG-egt04.R new file mode 100644 index 0000000000..07c31a783a --- /dev/null +++ b/package/tests/testthat/test-tables-ECG-egt04.R @@ -0,0 +1 @@ +test_article("tables/ECG/egt04.qmd") diff --git a/package/tests/testthat/test-tables-ECG-egt05_qtcat.R b/package/tests/testthat/test-tables-ECG-egt05_qtcat.R new file mode 100644 index 0000000000..75bc108b53 --- /dev/null +++ b/package/tests/testthat/test-tables-ECG-egt05_qtcat.R @@ -0,0 +1 @@ +test_article("tables/ECG/egt05_qtcat.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet01.R b/package/tests/testthat/test-tables-adverse-events-aet01.R new file mode 100644 index 0000000000..3f28703304 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet01.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet01.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet01_aesi.R b/package/tests/testthat/test-tables-adverse-events-aet01_aesi.R new file mode 100644 index 0000000000..50901df3fb --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet01_aesi.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet01_aesi.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet02.R b/package/tests/testthat/test-tables-adverse-events-aet02.R new file mode 100644 index 0000000000..f162c81b0f --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet02.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet02.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet02_smq.R b/package/tests/testthat/test-tables-adverse-events-aet02_smq.R new file mode 100644 index 0000000000..fef576fd75 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet02_smq.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet02_smq.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet03.R b/package/tests/testthat/test-tables-adverse-events-aet03.R new file mode 100644 index 0000000000..f554c36ab1 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet03.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet03.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet04.R b/package/tests/testthat/test-tables-adverse-events-aet04.R new file mode 100644 index 0000000000..5c6e579511 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet04.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet04.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet04_pi.R b/package/tests/testthat/test-tables-adverse-events-aet04_pi.R new file mode 100644 index 0000000000..1b6d969cd8 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet04_pi.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet04_pi.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet05.R b/package/tests/testthat/test-tables-adverse-events-aet05.R new file mode 100644 index 0000000000..7b92cd9e54 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet05.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet05.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet05_all.R b/package/tests/testthat/test-tables-adverse-events-aet05_all.R new file mode 100644 index 0000000000..ef51b58282 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet05_all.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet05_all.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet06.R b/package/tests/testthat/test-tables-adverse-events-aet06.R new file mode 100644 index 0000000000..27a96e8cc0 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet06.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet06.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet06_smq.R b/package/tests/testthat/test-tables-adverse-events-aet06_smq.R new file mode 100644 index 0000000000..2fac4ea153 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet06_smq.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet06_smq.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet07.R b/package/tests/testthat/test-tables-adverse-events-aet07.R new file mode 100644 index 0000000000..84c76b6e90 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet07.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet07.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet09.R b/package/tests/testthat/test-tables-adverse-events-aet09.R new file mode 100644 index 0000000000..798f5bb19f --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet09.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet09.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet09_smq.R b/package/tests/testthat/test-tables-adverse-events-aet09_smq.R new file mode 100644 index 0000000000..6f108dd4ed --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet09_smq.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet09_smq.qmd") diff --git a/package/tests/testthat/test-tables-adverse-events-aet10.R b/package/tests/testthat/test-tables-adverse-events-aet10.R new file mode 100644 index 0000000000..5b6237e206 --- /dev/null +++ b/package/tests/testthat/test-tables-adverse-events-aet10.R @@ -0,0 +1 @@ +test_article("tables/adverse-events/aet10.qmd") diff --git a/package/tests/testthat/test-tables-concomitant-medications-cmt01.R b/package/tests/testthat/test-tables-concomitant-medications-cmt01.R new file mode 100644 index 0000000000..7c82e23fd6 --- /dev/null +++ b/package/tests/testthat/test-tables-concomitant-medications-cmt01.R @@ -0,0 +1 @@ +test_article("tables/concomitant-medications/cmt01.qmd") diff --git a/package/tests/testthat/test-tables-concomitant-medications-cmt01a.R b/package/tests/testthat/test-tables-concomitant-medications-cmt01a.R new file mode 100644 index 0000000000..be0583cb10 --- /dev/null +++ b/package/tests/testthat/test-tables-concomitant-medications-cmt01a.R @@ -0,0 +1 @@ +test_article("tables/concomitant-medications/cmt01a.qmd") diff --git a/package/tests/testthat/test-tables-concomitant-medications-cmt01b.R b/package/tests/testthat/test-tables-concomitant-medications-cmt01b.R new file mode 100644 index 0000000000..a59ed90dcf --- /dev/null +++ b/package/tests/testthat/test-tables-concomitant-medications-cmt01b.R @@ -0,0 +1 @@ +test_article("tables/concomitant-medications/cmt01b.qmd") diff --git a/package/tests/testthat/test-tables-concomitant-medications-cmt02_pt.R b/package/tests/testthat/test-tables-concomitant-medications-cmt02_pt.R new file mode 100644 index 0000000000..1d3fd82ce7 --- /dev/null +++ b/package/tests/testthat/test-tables-concomitant-medications-cmt02_pt.R @@ -0,0 +1 @@ +test_article("tables/concomitant-medications/cmt02_pt.qmd") diff --git a/package/tests/testthat/test-tables-deaths-dtht01.R b/package/tests/testthat/test-tables-deaths-dtht01.R new file mode 100644 index 0000000000..89edcf69e2 --- /dev/null +++ b/package/tests/testthat/test-tables-deaths-dtht01.R @@ -0,0 +1 @@ +test_article("tables/deaths/dtht01.qmd") diff --git a/package/tests/testthat/test-tables-demography-dmt01.R b/package/tests/testthat/test-tables-demography-dmt01.R new file mode 100644 index 0000000000..44e09fc7bf --- /dev/null +++ b/package/tests/testthat/test-tables-demography-dmt01.R @@ -0,0 +1 @@ +test_article("tables/demography/dmt01.qmd") diff --git a/package/tests/testthat/test-tables-disclosures-disclosurest01.R b/package/tests/testthat/test-tables-disclosures-disclosurest01.R new file mode 100644 index 0000000000..71850333da --- /dev/null +++ b/package/tests/testthat/test-tables-disclosures-disclosurest01.R @@ -0,0 +1 @@ +test_article("tables/disclosures/disclosurest01.qmd") diff --git a/package/tests/testthat/test-tables-disclosures-eudrat01.R b/package/tests/testthat/test-tables-disclosures-eudrat01.R new file mode 100644 index 0000000000..ff5b1c152d --- /dev/null +++ b/package/tests/testthat/test-tables-disclosures-eudrat01.R @@ -0,0 +1 @@ +test_article("tables/disclosures/eudrat01.qmd") diff --git a/package/tests/testthat/test-tables-disclosures-eudrat02.R b/package/tests/testthat/test-tables-disclosures-eudrat02.R new file mode 100644 index 0000000000..94c7d3921c --- /dev/null +++ b/package/tests/testthat/test-tables-disclosures-eudrat02.R @@ -0,0 +1 @@ +test_article("tables/disclosures/eudrat02.qmd") diff --git a/package/tests/testthat/test-tables-disposition-dst01.R b/package/tests/testthat/test-tables-disposition-dst01.R new file mode 100644 index 0000000000..d750a50135 --- /dev/null +++ b/package/tests/testthat/test-tables-disposition-dst01.R @@ -0,0 +1 @@ +test_article("tables/disposition/dst01.qmd") diff --git a/package/tests/testthat/test-tables-disposition-pdt01.R b/package/tests/testthat/test-tables-disposition-pdt01.R new file mode 100644 index 0000000000..2427c2a4e7 --- /dev/null +++ b/package/tests/testthat/test-tables-disposition-pdt01.R @@ -0,0 +1 @@ +test_article("tables/disposition/pdt01.qmd") diff --git a/package/tests/testthat/test-tables-disposition-pdt02.R b/package/tests/testthat/test-tables-disposition-pdt02.R new file mode 100644 index 0000000000..be631138bb --- /dev/null +++ b/package/tests/testthat/test-tables-disposition-pdt02.R @@ -0,0 +1 @@ +test_article("tables/disposition/pdt02.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-aovt01.R b/package/tests/testthat/test-tables-efficacy-aovt01.R new file mode 100644 index 0000000000..ba881d9015 --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-aovt01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/aovt01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-aovt02.R b/package/tests/testthat/test-tables-efficacy-aovt02.R new file mode 100644 index 0000000000..ea0dafc0ea --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-aovt02.R @@ -0,0 +1 @@ +test_article("tables/efficacy/aovt02.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-aovt03.R b/package/tests/testthat/test-tables-efficacy-aovt03.R new file mode 100644 index 0000000000..25cee6935b --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-aovt03.R @@ -0,0 +1 @@ +test_article("tables/efficacy/aovt03.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-cfbt01.R b/package/tests/testthat/test-tables-efficacy-cfbt01.R new file mode 100644 index 0000000000..8263084c3b --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-cfbt01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/cfbt01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-cmht01.R b/package/tests/testthat/test-tables-efficacy-cmht01.R new file mode 100644 index 0000000000..37f368a6ec --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-cmht01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/cmht01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-coxt01.R b/package/tests/testthat/test-tables-efficacy-coxt01.R new file mode 100644 index 0000000000..c1dd35972c --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-coxt01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/coxt01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-coxt02.R b/package/tests/testthat/test-tables-efficacy-coxt02.R new file mode 100644 index 0000000000..315b36dc6c --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-coxt02.R @@ -0,0 +1 @@ +test_article("tables/efficacy/coxt02.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-dort01.R b/package/tests/testthat/test-tables-efficacy-dort01.R new file mode 100644 index 0000000000..f75b1eb269 --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-dort01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/dort01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-lgrt02.R b/package/tests/testthat/test-tables-efficacy-lgrt02.R new file mode 100644 index 0000000000..bc05220f65 --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-lgrt02.R @@ -0,0 +1 @@ +test_article("tables/efficacy/lgrt02.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-mmrmt01.R b/package/tests/testthat/test-tables-efficacy-mmrmt01.R new file mode 100644 index 0000000000..82c1dd03c7 --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-mmrmt01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/mmrmt01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-onct05.R b/package/tests/testthat/test-tables-efficacy-onct05.R new file mode 100644 index 0000000000..42202d39ac --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-onct05.R @@ -0,0 +1 @@ +test_article("tables/efficacy/onct05.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-ratet01.R b/package/tests/testthat/test-tables-efficacy-ratet01.R new file mode 100644 index 0000000000..1f63c9a637 --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-ratet01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/ratet01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-rspt01.R b/package/tests/testthat/test-tables-efficacy-rspt01.R new file mode 100644 index 0000000000..b51581fcba --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-rspt01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/rspt01.qmd") diff --git a/package/tests/testthat/test-tables-efficacy-ttet01.R b/package/tests/testthat/test-tables-efficacy-ttet01.R new file mode 100644 index 0000000000..bdf09b5df6 --- /dev/null +++ b/package/tests/testthat/test-tables-efficacy-ttet01.R @@ -0,0 +1 @@ +test_article("tables/efficacy/ttet01.qmd") diff --git a/package/tests/testthat/test-tables-exposure-ext01.R b/package/tests/testthat/test-tables-exposure-ext01.R new file mode 100644 index 0000000000..d9c953e0d0 --- /dev/null +++ b/package/tests/testthat/test-tables-exposure-ext01.R @@ -0,0 +1 @@ +test_article("tables/exposure/ext01.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt01.R b/package/tests/testthat/test-tables-lab-results-lbt01.R new file mode 100644 index 0000000000..e073c5ca7e --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt01.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt01.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt02.R b/package/tests/testthat/test-tables-lab-results-lbt02.R new file mode 100644 index 0000000000..f26bb9230a --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt02.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt02.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt03.R b/package/tests/testthat/test-tables-lab-results-lbt03.R new file mode 100644 index 0000000000..b4d0836ed1 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt03.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt03.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt04.R b/package/tests/testthat/test-tables-lab-results-lbt04.R new file mode 100644 index 0000000000..a91b2c2e64 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt04.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt04.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt05.R b/package/tests/testthat/test-tables-lab-results-lbt05.R new file mode 100644 index 0000000000..0465524209 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt05.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt05.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt06.R b/package/tests/testthat/test-tables-lab-results-lbt06.R new file mode 100644 index 0000000000..212ee9d57e --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt06.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt06.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt07.R b/package/tests/testthat/test-tables-lab-results-lbt07.R new file mode 100644 index 0000000000..57a1c887e8 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt07.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt07.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt08.R b/package/tests/testthat/test-tables-lab-results-lbt08.R new file mode 100644 index 0000000000..2b07176f74 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt08.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt08.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt09.R b/package/tests/testthat/test-tables-lab-results-lbt09.R new file mode 100644 index 0000000000..54f535d510 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt09.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt09.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt10.R b/package/tests/testthat/test-tables-lab-results-lbt10.R new file mode 100644 index 0000000000..7bc32f1e5b --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt10.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt10.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt10_bl.R b/package/tests/testthat/test-tables-lab-results-lbt10_bl.R new file mode 100644 index 0000000000..fe4e53a08e --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt10_bl.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt10_bl.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt11.R b/package/tests/testthat/test-tables-lab-results-lbt11.R new file mode 100644 index 0000000000..5ad9f1c07c --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt11.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt11.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt11_bl.R b/package/tests/testthat/test-tables-lab-results-lbt11_bl.R new file mode 100644 index 0000000000..ca17cdeff4 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt11_bl.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt11_bl.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt12.R b/package/tests/testthat/test-tables-lab-results-lbt12.R new file mode 100644 index 0000000000..25959bcce9 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt12.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt12.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt12_bl.R b/package/tests/testthat/test-tables-lab-results-lbt12_bl.R new file mode 100644 index 0000000000..a4df229063 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt12_bl.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt12_bl.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt13.R b/package/tests/testthat/test-tables-lab-results-lbt13.R new file mode 100644 index 0000000000..deafa73cf9 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt13.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt13.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt14.R b/package/tests/testthat/test-tables-lab-results-lbt14.R new file mode 100644 index 0000000000..ffd3a82181 --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt14.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt14.qmd") diff --git a/package/tests/testthat/test-tables-lab-results-lbt15.R b/package/tests/testthat/test-tables-lab-results-lbt15.R new file mode 100644 index 0000000000..412e9dc55f --- /dev/null +++ b/package/tests/testthat/test-tables-lab-results-lbt15.R @@ -0,0 +1 @@ +test_article("tables/lab-results/lbt15.qmd") diff --git a/package/tests/testthat/test-tables-medical-history-mht01.R b/package/tests/testthat/test-tables-medical-history-mht01.R new file mode 100644 index 0000000000..71b11243a8 --- /dev/null +++ b/package/tests/testthat/test-tables-medical-history-mht01.R @@ -0,0 +1 @@ +test_article("tables/medical-history/mht01.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkct01.R b/package/tests/testthat/test-tables-pharmacokinetic-pkct01.R new file mode 100644 index 0000000000..e33c491f5b --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkct01.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkct01.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt02.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt02.R new file mode 100644 index 0000000000..8ae9faf15e --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt02.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt02.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt03.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt03.R new file mode 100644 index 0000000000..a6d9fa6f46 --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt03.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt03.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt04.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt04.R new file mode 100644 index 0000000000..c8cdd9ea29 --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt04.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt04.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt05.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt05.R new file mode 100644 index 0000000000..9348bd1d8e --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt05.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt05.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt06.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt06.R new file mode 100644 index 0000000000..fea964ef59 --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt06.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt06.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt07.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt07.R new file mode 100644 index 0000000000..50002b8268 --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt07.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt07.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt08.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt08.R new file mode 100644 index 0000000000..7fd2634906 --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt08.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt08.qmd") diff --git a/package/tests/testthat/test-tables-pharmacokinetic-pkpt11.R b/package/tests/testthat/test-tables-pharmacokinetic-pkpt11.R new file mode 100644 index 0000000000..78895401c8 --- /dev/null +++ b/package/tests/testthat/test-tables-pharmacokinetic-pkpt11.R @@ -0,0 +1 @@ +test_article("tables/pharmacokinetic/pkpt11.qmd") diff --git a/package/tests/testthat/test-tables-risk-management-plan-rmpt01.R b/package/tests/testthat/test-tables-risk-management-plan-rmpt01.R new file mode 100644 index 0000000000..43c4241a45 --- /dev/null +++ b/package/tests/testthat/test-tables-risk-management-plan-rmpt01.R @@ -0,0 +1 @@ +test_article("tables/risk-management-plan/rmpt01.qmd") diff --git a/package/tests/testthat/test-tables-risk-management-plan-rmpt03.R b/package/tests/testthat/test-tables-risk-management-plan-rmpt03.R new file mode 100644 index 0000000000..81e439a654 --- /dev/null +++ b/package/tests/testthat/test-tables-risk-management-plan-rmpt03.R @@ -0,0 +1 @@ +test_article("tables/risk-management-plan/rmpt03.qmd") diff --git a/package/tests/testthat/test-tables-risk-management-plan-rmpt04.R b/package/tests/testthat/test-tables-risk-management-plan-rmpt04.R new file mode 100644 index 0000000000..a93c3d6156 --- /dev/null +++ b/package/tests/testthat/test-tables-risk-management-plan-rmpt04.R @@ -0,0 +1 @@ +test_article("tables/risk-management-plan/rmpt04.qmd") diff --git a/package/tests/testthat/test-tables-risk-management-plan-rmpt05.R b/package/tests/testthat/test-tables-risk-management-plan-rmpt05.R new file mode 100644 index 0000000000..cdf1009344 --- /dev/null +++ b/package/tests/testthat/test-tables-risk-management-plan-rmpt05.R @@ -0,0 +1 @@ +test_article("tables/risk-management-plan/rmpt05.qmd") diff --git a/package/tests/testthat/test-tables-risk-management-plan-rmpt06.R b/package/tests/testthat/test-tables-risk-management-plan-rmpt06.R new file mode 100644 index 0000000000..b99e063d15 --- /dev/null +++ b/package/tests/testthat/test-tables-risk-management-plan-rmpt06.R @@ -0,0 +1 @@ +test_article("tables/risk-management-plan/rmpt06.qmd") diff --git a/package/tests/testthat/test-tables-safety-enrollment01.R b/package/tests/testthat/test-tables-safety-enrollment01.R new file mode 100644 index 0000000000..4a1813e22c --- /dev/null +++ b/package/tests/testthat/test-tables-safety-enrollment01.R @@ -0,0 +1 @@ +test_article("tables/safety/enrollment01.qmd") diff --git a/package/tests/testthat/test-tables-vital-signs-vst01.R b/package/tests/testthat/test-tables-vital-signs-vst01.R new file mode 100644 index 0000000000..35056e082a --- /dev/null +++ b/package/tests/testthat/test-tables-vital-signs-vst01.R @@ -0,0 +1 @@ +test_article("tables/vital-signs/vst01.qmd") diff --git a/package/tests/testthat/test-tables-vital-signs-vst02.R b/package/tests/testthat/test-tables-vital-signs-vst02.R new file mode 100644 index 0000000000..af849898da --- /dev/null +++ b/package/tests/testthat/test-tables-vital-signs-vst02.R @@ -0,0 +1 @@ +test_article("tables/vital-signs/vst02.qmd")