From 22343b8ebc3c27b443b3aafa5d90540e984b2d36 Mon Sep 17 00:00:00 2001 From: Rammprasad Ganapathy Date: Tue, 30 Jul 2024 23:31:51 +0000 Subject: [PATCH 01/16] Readme update --- README.Rmd | 50 +++++++++++++++++++++++++++++++++ README.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) diff --git a/README.Rmd b/README.Rmd index d24d7a47..1d58ed9e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -26,9 +26,59 @@ can automate SDTM creation based on the standard SDTM spec. ## Installation +The package is available from CRAN and can be installed with: + +```r +install.packages("sdtm.oak") +``` + You can install the development version of `{sdtm.oak}` from [GitHub](https://github.com/pharmaverse/sdtm.oak/) with: ``` r # install.packages("remotes") remotes::install_github("pharmaverse/sdtm.oak") ``` + +## Challenges with SDTM at the Industry Level + +* Raw Data Structure: Data from different EDC systems come in varying structures, with different variable names, dataset names, etc. + +* Varying Data Collection Standards: Despite the availability of CDASH, pharmaceutical companies still create different eCRFs using CDASH standards. + +Due to the differences in raw data structures and data collection standards, it may seem impossible to develop a common approach for programming SDTM datasets. + +## GOAL +{sdtm.oak} aims to address this issue by providing an EDC-agnostic, standards-agnostic solution. It is an open-source R package that offers a framework for the modular programming of SDTM in R. With future releases; it will also strive to automate the creation of SDTM datasets based on the metadata-driven approach using standard SDTM specifications. + +## Scope +Our goal is to use {sdtm.oak} to program most of the domains specified in SDTMIG (Study Data Tabulation Model Implementation Guide: Human Clinical Trials) and SDTMIG-AP (Study Data Tabulation Model Implementation Guide: Associated Persons). This R package is based on the core concept of `algorithms`, implemented as functions capable of carrying out the SDTM mappings for any domains listed in the CDISC SDTMIG and across different versions of SDTM IGs. The design of these functions allows users to specify a raw dataset and a variable name(s) as parameters, making it EDC (Electronic Data Capture) agnostic. As long as the raw dataset and variable name(s) exist, {sdtm.oak} will execute the SDTM mapping using the selected function. It's important to note that {sdtm.oak} may not handle sponsor-specific details related to managing metadata for LAB tests, unit conversions, and coding information, as many companies have unique business processes. With subsequent releases, strive to automate SDTM creation using a metadata-driven approach based on a standard SDTM specification format. + +## Road Map + +This Release: The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, Associated Person domains, and EPOCH Variable across all domains. + +Subsequent Releases: +We are planning to develop the below features in the subsequent releases.\ +- Functions required to derive reference date variables in the DM domain.\ +- Metadata driven automation based on the standardized SDTM specification.\ +- Functions required to program the EPOCH Variable.\ +- Functions to derive standard units and results based on metadata. + +## References and Documentation + +* Please go to [Algorithms](https://pharmaverse.github.io/sdtm.oak/articles/algorithms.html) article to learn about Algorithms. +* Please go to [Create Events Domain](https://pharmaverse.github.io/sdtm.oak/articles/events_domain.html) to learn about step by step process to create an Events domain. +* Please go to [Create Findings Domain](https://pharmaverse.github.io/sdtm.oak/articles/findings_domain.html) to learn about step by step process to create an Events domain. + +## Feedback + +We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below. + +[Slack](oakgarden.slack.com) + +[GitHub](https://github.com/pharmaverse/sdtm.oak/issues) + + + + + diff --git a/README.md b/README.md index f3e1c0c0..d1b728c5 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,84 @@ You can install the development version of `{sdtm.oak}` from # install.packages("remotes") remotes::install_github("pharmaverse/sdtm.oak") ``` + +## Challenges with SDTM at the Industry Level + +- Raw Data Structure: Data from different EDC systems come in varying + structures, with different variable names, dataset names, etc. + +- Varying Data Collection Standards: Despite the availability of CDASH, + pharmaceutical companies still create different eCRFs using CDASH + standards. + +Due to the differences in raw data structures and data collection +standards, it may seem impossible to develop a common approach for +programming SDTM datasets. + +## GOAL + +{sdtm.oak} aims to address this issue by providing an EDC-agnostic, +standards-agnostic solution. It is an open-source R package that offers +a framework for the modular programming of SDTM in R. With future +releases; it will also strive to automate the creation of SDTM datasets +based on the metadata-driven approach using standard SDTM +specifications. + +## Scope + +Our goal is to use {sdtm.oak} to program most of the domains specified +in SDTMIG (Study Data Tabulation Model Implementation Guide: Human +Clinical Trials) and SDTMIG-AP (Study Data Tabulation Model +Implementation Guide: Associated Persons). This R package is based on +the core concept of `algorithms`, implemented as functions capable of +carrying out the SDTM mappings for any domains listed in the CDISC +SDTMIG and across different versions of SDTM IGs. The design of these +functions allows users to specify a raw dataset and a variable name(s) +as parameters, making it EDC (Electronic Data Capture) agnostic. As long +as the raw dataset and variable name(s) exist, {sdtm.oak} will execute +the SDTM mapping using the selected function. It’s important to note +that {sdtm.oak} may not handle sponsor-specific details related to +managing metadata for LAB tests, unit conversions, and coding +information, as many companies have unique business processes. With +subsequent releases, strive to automate SDTM creation using a +metadata-driven approach based on a standard SDTM specification format. + +## Road Map + +This Release: The V0.1 release of {sdtm.oak} users can create the +majority of the SDTM domains. Domains that are NOT in scope for the V0.1 +release are DM, Trial Design Domains, SV, SE, Associated Person domains, +and EPOCH Variable across all domains. + +Subsequent Releases: We are planning to develop the below features in +the subsequent releases. +- Functions required to derive reference date variables in the DM +domain. +- Metadata driven automation based on the standardized SDTM +specification. +- Functions required to program the EPOCH Variable. +- Functions to derive standard units and results based on metadata. + +## References and Documentation + +- Please go to + [Algorithms](https://pharmaverse.github.io/sdtm.oak/articles/algorithms.html) + article to learn about Algorithms. +- Please go to [Create Events + Domain](https://pharmaverse.github.io/sdtm.oak/articles/events_domain.html) + to learn about step by step process to create an Events domain. +- Please go to [Create Findings + Domain](https://pharmaverse.github.io/sdtm.oak/articles/findings_domain.html) + to learn about step by step process to create an Events domain. + +## Feedback + +We ask users to follow the mentioned approach and try {sdtm.oak} to map +any SDTM domains supported in this release. Users can also utilize the +test data in the package to become familiar with the concepts before +attempting on their own data. Please get in touch with us using one of +the recommended approaches listed below. + +[Slack](oakgarden.slack.com) + +[GitHub](https://github.com/pharmaverse/sdtm.oak/issues) From 349865b7e411ace54bbff801897819f5ad9c359d Mon Sep 17 00:00:00 2001 From: Rammprasad Ganapathy Date: Wed, 31 Jul 2024 05:34:41 +0000 Subject: [PATCH 02/16] Documentation updates --- NEWS.md | 46 +++++++++++++++++++++++++++++++++++----------- README.Rmd | 6 +++++- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/NEWS.md b/NEWS.md index 0f9a8602..264b6b1a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,33 +1,57 @@ +# sdtm.oak 0.1 + +- Functions for commonly used SDTM mapping Algorithms + - assign_no_ct\ + - assign_ct\ + - hardcode_no_ct\ + - hardcode_ct\ + - assign_datetime\ + - condition_add\ +- Functions for SDTM derived variables\ + - Derive Baseline Flag or Last Observation Before Exposure Flag\ + - Derive the sequence number (--SEQ) variable\ + - Derive study day\ + - ISO8601 date, datetime conversion.\ +- Functions to support {sdtm.oak} + - derive oak id variables + - Create conditioned dataframes to support if then else conditions in SDTM mappings + - Import study controlled terminology +- Articles + - Algorithms + - Creating an Events SDTM domain + - Creating a Findings SDTM domain + - Conditioned Data Frames + - Converting dates, times or date-times to ISO 8601 + - All about Metadata + # sdtm.oak 0.0.0.9005 (development version) -* New function for creating conditioned data frames: `condition_add()`. -* New pipe operator: `%.>%` for explicit dot placeholder placement. -* `oak_id_vars()` is now an exported function. +- New function for creating conditioned data frames: `condition_add()`. +- New pipe operator: `%.>%` for explicit dot placeholder placement. +- `oak_id_vars()` is now an exported function. # sdtm.oak 0.0.0.9004 (development version) -* New function: `derive_seq()` for deriving a sequence number variable. +- New function: `derive_seq()` for deriving a sequence number variable. # sdtm.oak 0.0.0.9003 (development version) ## New Features -* New function: `assign_datetime()` for deriving an ISO8601 date-time variable. +- New function: `assign_datetime()` for deriving an ISO8601 date-time variable. # sdtm.oak 0.0.0.9002 (development version) ## New Features -* New function: `derive_study_day()` for study day calculation. +- New function: `derive_study_day()` for study day calculation. -* New functions for basic SDTM derivations: ` assign_no_ct()`, `assign_ct()`, -`hardcode_no_ct()` and `hardcode_ct()`. +- New functions for basic SDTM derivations: `assign_no_ct()`, `assign_ct()`, `hardcode_no_ct()` and `hardcode_ct()`. -* New functions for handling controlled terminologies: `read_ct_spec()`, -`read_ct_spec_example()`, `ct_spec_example()` and `ct_map()`. +- New functions for handling controlled terminologies: `read_ct_spec()`, `read_ct_spec_example()`, `ct_spec_example()` and `ct_map()`. # sdtm.oak 0.0.0.9001 (development version) ## New Features -* New function `create_iso8601()` for conversion of vectors of dates, times or date-times to ISO8601 format. +- New function `create_iso8601()` for conversion of vectors of dates, times or date-times to ISO8601 format. diff --git a/README.Rmd b/README.Rmd index 1d58ed9e..f2e25a5a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -74,10 +74,14 @@ We are planning to develop the below features in the subsequent releases.\ We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below. -[Slack](oakgarden.slack.com) +[Slack](https://oakgarden.slack.com) [GitHub](https://github.com/pharmaverse/sdtm.oak/issues) +## Acknowledgments + +We thank the contributors and authors of the package. We also thank the CDISC COSA for sponsoring the {sdtm.oak}. Additionally, we would like to sincerely thank the volunteers from Roche, Pfizer, GSK, Vertex, and Merck for their valuable input as integral members of the CDISC COSA - OAK leadership team. + From 717b0deb25f1e0138ead8096d5d53b0507eca2a2 Mon Sep 17 00:00:00 2001 From: Rammprasad Ganapathy Date: Wed, 31 Jul 2024 06:50:32 +0000 Subject: [PATCH 03/16] Documentation updates --- NEWS.md | 4 +- README.Rmd | 2 +- vignettes/study_sdtm_spec.Rmd | 147 +++++++++------------------------- 3 files changed, 41 insertions(+), 112 deletions(-) diff --git a/NEWS.md b/NEWS.md index 264b6b1a..69f19273 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # sdtm.oak 0.1 +The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are *NOT* in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. + - Functions for commonly used SDTM mapping Algorithms - assign_no_ct\ - assign_ct\ @@ -22,7 +24,7 @@ - Creating a Findings SDTM domain - Conditioned Data Frames - Converting dates, times or date-times to ISO 8601 - - All about Metadata + - Path to Automation # sdtm.oak 0.0.0.9005 (development version) diff --git a/README.Rmd b/README.Rmd index f2e25a5a..2d44f522 100644 --- a/README.Rmd +++ b/README.Rmd @@ -55,7 +55,7 @@ Our goal is to use {sdtm.oak} to program most of the domains specified in SDTMIG ## Road Map -This Release: The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, Associated Person domains, and EPOCH Variable across all domains. +This Release: The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. Subsequent Releases: We are planning to develop the below features in the subsequent releases.\ diff --git a/vignettes/study_sdtm_spec.Rmd b/vignettes/study_sdtm_spec.Rmd index 3f4715d2..0e006905 100644 --- a/vignettes/study_sdtm_spec.Rmd +++ b/vignettes/study_sdtm_spec.Rmd @@ -1,5 +1,5 @@ --- -title: "All about Metadata" +title: "Path to Automation" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{All about Metadata} @@ -25,8 +25,17 @@ knitr::opts_chunk$set( options(rmarkdown.html_vignette.check_title = FALSE) ``` -{sdtm.oak} is a metadata-driven solution that is designed to be Electronic Data -Capture (EDC) and standards agnostic. Throughout this article, the term "metadata" +The initial release of {sdtm.oak} provides a framework for modular programming of SDTM in R and sets the stage for potential automation of SDTM creation following the standardized SDTM specification. In the future, the automation workflow could involve preparing specifications and then making automated function calls to generate SDTM domains. + +The future workflow for automation could look like: + +1. Prepare SDTM specification: Users can define the raw data source, target SDTM domain, target SDTM variables, and algorithms used for automation. A template is still under development; details are also provided in this article. +2. Prepare SDTM-controlled Terminology: Users can define the SDTM-controlled terms applicable to the study. A template is still under development. +3. An automated process to read the specification and make {sdtm.oak} function calls can create the code required to generate SDTM datasets or the datasets themselves. + +This article provides an overview of metadata and a draft version of the standard SDTM specification. We plan to demonstrate the creation of standard SDTM specs from the CDISC library in collaboration with CDISC COSA. Sponsors may need to establish the necessary tools to generate this SDTM specification from their MDR to utilize the automation features of {sdtm.oak}. It's worth mentioning that this concept draws inspiration from Roche's existing implementation of the SDTM automation process using OAK. I would like to inform you that further development is required for this concept. + +Throughout this article, the term "metadata" is used several times. In this context, "metadata" refers to the specific metadata used by {sdtm.oak}. This article aims to provide users with a more detailed understanding of the {sdtm.oak} metadata. @@ -96,7 +105,6 @@ definition <- data.frame( "raw_variable_ordinal", "raw_variable_type", "raw_data_format", - "raw_codelist", "study_specific", "annotation_ordinal", "mapping_is_dataset", @@ -115,28 +123,14 @@ definition <- data.frame( "sub_algorithm", "target_hardcoded_value", "target_term_value", - "target_term_code", - "condition_ordinal", - "condition_group_ordinal", - "condition_left_raw_dataset", - "condition_left_raw_variable", - "condition_left_sdtm_domain", - "condition_left_sdtm_variable", - "condition_operator", - "condition_right_text_value", - "condition_right_sdtm_domain", - "condition_right_sdtm_variable", - "condition_right_raw_dataset", - "condition_right_raw_variable", - "condition_next_logical_operator", + "condition_add_raw_dat", + "condition_add_tgt_dat", "merge_type", "merge_left", "merge_right", "merge_condition", "unduplicate_keys", - "groupby_keys", - "target_resource_dataset", - "target_resource_variable" + "groupby_keys" ), `Description_of_the_variable` = c( "Study Number", @@ -152,10 +146,6 @@ definition <- data.frame( ), "Type of the Raw Variable", "Data format of the raw variable", - paste( - "Dictionary name which is assigned to the ", - "eCRF field or a eDT variable" - ), paste( "`TRUE` indicates that the source is study specific. ", "`FALSE` indicates that the raw variable is part of data standards" @@ -189,40 +179,12 @@ definition <- data.frame( "hardcoded text" ), paste( - "NCI code or sponsor code of the hardcoded value" - ), - paste( - "Ordinal of a (sub)condition, increasing when there ", - "are more than one sub-conditions (e.g. X AND Y)" - ), - paste( - "Ordinal of a group of sub-conditions, used to ", - "disambiguate complex conditions such as (A AND B) OR C. ", - "The ordinal increases in each group and gives the final ", - "precedence of the logical operators." - ), - "Name of the raw dataset on the left part of the condition", - "Name of the raw variable on the left part of the condition", - "Name of the SDTM variable used in the left part of the condition.", - paste( - "Name of the SDTM domain of the variable that is used in ", - "the left part of the condition." - ), - "Operator between the left and right part of the condition", - paste( - "A text that applies to the right part of the condition as ", - "indicated per `condition_operator`." - ), - "Name of the SDTM variable used in the right part of the condition.", - paste( - "Name of the SDTM domain of the variable that is used ", - "in the right part of the condition." + "Condition that has to be applied at a raw dataset ", + " before applying a mapping. Can be a valid R filter statement." ), - "Name of the raw dataset on the right part of the condition", - "Name of the raw variable on the right part of the condition", paste( - "The logical operator that applies to the next ", - "sub-conditions, typically AND, OR" + "Condition that has to be applied at a target dataset ", + " before applying a mapping. Can be a valid R filter statement." ), "Specifies the type of join", "Specifies the left component of the merge", @@ -239,16 +201,6 @@ definition <- data.frame( paste( "Raw Variables or aggregation functions (i.e. earliest, ", "latest) to group source data records before mapping to SDTM" - ), - paste( - "Raw dataset name of the raw variable. This will be used when ", - " values are assigned from a from a different source", - "other than the source the mapping is associated with" - ), - paste( - "Raw variable name. This will be used when ", - "values are assigned from a from a different source", - "other than the source the mapping is associated with" ) ), Example_Values = c( @@ -262,7 +214,6 @@ definition <- data.frame( "1, 2, 3, etc", "Text Box,
Date control", "$200,
dd MON YYYY", - "SEX, ETHNIC", "TRUE, FALSE", "1, 2, 3, etc", "TRUE, FALSE", @@ -274,36 +225,27 @@ definition <- data.frame( "(AGEU)
ISO 8601
(SEX)", "1, 2, 3", "Derived,
Assigned,
Collected,
Predecessor", - "DATASET_LEVEL
ASSIGN_CT
AE_AEREL
HARDCODE_CT", - "ASSIGN_NO_CT
HARCODE_CT", + "condition_add
assign_ct
ae_aerel
hardcode_ct", + "assign_no_ct
hardcode_ct", "ALZHEIMER'S DISEASE HISTORY", "Y,
beats/min,
INFORMED CONSENT OBTAINED", - "C49488", - "1, 2, 3", - "1, 2, 3", - "VTLS1", - "POSITION", - "AE", - "AEENRTPT", paste( - "Checked
Not_checked
Is_null
Is_not_null", - "
Equals_to
Different_to
is_numeric
in", - "
not_in" + "Map qualifier CMSTRTPT Annotation text is If MDPRIOR == 1 ", + "then CM.CMSTRTPT = 'BEFORE'", + "raw_dat parameter as condition_add(cm_raw, MDPRIOR == 1)" + ), + paste( + "Map qualifier CMDOSFRQ Annotation text is If CMTRT is not null", + " then map the collected value in raw dataset cm_raw and", + "raw variable MDFRQ to CMDOSFRQ", + "tgt_dat parameter as condition_add(., !is.na(CMTRT))" ), - "('Not Recovered/Not Resolved','Recovering/Resolving')
HOSPITALIZATION", - "AE", - "AETERM", - "SMKHX", - "SUNAM", - "and, or", "left_join
right_join
full_join
visit_join
subject_join", "VTLS1", "VACREC", "VTLS1.SUBJECT = VACREC.SUBJECT,
MD1.MDNUM = VACREC.MDNUM", "VTLS1.SUBJECT,
VTLS1.DATAPAGEID", - "TXINF1.DATAPGID,
Earliest", - "AEDE", - "DATAPAGEID" + "TXINF1.DATAPGID,
Earliest" ), Association_with_mapping_Algorithms = c( "Generic Use", @@ -316,7 +258,6 @@ definition <- data.frame( "Generic Use", "Required for all mapping algorithms", "Required for all mapping algorithms", - "Required for all mapping algorithms", "Generic Use", "Required for all mapping algorithms", "Required for all mapping algorithms", @@ -329,31 +270,17 @@ definition <- data.frame( "Required for all mapping algorithms", "Used for define.xml", "Required for all mapping algorithms", - "Only when Mapping Algorithm is
IF_THEN_ELSE
DATASET_LEVEL", - "ASSIGN_NO_CT
HARDCODE_NO_CT", - "HARDCODE_CT", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", - "IF_THEN_ELSE", + "Only when Mapping Algorithm is
condition_add
dataset_level", + "assign_no_ct
hardcode_no_ct", + "harcode_ct", + "condition_add", + "condition_add", "MERGE", "MERGE", "MERGE", "MERGE", "REMOVE_DUP", - "GROUP_BY", - "ASSIGN_NO_CT", - "ASSIGN_NO_CT" + "GROUP_BY" ), stringsAsFactors = TRUE ) From adb5b10a8ff4f74568fbc97a83f001973acd2263 Mon Sep 17 00:00:00 2001 From: Rammprasad Ganapathy Date: Wed, 31 Jul 2024 06:56:27 +0000 Subject: [PATCH 04/16] Fix link --- README.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.Rmd b/README.Rmd index 2d44f522..45fcc847 100644 --- a/README.Rmd +++ b/README.Rmd @@ -74,7 +74,7 @@ We are planning to develop the below features in the subsequent releases.\ We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below. -[Slack](https://oakgarden.slack.com) +[Slack](https://oakgarden.slack.com/) [GitHub](https://github.com/pharmaverse/sdtm.oak/issues) From 99ab53243d340a61ced57e5d46dd87ce99bc8f2b Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 11:24:46 +0100 Subject: [PATCH 05/16] whitelist words --- inst/WORDLIST | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/inst/WORDLIST b/inst/WORDLIST index bd48eb64..bcbff138 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -65,3 +65,9 @@ RFXSTDTC TPT xxTPT APSC +CDASH +COSA +IGs +RELREC +SDTMIG +SV From 764b63c8aa4a449c4051fc9d21e6cd143fe6a2f1 Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 11:32:38 +0100 Subject: [PATCH 06/16] Fix Slack URL in README --- README.Rmd | 7 +++---- README.md | 23 ++++++++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/README.Rmd b/README.Rmd index 45fcc847..be6c2977 100644 --- a/README.Rmd +++ b/README.Rmd @@ -72,11 +72,10 @@ We are planning to develop the below features in the subsequent releases.\ ## Feedback -We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below. +We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below: -[Slack](https://oakgarden.slack.com/) - -[GitHub](https://github.com/pharmaverse/sdtm.oak/issues) +- [Slack](https://oakgarden.slack.com/) +- [GitHub](https://github.com/pharmaverse/sdtm.oak/issues) ## Acknowledgments diff --git a/README.md b/README.md index d1b728c5..97d232b6 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,12 @@ standard SDTM spec. ## Installation +The package is available from CRAN and can be installed with: + +``` r +install.packages("sdtm.oak") +``` + You can install the development version of `{sdtm.oak}` from [GitHub](https://github.com/pharmaverse/sdtm.oak/) with: @@ -70,8 +76,8 @@ metadata-driven approach based on a standard SDTM specification format. This Release: The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 -release are DM, Trial Design Domains, SV, SE, Associated Person domains, -and EPOCH Variable across all domains. +release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person +domains, and EPOCH Variable across all domains. Subsequent Releases: We are planning to develop the below features in the subsequent releases. @@ -100,8 +106,15 @@ We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of -the recommended approaches listed below. +the recommended approaches listed below: + +- [Slack](https://oakgarden.slack.com/) +- [GitHub](https://github.com/pharmaverse/sdtm.oak/issues) -[Slack](oakgarden.slack.com) +## Acknowledgments -[GitHub](https://github.com/pharmaverse/sdtm.oak/issues) +We thank the contributors and authors of the package. We also thank the +CDISC COSA for sponsoring the {sdtm.oak}. Additionally, we would like to +sincerely thank the volunteers from Roche, Pfizer, GSK, Vertex, and +Merck for their valuable input as integral members of the CDISC COSA - +OAK leadership team. From 494205d700b89214f8ee2362fcc9d57067c08347 Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 11:33:56 +0100 Subject: [PATCH 07/16] Whitelist word "GSK" --- inst/WORDLIST | 1 + 1 file changed, 1 insertion(+) diff --git a/inst/WORDLIST b/inst/WORDLIST index bcbff138..d95f17e7 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -71,3 +71,4 @@ IGs RELREC SDTMIG SV +GSK From f509a65b8fb8ec31039cc25949f5172d313f825d Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 11:36:01 +0100 Subject: [PATCH 08/16] Make name of the package hyperlinked in pkgdown --- README.Rmd | 14 +++++++------- README.md | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.Rmd b/README.Rmd index be6c2977..2ab5fae3 100644 --- a/README.Rmd +++ b/README.Rmd @@ -21,7 +21,7 @@ knitr::opts_chunk$set( An EDC and Data Standard agnostic solution that enables the pharmaceutical programming community to develop SDTM datasets in R. The reusable algorithms -concept in `{sdtm.oak}` provides a framework for modular programming and also +concept in ``{sdtm.oak}`` provides a framework for modular programming and also can automate SDTM creation based on the standard SDTM spec. ## Installation @@ -32,7 +32,7 @@ The package is available from CRAN and can be installed with: install.packages("sdtm.oak") ``` -You can install the development version of `{sdtm.oak}` from [GitHub](https://github.com/pharmaverse/sdtm.oak/) with: +You can install the development version of ``{sdtm.oak}`` from [GitHub](https://github.com/pharmaverse/sdtm.oak/) with: ``` r # install.packages("remotes") @@ -48,14 +48,14 @@ remotes::install_github("pharmaverse/sdtm.oak") Due to the differences in raw data structures and data collection standards, it may seem impossible to develop a common approach for programming SDTM datasets. ## GOAL -{sdtm.oak} aims to address this issue by providing an EDC-agnostic, standards-agnostic solution. It is an open-source R package that offers a framework for the modular programming of SDTM in R. With future releases; it will also strive to automate the creation of SDTM datasets based on the metadata-driven approach using standard SDTM specifications. +`{sdtm.oak}` aims to address this issue by providing an EDC-agnostic, standards-agnostic solution. It is an open-source R package that offers a framework for the modular programming of SDTM in R. With future releases; it will also strive to automate the creation of SDTM datasets based on the metadata-driven approach using standard SDTM specifications. ## Scope -Our goal is to use {sdtm.oak} to program most of the domains specified in SDTMIG (Study Data Tabulation Model Implementation Guide: Human Clinical Trials) and SDTMIG-AP (Study Data Tabulation Model Implementation Guide: Associated Persons). This R package is based on the core concept of `algorithms`, implemented as functions capable of carrying out the SDTM mappings for any domains listed in the CDISC SDTMIG and across different versions of SDTM IGs. The design of these functions allows users to specify a raw dataset and a variable name(s) as parameters, making it EDC (Electronic Data Capture) agnostic. As long as the raw dataset and variable name(s) exist, {sdtm.oak} will execute the SDTM mapping using the selected function. It's important to note that {sdtm.oak} may not handle sponsor-specific details related to managing metadata for LAB tests, unit conversions, and coding information, as many companies have unique business processes. With subsequent releases, strive to automate SDTM creation using a metadata-driven approach based on a standard SDTM specification format. +Our goal is to use `{sdtm.oak}` to program most of the domains specified in SDTMIG (Study Data Tabulation Model Implementation Guide: Human Clinical Trials) and SDTMIG-AP (Study Data Tabulation Model Implementation Guide: Associated Persons). This R package is based on the core concept of `algorithms`, implemented as functions capable of carrying out the SDTM mappings for any domains listed in the CDISC SDTMIG and across different versions of SDTM IGs. The design of these functions allows users to specify a raw dataset and a variable name(s) as parameters, making it EDC (Electronic Data Capture) agnostic. As long as the raw dataset and variable name(s) exist, `{sdtm.oak}` will execute the SDTM mapping using the selected function. It's important to note that `{sdtm.oak}` may not handle sponsor-specific details related to managing metadata for LAB tests, unit conversions, and coding information, as many companies have unique business processes. With subsequent releases, strive to automate SDTM creation using a metadata-driven approach based on a standard SDTM specification format. ## Road Map -This Release: The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. +This Release: The V0.1 release of `{sdtm.oak}` users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. Subsequent Releases: We are planning to develop the below features in the subsequent releases.\ @@ -72,14 +72,14 @@ We are planning to develop the below features in the subsequent releases.\ ## Feedback -We ask users to follow the mentioned approach and try {sdtm.oak} to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below: +We ask users to follow the mentioned approach and try `{sdtm.oak}` to map any SDTM domains supported in this release. Users can also utilize the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below: - [Slack](https://oakgarden.slack.com/) - [GitHub](https://github.com/pharmaverse/sdtm.oak/issues) ## Acknowledgments -We thank the contributors and authors of the package. We also thank the CDISC COSA for sponsoring the {sdtm.oak}. Additionally, we would like to sincerely thank the volunteers from Roche, Pfizer, GSK, Vertex, and Merck for their valuable input as integral members of the CDISC COSA - OAK leadership team. +We thank the contributors and authors of the package. We also thank the CDISC COSA for sponsoring the `{sdtm.oak}`. Additionally, we would like to sincerely thank the volunteers from Roche, Pfizer, GSK, Vertex, and Merck for their valuable input as integral members of the CDISC COSA - OAK leadership team. diff --git a/README.md b/README.md index 97d232b6..d632fef3 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ programming SDTM datasets. ## GOAL -{sdtm.oak} aims to address this issue by providing an EDC-agnostic, +`{sdtm.oak}` aims to address this issue by providing an EDC-agnostic, standards-agnostic solution. It is an open-source R package that offers a framework for the modular programming of SDTM in R. With future releases; it will also strive to automate the creation of SDTM datasets @@ -55,7 +55,7 @@ specifications. ## Scope -Our goal is to use {sdtm.oak} to program most of the domains specified +Our goal is to use `{sdtm.oak}` to program most of the domains specified in SDTMIG (Study Data Tabulation Model Implementation Guide: Human Clinical Trials) and SDTMIG-AP (Study Data Tabulation Model Implementation Guide: Associated Persons). This R package is based on @@ -64,9 +64,9 @@ carrying out the SDTM mappings for any domains listed in the CDISC SDTMIG and across different versions of SDTM IGs. The design of these functions allows users to specify a raw dataset and a variable name(s) as parameters, making it EDC (Electronic Data Capture) agnostic. As long -as the raw dataset and variable name(s) exist, {sdtm.oak} will execute +as the raw dataset and variable name(s) exist, `{sdtm.oak}` will execute the SDTM mapping using the selected function. It’s important to note -that {sdtm.oak} may not handle sponsor-specific details related to +that `{sdtm.oak}` may not handle sponsor-specific details related to managing metadata for LAB tests, unit conversions, and coding information, as many companies have unique business processes. With subsequent releases, strive to automate SDTM creation using a @@ -74,7 +74,7 @@ metadata-driven approach based on a standard SDTM specification format. ## Road Map -This Release: The V0.1 release of {sdtm.oak} users can create the +This Release: The V0.1 release of `{sdtm.oak}` users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. @@ -102,9 +102,9 @@ specification. ## Feedback -We ask users to follow the mentioned approach and try {sdtm.oak} to map -any SDTM domains supported in this release. Users can also utilize the -test data in the package to become familiar with the concepts before +We ask users to follow the mentioned approach and try `{sdtm.oak}` to +map any SDTM domains supported in this release. Users can also utilize +the test data in the package to become familiar with the concepts before attempting on their own data. Please get in touch with us using one of the recommended approaches listed below: @@ -114,7 +114,7 @@ the recommended approaches listed below: ## Acknowledgments We thank the contributors and authors of the package. We also thank the -CDISC COSA for sponsoring the {sdtm.oak}. Additionally, we would like to -sincerely thank the volunteers from Roche, Pfizer, GSK, Vertex, and +CDISC COSA for sponsoring the `{sdtm.oak}`. Additionally, we would like +to sincerely thank the volunteers from Roche, Pfizer, GSK, Vertex, and Merck for their valuable input as integral members of the CDISC COSA - OAK leadership team. From 6f1f1eef743230a55ae112f223779d508c2f07ad Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 11:41:02 +0100 Subject: [PATCH 09/16] Make VignetteIndexEntry agree with title --- vignettes/study_sdtm_spec.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/study_sdtm_spec.Rmd b/vignettes/study_sdtm_spec.Rmd index 0e006905..c8423a1e 100644 --- a/vignettes/study_sdtm_spec.Rmd +++ b/vignettes/study_sdtm_spec.Rmd @@ -2,7 +2,7 @@ title: "Path to Automation" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{All about Metadata} + %\VignetteIndexEntry{Path to Automation} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- From 11ef8f0a4c17b805336f6bf2aef7a691a38ec226 Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 11:43:17 +0100 Subject: [PATCH 10/16] Add authors' hyperlinks to pkgdown --- _pkgdown.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_pkgdown.yml b/_pkgdown.yml index 3c6b239a..c0debf16 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -57,3 +57,9 @@ reference: - title: Package global state contents: - clear_cache + +authors: + Ramiro Magno: + href: https://www.pattern.institute/team/rmagno/ + Pattern Institute: + href: https://www.pattern.institute From d7e28cb687838cf8efc2a88fd212f769aa63973a Mon Sep 17 00:00:00 2001 From: Ramiro Magno Date: Wed, 31 Jul 2024 12:03:15 +0100 Subject: [PATCH 11/16] Fix inadvert double backticks --- README.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.Rmd b/README.Rmd index 2ab5fae3..c1a7df16 100644 --- a/README.Rmd +++ b/README.Rmd @@ -21,7 +21,7 @@ knitr::opts_chunk$set( An EDC and Data Standard agnostic solution that enables the pharmaceutical programming community to develop SDTM datasets in R. The reusable algorithms -concept in ``{sdtm.oak}`` provides a framework for modular programming and also +concept in `{sdtm.oak}` provides a framework for modular programming and also can automate SDTM creation based on the standard SDTM spec. ## Installation @@ -32,7 +32,7 @@ The package is available from CRAN and can be installed with: install.packages("sdtm.oak") ``` -You can install the development version of ``{sdtm.oak}`` from [GitHub](https://github.com/pharmaverse/sdtm.oak/) with: +You can install the development version of `{sdtm.oak}` from [GitHub](https://github.com/pharmaverse/sdtm.oak/) with: ``` r # install.packages("remotes") From 2fa99dba237ff92ca086c2c47fc014070f48a2bf Mon Sep 17 00:00:00 2001 From: Rammprasad Ganapathy Date: Wed, 31 Jul 2024 17:13:32 +0000 Subject: [PATCH 12/16] Updates --- NEWS.md | 54 +++++++++++++++++------------------------------------- README.md | 6 ++++-- 2 files changed, 21 insertions(+), 39 deletions(-) diff --git a/NEWS.md b/NEWS.md index 69f19273..c6e3af6f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,23 +1,23 @@ -# sdtm.oak 0.1 +# sdtm.oak V0.1.0 -The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are *NOT* in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. +The V0.1.0 release of {sdtm.oak} users can create the majority of the SDTM domains. Domains that are *NOT* in scope for the V0.1.0 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. - Functions for commonly used SDTM mapping Algorithms - - assign_no_ct\ - - assign_ct\ - - hardcode_no_ct\ - - hardcode_ct\ - - assign_datetime\ - - condition_add\ -- Functions for SDTM derived variables\ - - Derive Baseline Flag or Last Observation Before Exposure Flag\ - - Derive the sequence number (--SEQ) variable\ - - Derive study day\ - - ISO8601 date, datetime conversion.\ + - `assign_no_ct()` to process assign_no_ct algorithm + - `assign_ct()` to process assign_ct algorithm + - `hardcode_no_ct()` to process hardcode_no_ct algorithm + - `hardcode_ct()` to process hardcode_ct algorithm + - `assign_datetime()` to process assign_datetime algorithm + - `condition_add()` to process condition_add algorithm (if/else conditions) +- Functions for SDTM derived variables + - `derive_blfl()` to Derive Baseline Flag or Last Observation Before Exposure Flag + - `derive_seq()` to Derive the sequence number (--SEQ) variable + - `derive_study_day()` to Derive study day + - `create_iso8601()` for ISO8601 date, datetime conversion. - Functions to support {sdtm.oak} - - derive oak id variables - - Create conditioned dataframes to support if then else conditions in SDTM mappings - - Import study controlled terminology + - ` generate_oak_id_vars()` to derive oak id variables + - `read_ct_spec()` to read the controlled terminology spec + - Functions to create conditioned dataframes to support if then else conditions in SDTM mappings - Articles - Algorithms - Creating an Events SDTM domain @@ -26,34 +26,14 @@ The V0.1 release of {sdtm.oak} users can create the majority of the SDTM domains - Converting dates, times or date-times to ISO 8601 - Path to Automation -# sdtm.oak 0.0.0.9005 (development version) +## Further details on this Release - New function for creating conditioned data frames: `condition_add()`. - New pipe operator: `%.>%` for explicit dot placeholder placement. - `oak_id_vars()` is now an exported function. - -# sdtm.oak 0.0.0.9004 (development version) - - New function: `derive_seq()` for deriving a sequence number variable. - -# sdtm.oak 0.0.0.9003 (development version) - -## New Features - - New function: `assign_datetime()` for deriving an ISO8601 date-time variable. - -# sdtm.oak 0.0.0.9002 (development version) - -## New Features - - New function: `derive_study_day()` for study day calculation. - - New functions for basic SDTM derivations: `assign_no_ct()`, `assign_ct()`, `hardcode_no_ct()` and `hardcode_ct()`. - - New functions for handling controlled terminologies: `read_ct_spec()`, `read_ct_spec_example()`, `ct_spec_example()` and `ct_map()`. - -# sdtm.oak 0.0.0.9001 (development version) - -## New Features - - New function `create_iso8601()` for conversion of vectors of dates, times or date-times to ISO8601 format. diff --git a/README.md b/README.md index d632fef3..2e23f167 100644 --- a/README.md +++ b/README.md @@ -74,8 +74,8 @@ metadata-driven approach based on a standard SDTM specification format. ## Road Map -This Release: The V0.1 release of `{sdtm.oak}` users can create the -majority of the SDTM domains. Domains that are NOT in scope for the V0.1 +This Release: The V0.1.0 release of `{sdtm.oak}` users can create the +majority of the SDTM domains. Domains that are NOT in scope for the V0.1.0 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. @@ -99,6 +99,8 @@ specification. - Please go to [Create Findings Domain](https://pharmaverse.github.io/sdtm.oak/articles/findings_domain.html) to learn about step by step process to create an Events domain. +- Please go to [Path to Automation](https://pharmaverse.github.io/sdtm.oak/articles/study_sdtm_spec.html) + to learn about how the foundational release sets up the stage for automation. ## Feedback From af273b22a76c2348b7a1ac2b49ce7a3391a811ed Mon Sep 17 00:00:00 2001 From: Rammprasad Ganapathy Date: Wed, 31 Jul 2024 17:18:16 +0000 Subject: [PATCH 13/16] readme updates --- README.Rmd | 4 +++- README.md | 12 +++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.Rmd b/README.Rmd index c1a7df16..7913631d 100644 --- a/README.Rmd +++ b/README.Rmd @@ -55,7 +55,7 @@ Our goal is to use `{sdtm.oak}` to program most of the domains specified in SDTM ## Road Map -This Release: The V0.1 release of `{sdtm.oak}` users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. +This Release: The V0.1.0 release of `{sdtm.oak}` users can create the majority of the SDTM domains. Domains that are NOT in scope for the V0.1.0 release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person domains, and EPOCH Variable across all domains. Subsequent Releases: We are planning to develop the below features in the subsequent releases.\ @@ -69,6 +69,8 @@ We are planning to develop the below features in the subsequent releases.\ * Please go to [Algorithms](https://pharmaverse.github.io/sdtm.oak/articles/algorithms.html) article to learn about Algorithms. * Please go to [Create Events Domain](https://pharmaverse.github.io/sdtm.oak/articles/events_domain.html) to learn about step by step process to create an Events domain. * Please go to [Create Findings Domain](https://pharmaverse.github.io/sdtm.oak/articles/findings_domain.html) to learn about step by step process to create an Events domain. +* Please go to [Path to Automation](https://pharmaverse.github.io/sdtm.oak/articles/study_sdtm_spec.html) + to learn about how the foundational release sets up the stage for automation. ## Feedback diff --git a/README.md b/README.md index 2e23f167..8d563fe2 100644 --- a/README.md +++ b/README.md @@ -75,9 +75,9 @@ metadata-driven approach based on a standard SDTM specification format. ## Road Map This Release: The V0.1.0 release of `{sdtm.oak}` users can create the -majority of the SDTM domains. Domains that are NOT in scope for the V0.1.0 -release are DM, Trial Design Domains, SV, SE, RELREC, Associated Person -domains, and EPOCH Variable across all domains. +majority of the SDTM domains. Domains that are NOT in scope for the +V0.1.0 release are DM, Trial Design Domains, SV, SE, RELREC, Associated +Person domains, and EPOCH Variable across all domains. Subsequent Releases: We are planning to develop the below features in the subsequent releases. @@ -99,8 +99,10 @@ specification. - Please go to [Create Findings Domain](https://pharmaverse.github.io/sdtm.oak/articles/findings_domain.html) to learn about step by step process to create an Events domain. -- Please go to [Path to Automation](https://pharmaverse.github.io/sdtm.oak/articles/study_sdtm_spec.html) - to learn about how the foundational release sets up the stage for automation. +- Please go to [Path to + Automation](https://pharmaverse.github.io/sdtm.oak/articles/study_sdtm_spec.html) + to learn about how the foundational release sets up the stage for + automation. ## Feedback From 3a9fdab4313f04db91823b1f80fd92a97e62d68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Fory=C5=9B?= Date: Wed, 31 Jul 2024 19:23:30 +0200 Subject: [PATCH 14/16] Update _pkgdown.yml Co-authored-by: edgar-manukyan --- _pkgdown.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_pkgdown.yml b/_pkgdown.yml index c0debf16..1bb0f092 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -63,3 +63,7 @@ authors: href: https://www.pattern.institute/team/rmagno/ Pattern Institute: href: https://www.pattern.institute + Edgar Manukyan: + href: https://www.linkedin.com/in/edgar-manukyan-20987927 + Shiyu Chen: + href: https://www.linkedin.com/in/shiyu-chen-55a55410a/ From 6151e224831ad4f07a6fc8b6d7d720ada8051a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Fory=C5=9B?= Date: Wed, 31 Jul 2024 19:26:09 +0200 Subject: [PATCH 15/16] Update .lycheeignore --- .lycheeignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.lycheeignore b/.lycheeignore index 2727d327..0cf3916c 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -8,3 +8,4 @@ roxygen2@7.3.1 roxygen2@7.3.2 styler@1.10.2 .*@users.noreply.github.com + https://www.linkedin.com/* From 65d24233963693e46b9c2b4b32fc31f1e64d1fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Fory=C5=9B?= Date: Wed, 31 Jul 2024 19:29:40 +0200 Subject: [PATCH 16/16] Update .lycheeignore --- .lycheeignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.lycheeignore b/.lycheeignore index 0cf3916c..220f2fda 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -8,4 +8,4 @@ roxygen2@7.3.1 roxygen2@7.3.2 styler@1.10.2 .*@users.noreply.github.com - https://www.linkedin.com/* +https://www.linkedin.com/*