Skip to content

Commit e5f6fd5

Browse files
committed
initial commit
1 parent 4109c65 commit e5f6fd5

File tree

6 files changed

+158
-6
lines changed

6 files changed

+158
-6
lines changed

R/CICD.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ words <- spelling::spell_check_files(list.files(pattern = ".*.qmd$", recursive =
1414
)
1515
# now you can add words to the wordlist
1616
#-- uncomment the following line
17-
# write(words[[1]], file = "inst/WORDLIST.txt", append = TRUE)
17+
write(words[[1]], file = "inst/WORDLIST.txt", append = TRUE)
1818

1919
spelling::spell_check_files(list.files(pattern = ".*.qmd$", recursive = TRUE),
2020
ignore = readr::read_lines("inst/WORDLIST.txt")

R/create_blogpost.R

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ c("Metadata", "SDTM", "ADaM", "TLG", "Shiny", "Community", "Conferences", "Submi
1111

1212
# Fill in the info, e.g.:
1313
create_post(
14-
post_name = "My Blog", # needs to be character vector (length 1)
15-
post_date = "2024-12-01", # needs to be character vector (length 1)
14+
post_name = "Code collaboration in NEST", # needs to be character vector (length 1)
15+
post_date = "2025-03-11", # needs to be character vector (length 1)
1616
description = "", # you can fill the description in later as well
17-
author = c("My Name"), # one or more authors are permitted
18-
cover_image = "pharmaverse", # chose one of the above (see line 8)
19-
tags = c("submission", "ADaMs", "conferences", "admiral", "xportr", "metatools", "metacore") # chose (multiple) from line 10
17+
author = c("Ilse Augustyns", "Nicholas Masel", "Tad Lewandowski", "Gabriel Becker"), # one or more authors are permitted
18+
cover_image = "rtables", # chose one of the above (see line 8)
19+
tags = c("TLG", "ADaM") # chose (multiple) from line 10
2020
)
2121

2222

inst/WORDLIST.txt

+1
Original file line numberDiff line numberDiff line change
@@ -788,3 +788,4 @@ IMWG
788788
strived
789789
admiralonco
790790
admiralophtha
791+
IM
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
library(dplyr)
2+
# markdown helpers --------------------------------------------------------
3+
4+
markdown_appendix <- function(name, content) {
5+
paste(paste("##", name, "{.appendix}"), " ", content, sep = "\n")
6+
}
7+
markdown_link <- function(text, path) {
8+
paste0("[", text, "](", path, ")")
9+
}
10+
11+
12+
13+
# worker functions --------------------------------------------------------
14+
15+
insert_source <- function(repo_spec, name,
16+
collection = "posts",
17+
branch = "main",
18+
host = "https://github.com",
19+
text = "Source",
20+
file_name) {
21+
path <- paste(
22+
host,
23+
repo_spec,
24+
"tree",
25+
branch,
26+
collection,
27+
name,
28+
file_name,
29+
sep = "/"
30+
)
31+
return(markdown_link(text, path))
32+
}
33+
34+
insert_timestamp <- function(tzone = Sys.timezone()) {
35+
time <- lubridate::now(tzone = tzone)
36+
stamp <- as.character(time, tz = tzone, usetz = TRUE)
37+
return(stamp)
38+
}
39+
40+
insert_lockfile <- function(repo_spec, name,
41+
collection = "posts",
42+
branch = "main",
43+
host = "https://github.com",
44+
text = "Session info") {
45+
path <- path <- "https://pharmaverse.github.io/blog/session_info.html"
46+
47+
return(markdown_link(text, path))
48+
}
49+
50+
51+
52+
# top level function ------------------------------------------------------
53+
54+
insert_appendix <- function(repo_spec, name, collection = "posts", file_name) {
55+
appendices <- paste(
56+
markdown_appendix(
57+
name = "Last updated",
58+
content = insert_timestamp()
59+
),
60+
" ",
61+
markdown_appendix(
62+
name = "Details",
63+
content = paste(
64+
insert_source(repo_spec, name, collection, file_name = file_name),
65+
# get renv information,
66+
insert_lockfile(repo_spec, name, collection),
67+
sep = ", "
68+
)
69+
),
70+
sep = "\n"
71+
)
72+
knitr::asis_output(appendices)
73+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
title: "Code collaboration in NEST"
3+
author:
4+
- name: Ilse Augustyns, Principal Technical Lead, Clinical & Statistical Programming, IDAR
5+
- name: Nicholas Masel, Associate Director, Clinical & Statistical Programming, IDAR
6+
- name: Tad Lewandowski, Director, Clinical & Statistical Programming, IDAR
7+
- name: Gabriel Becker, contractor for Clinical & Statistical Programming, IDAR
8+
- name: IDAR, Johnson & Johnson, Innovative Medicine
9+
description: "Announcement on code collaboration for the NEST framework between Roche and Clinical & Statistical Programming, Johnson & Johnson Innovative Medicine"
10+
date: "2025-03-11"
11+
# please do not use any non-default categories.
12+
# You can find the default categories in the repository README.md
13+
categories: [TLG, Community]
14+
# feel free to change the image
15+
image: "rtables.png"
16+
17+
---
18+
19+
<!--------------- typical setup ----------------->
20+
21+
```{r setup, include=FALSE}
22+
long_slug <- "2025-03-11_code_collaborati..."
23+
# renv::use(lockfile = "renv.lock")
24+
```
25+
26+
<!--------------- post begins here ----------------->
27+
28+
In the ever-evolving field of clinical data analysis, innovation and collaboration are key. Today, we are pleased to share an initial, yet important milestone as part of a collaboration effort between Roche and Clinical & Statistical Programming, IDAR, J&J Innovative Medicine (further referred to as C&SP IDAR) within the NEST framework.
29+
30+
### Table creation in clinical reporting in pharma
31+
32+
In clinical trials, the presentation of data is as crucial as the data itself. Clear, accurate, and standardized tables ensure that the results are interpreted correctly and that regulatory bodies can easily review and approve submissions.
33+
34+
For an overview of creation of tables within end-to-end clinical reporting in pharma, both [Pharmaverse TLGs Overview](https://pharmaverse.org/e2eclinical/tlg/) and the effort from [R Consortium](https://rconsortium.github.io/rtrs-wg/) are a useful read to compare examples from several packages.
35+
36+
### Code collaboration
37+
38+
Moving forward at C&SP IDAR, we are transitioning towards adopting R as our preferred analytical tool, and we were thrilled with the capabilities within the NEST framework ([`{rtables}`](https://insightsengineering.github.io/rtables/){target="_blank"} [`{tern}`](https://insightsengineering.github.io/tern/){target="_blank"} and [`{teal}`](https://insightsengineering.github.io/teal/){target="_blank"}) designed by Roche.
39+
40+
As of today, we are building our new internal standard table shells using the open source packages from this NEST framework.
41+
42+
The `{rtables}` package is designed to simplify and standardize the process of creating tables for clinical trial reports. It offers a flexible and robust framework for generating high-quality, reproducible tables that adhere to industry standards.
43+
44+
While the framework is robust in terms of type of analysis that can be performed, a key requirement for `C&SP IDAR` was not met. Our table output format requirement is the usage of `rtf` with `non-monospace` fonts.
45+
46+
As such, the initial scope of our collaboration was focusing on this **Output Format Customization** requirement.
47+
48+
We are proud to share the first result of the collaboration effort! With the current [CRAN](https://cran.r-project.org/web/packages/rtables/index.html){target="_blank"} release of `{rtables}`, we can achieve outputs to be created in our desired output format. See the [NEWS updates](https://cran.r-project.org/web/packages/rtables/news/news.html){target="_blank"} (rtables 0.6.8) to find out more details on the new features.
49+
50+
By improving the efficiency and reliability of data presentation, researchers can focus more on the science and less on the formatting. With this update, we have to focus even less on output formatting issues.
51+
52+
### Get Involved
53+
54+
We believe in the power of community and open-source development.
55+
56+
We are thankful to Roche for welcoming us as a new collaborator and giving us the opportunity to being part of this journey. Let's make clinical data analysis smarter, faster, and more reliable than ever before!
57+
58+
This partnership marks a significant milestone in our commitment to contribute to open source package development within a cross pharma network of companies.
59+
60+
We are excited about the potential of NEST packages to transform the way clinical trial data is presented and are confident that, with combined expertise, our industry can achieve remarkable results.
61+
62+
For more information, visit the [NEST project page](https://insightsengineering.github.io/nest/index.html){target="_blank"}, and don't forget to follow our progress on [GitHub](https://github.com/insightsengineering){target="_blank"}.
63+
64+
As we embarked on this journey, we invite you to join us. Whether you’re an experienced user with feedback, a developer interested in contributing code, or a researcher looking to leverage `{rtables}`, `{tern}`, `{teal}` for your projects, your input is invaluable.
65+
66+
We welcome both individual contributors and organizations. Please reach out to contribute via our [GitHub](https://insightsengineering.github.io/rtables/){target="_blank"} or via [Slack](https://app.slack.com/client/t028pb489d3/c02m8kn8269){target="_blank"} (if you don’t have access, join pharmaverse.slack.com using [link](https://join.slack.com/t/pharmaverse/shared_invite/zt-yv5atkr4-Np2ytJ6W_QKz_4Olo7Jo9A){target="_blank"})
67+
68+
<!--------------- appendices go here ----------------->
69+
70+
```{r, echo=FALSE, message=FALSE}
71+
source("appendix.R")
72+
insert_appendix(
73+
repo_spec = "pharmaverse/blog",
74+
name = long_slug,
75+
# file_name should be the name of your file
76+
file_name = list.files() %>% stringr::str_subset(".qmd") %>% first()
77+
)
78+
```
Loading

0 commit comments

Comments
 (0)