From 2f53764797a2a848ea20b0a7bc16225fb2653bed Mon Sep 17 00:00:00 2001 From: Ashar Ali Date: Fri, 28 Aug 2026 17:04:33 -0400 Subject: [PATCH 1/5] Fix Episodes anchor case in OncologyWG links The EPISODE documentation links point at model.html#Episodes, but the OncologyWG page renders that section as id="episodes". The fragment does not resolve, so the reader lands at the top of the page instead of the Episodes section. Lowercases the fragment in the 5.4 and 5.5 specification CSVs and in the rendered pages. Signed-off-by: Ashar Ali --- docs/cdm54.html | 2 +- docs/cdm55.html | 4 ++-- inst/csv/OMOP_CDMv5.4_Table_Level.csv | 2 +- inst/csv/OMOP_CDMv5.5_Field_Level.csv | 2 +- inst/csv/OMOP_CDMv5.5_Table_Level.csv | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/cdm54.html b/docs/cdm54.html index 6b774eab..ccd4d477 100644 --- a/docs/cdm54.html +++ b/docs/cdm54.html @@ -10415,7 +10415,7 @@

EPISODE

Table Description

The EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.

User Guide

-

Valid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.

+

Valid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.

diff --git a/docs/cdm55.html b/docs/cdm55.html index 4ae523d9..23026d5e 100644 --- a/docs/cdm55.html +++ b/docs/cdm55.html @@ -10583,7 +10583,7 @@

EPISODE

Table Description

The EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.

User Guide

-

Valid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.

+

Valid Episode Concepts belong to the ‘Episode’ domain. For more information on how to populate this table, please see the article on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.

@@ -10678,7 +10678,7 @@

EPISODE

The EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.
-Choose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the information from the Oncology workgroup describing how these are defined. Accepted Concepts +Choose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the information from the Oncology workgroup describing how these are defined. Accepted Concepts integer diff --git a/inst/csv/OMOP_CDMv5.4_Table_Level.csv b/inst/csv/OMOP_CDMv5.4_Table_Level.csv index 07711071..39817348 100644 --- a/inst/csv/OMOP_CDMv5.4_Table_Level.csv +++ b/inst/csv/OMOP_CDMv5.4_Table_Level.csv @@ -65,7 +65,7 @@ For example, consider a Person who visits her Primary Care Physician (PCP) and w The condition_concept_id field contains Concepts that are identical to those of the CONDITION_OCCURRENCE table records that make up the Condition Era. In contrast to Drug Eras, Condition Eras are not aggregated to contain Conditions of different hierarchical layers. The SQl Script for generating CONDITION_ERA records can be found [here](https://ohdsi.github.io/CommonDataModel/sqlScripts.html#condition_eras) The Condition Era Start Date is the start date of the first Condition Occurrence. The Condition Era End Date is the end date of the last Condition Occurrence. Condition Eras are built with a Persistence Window of 30 days, meaning, if no occurrence of the same condition_concept_id happens within 30 days of any one occurrence, it will be considered the condition_era_end_date." -episode,CDM,FALSE,NA,FALSE,NA,NA,"The EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.","Valid Episode Concepts belong to the 'Episode' domain. For more information on how to populate this table, please see the [article](https://ohdsi.github.io/OncologyWG/model.html#Episodes) on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.",NA +episode,CDM,FALSE,NA,FALSE,NA,NA,"The EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.","Valid Episode Concepts belong to the 'Episode' domain. For more information on how to populate this table, please see the [article](https://ohdsi.github.io/OncologyWG/model.html#episodes) on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.",NA episode_event,CDM,FALSE,NA,FALSE,NA,NA,"The EPISODE_EVENT table connects qualifying clinical events (such as CONDITION_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, MEASUREMENT) to the appropriate EPISODE entry. For example, linking the precise location of the metastasis (cancer modifier in MEASUREMENT) to the disease episode.",This connecting table is used instead of the FACT_RELATIONSHIP table for linking low-level events to abstracted Episodes.,"Some episodes may not have links to any underlying clinical events. For such episodes, the EPISODE_EVENT table is not populated." metadata,CDM,FALSE,NA,FALSE,NA,NA,The METADATA table contains metadata information about a dataset that has been transformed to the OMOP Common Data Model.,NA,NA cdm_source,CDM,FALSE,NA,FALSE,NA,NA,The CDM_SOURCE table contains detail about the source database and the process used to transform the data into the OMOP Common Data Model.,NA,NA diff --git a/inst/csv/OMOP_CDMv5.5_Field_Level.csv b/inst/csv/OMOP_CDMv5.5_Field_Level.csv index 42078ac7..9e38ce5f 100644 --- a/inst/csv/OMOP_CDMv5.5_Field_Level.csv +++ b/inst/csv/OMOP_CDMv5.5_Field_Level.csv @@ -376,7 +376,7 @@ Occurrences used to construct the condition era.",NA,false,false,NA,NA,NA,NA episode,episode_id,true,integer,A unique identifier for each Episode.,NA,true,false,NA,NA,NA,NA episode,person_id,true,integer,The PERSON_ID of the PERSON for whom the episode is recorded.,NA,false,true,PERSON,PERSON_ID,NA,NA -episode,episode_concept_id,true,integer,"The EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.","Choose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the [information](https://ohdsi.github.io/OncologyWG/model.html#Episodes) from the Oncology workgroup describing how these are defined. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Episode&page=1&pageSize=15&query=)",false,true,CONCEPT,CONCEPT_ID,Episode,NA +episode,episode_concept_id,true,integer,"The EPISODE_CONCEPT_ID represents the kind abstraction related to the disease phase, outcome or treatment.","Choose a concept in the Episode domain that best represents the ongoing disease phase, outcome, or treatment. Please see the [information](https://ohdsi.github.io/OncologyWG/model.html#episodes) from the Oncology workgroup describing how these are defined. [Accepted Concepts](https://athena.ohdsi.org/search-terms/terms?domain=Episode&page=1&pageSize=15&query=)",false,true,CONCEPT,CONCEPT_ID,Episode,NA episode,episode_start_date,true,date,The date when the Episode beings.,Please see [article] for how to define an Episode start date.,false,false,NA,NA,NA,NA episode,episode_start_datetime,false,datetime,The date and time when the Episode begins.,NA,false,false,NA,NA,NA,NA episode,episode_end_date,false,date,The date when the instance of the Episode is considered to have ended.,Please see [article] for how to define an Episode end date.,false,false,NA,NA,NA,NA diff --git a/inst/csv/OMOP_CDMv5.5_Table_Level.csv b/inst/csv/OMOP_CDMv5.5_Table_Level.csv index e51e42de..3e751886 100644 --- a/inst/csv/OMOP_CDMv5.5_Table_Level.csv +++ b/inst/csv/OMOP_CDMv5.5_Table_Level.csv @@ -65,7 +65,7 @@ For example, consider a Person who visits her Primary Care Physician (PCP) and w The condition_concept_id field contains Concepts that are identical to those of the CONDITION_OCCURRENCE table records that make up the Condition Era. In contrast to Drug Eras, Condition Eras are not aggregated to contain Conditions of different hierarchical layers. The SQl Script for generating CONDITION_ERA records can be found [here](https://ohdsi.github.io/CommonDataModel/sqlScripts.html#condition_eras) The Condition Era Start Date is the start date of the first Condition Occurrence. The Condition Era End Date is the end date of the last Condition Occurrence. Condition Eras are built with a Persistence Window of 30 days, meaning, if no occurrence of the same condition_concept_id happens within 30 days of any one occurrence, it will be considered the condition_era_end_date." -episode,CDM,FALSE,NA,FALSE,NA,NA,"The EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.","Valid Episode Concepts belong to the 'Episode' domain. For more information on how to populate this table, please see the [article](https://ohdsi.github.io/OncologyWG/model.html#Episodes) on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.",NA +episode,CDM,FALSE,NA,FALSE,NA,NA,"The EPISODE table aggregates lower-level clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) into a higher-level abstraction representing clinically and analytically relevant disease phases,outcomes and treatments. The EPISODE_EVENT table connects qualifying clinical events (VISIT_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, DEVICE_EXPOSURE) to the appropriate EPISODE entry. For example cancers including their development over time, their treatment, and final resolution.","Valid Episode Concepts belong to the 'Episode' domain. For more information on how to populate this table, please see the [article](https://ohdsi.github.io/OncologyWG/model.html#episodes) on the Oncology Workgroup website. If your source data does not have all episodes that are relevant to the therapeutic area, write only those you can easily derive from the data. It is understood that that table is not currently expected to be comprehensive.",NA episode_event,CDM,FALSE,NA,FALSE,NA,NA,"The EPISODE_EVENT table connects qualifying clinical events (such as CONDITION_OCCURRENCE, DRUG_EXPOSURE, PROCEDURE_OCCURRENCE, MEASUREMENT) to the appropriate EPISODE entry. For example, linking the precise location of the metastasis (cancer modifier in MEASUREMENT) to the disease episode.",This connecting table is used instead of the FACT_RELATIONSHIP table for linking low-level events to abstracted Episodes.,"Some episodes may not have links to any underlying clinical events. For such episodes, the EPISODE_EVENT table is not populated." metadata,CDM,FALSE,NA,FALSE,NA,NA,The METADATA table contains metadata information about a dataset that has been transformed to the OMOP Common Data Model.,NA,NA cdm_source,CDM,FALSE,NA,FALSE,NA,NA,"The CDM_SOURCE table contains details about your CDM instance. Most OHDSI tooling expects one record in this table to get the name of your cdm, release date, and vocabulary version. Multiple records are allowed in the cdm_source table, but tooling will typically only read the first record.",NA,NA From 3d60cb50afb83a00ce2bff49d38e68fb00f44cd1 Mon Sep 17 00:00:00 2001 From: Anthony Sena Date: Wed, 7 Oct 2026 12:18:55 -0400 Subject: [PATCH 2/5] Release v1.1.0 preparation --- DESCRIPTION | 22 +++++++++++----------- NAMESPACE | 11 +++++------ R/CommonDataModel-package.R | 11 ++++++++--- R/utils.R | 8 -------- man/CommonDataModel-package.Rd | 20 ++++++++++++++++++++ 5 files changed, 44 insertions(+), 28 deletions(-) delete mode 100644 R/utils.R create mode 100644 man/CommonDataModel-package.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 1a5c4f52..76fd99d5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: CommonDataModel Type: Package Title: OMOP CDM DDL and Documentation Generator -Version: 1.0.1 +Version: 1.1.0 Authors@R: person(given = "Clair", family = "Blacketer", role = c("aut", "cre"), @@ -12,20 +12,20 @@ License: Apache License 2.0 Encoding: UTF-8 LazyData: true Depends: + R (>= 4.1.0) +Imports: DatabaseConnector, SqlRender, - rJava -Imports: - rmarkdown, stringr, - DBI, - dplyr, readr Suggests: - knitr, - testthat (>= 3.0.0), - RSQLite, - withr + DBI, + dplyr, + knitr, + rmarkdown, + RSQLite, + testthat (>= 3.0.0), + withr NeedsCompilation: no -RoxygenNote: 7.3.3 Config/testthat/edition: 3 +Config/roxygen2/version: 8.1.0 diff --git a/NAMESPACE b/NAMESPACE index 9664e777..9d0fbc2a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -14,9 +14,8 @@ export(writeDdl) export(writeForeignKeys) export(writeIndex) export(writePrimaryKeys) -import(DatabaseConnector) -import(SqlRender) -import(rJava) -importFrom(utils,download.file) -importFrom(utils,read.csv) -importFrom(utils,write.csv) +importFrom(utils, + download.file, + read.csv, + write.csv +) diff --git a/R/CommonDataModel-package.R b/R/CommonDataModel-package.R index 55354369..3b3c9510 100644 --- a/R/CommonDataModel-package.R +++ b/R/CommonDataModel-package.R @@ -1,4 +1,9 @@ -#' @import rJava -#' @import DatabaseConnector -#' @import SqlRender +#' @keywords internal +"_PACKAGE" + +## usethis namespace: start +## usethis namespace: end + +## mockable bindings: start +## mockable bindings: end NULL diff --git a/R/utils.R b/R/utils.R deleted file mode 100644 index 213b47fa..00000000 --- a/R/utils.R +++ /dev/null @@ -1,8 +0,0 @@ -# these packages are used in utilities or functions outside of check's vision -# this function ensures that check is satisfied and does not report the -# packages as imported but not imported from -checkSatisfier <- function() { - DBI::dbConnect - dplyr::sql - rmarkdown::draft -} diff --git a/man/CommonDataModel-package.Rd b/man/CommonDataModel-package.Rd new file mode 100644 index 00000000..ddc720d2 --- /dev/null +++ b/man/CommonDataModel-package.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CommonDataModel-package.R +\docType{package} +\name{CommonDataModel-package} +\alias{CommonDataModel} +\alias{CommonDataModel-package} +\title{CommonDataModel: OMOP CDM DDL and Documentation Generator} +\description{ +Generates the scripts required to create an Observational Medical Outcomes Partnership (OMOP) Common Data Model (CDM) database and associated documentation for supported database platforms. Leverages the 'SqlRender' package to convert the Data Definition Language (DDL) script written in parameterized Structured Query Language (SQL) to the other supported dialects. +} +\author{ +\strong{Maintainer}: Clair Blacketer \email{mblacke@its.jnj.com} + +Authors: +\itemize{ + \item Clair Blacketer \email{mblacke@its.jnj.com} +} + +} +\keyword{internal} From f34355c032325b0267d4f6252a5f64a91c345c6a Mon Sep 17 00:00:00 2001 From: Anthony Sena Date: Wed, 7 Oct 2026 13:17:03 -0400 Subject: [PATCH 3/5] Add NEWS.md release info --- NEWS.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS.md b/NEWS.md index 7b693552..160c3ab5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +CommonDataModel v5.5.0 +====================== + +Provides suport for the OMOP Common Data Model v5.5 - announcement and release notes are found here: https://forums.ohdsi.org/t/omop-cdm-v5-5-release/25881 + + CommonDataModel v5.4.2 ====================== From d7624132d94e4e1a6aaaf7b2a3d9c62fb811fca8 Mon Sep 17 00:00:00 2001 From: Anthony Sena Date: Wed, 7 Oct 2026 13:26:46 -0400 Subject: [PATCH 4/5] Update SiteMaintenance to use Quarto to render site docs. Updated site docs. --- docs/background.html | 53 ++- docs/cdm30.html | 36 +- docs/cdm53.html | 36 +- docs/cdm531.html | 36 +- docs/cdm53Changes.html | 53 ++- docs/cdm54.html | 36 +- docs/cdm54Changes.html | 53 ++- docs/cdm54ToolingSupport.html | 53 ++- docs/cdm54erd.html | 53 ++- docs/cdm55.html | 36 +- docs/cdm55Changes.html | 53 ++- docs/cdm60.html | 241 ++++++++------ docs/cdmDecisionTree/cdmDecisionTree.html | 53 ++- docs/cdmDecisionTree/contactVocab.html | 53 ++- docs/cdmDecisionTree/leaveAsIs.html | 53 ++- docs/cdmDecisionTree/localChange.html | 53 ++- docs/cdmDecisionTree/networkUseCase.html | 53 ++- docs/cdmDecisionTree/useCaseN.html | 53 ++- docs/cdmDecisionTree/useCaseY.html | 53 ++- docs/cdmDecisionTree/vocabN.html | 53 ++- docs/cdmDecisionTree/vocabRequest.html | 53 ++- docs/cdmDecisionTree/vocabY.html | 53 ++- docs/cdmPrivacy.html | 53 ++- docs/cdmRPackage.html | 57 ++-- docs/cdmRefreshProcess.html | 53 ++- docs/cdmRequestProcess.html | 53 ++- docs/contribute.html | 53 ++- docs/customConcepts.html | 53 ++- docs/dataModelConventions.html | 53 ++- docs/download.html | 53 ++- docs/drug_dose.html | 53 ++- docs/ehrObsPeriods.html | 53 ++- docs/faq.html | 53 ++- docs/index.html | 53 ++- docs/indices-primary-foreign.html | 53 ++- docs/queries.html | 57 ++-- docs/reviewProposals.html | 53 ++- docs/search.json | 176 +++++++++- ...p-172ba59bd5e0b52282274ba0c0cc16fc.min.css | 12 + ...k-8b348f4b4b74a528bf910da1e8c5139e.min.css | 12 + docs/site_libs/bootstrap/bootstrap-icons.css | 34 +- docs/site_libs/bootstrap/bootstrap-icons.woff | Bin 176200 -> 180288 bytes ...hting-64a204ab8560d761af7679ceaba22944.css | 236 +++++++++++++ ...-dark-b85bc7c33db8c58e0ec93c3465666fed.css | 219 +++++++++++++ docs/site_libs/quarto-nav/quarto-nav.js | 5 +- .../quarto-search/autocomplete.umd.js | 4 +- docs/site_libs/quarto-search/quarto-search.js | 309 ++++++++++++++---- docs/sitemap.xml | 80 ++--- docs/sqlScripts.html | 81 +++-- docs/typesOfAdditions.html | 53 ++- docs/vocabulary.html | 53 ++- extras/SiteMaintenance.R | 33 +- 52 files changed, 2513 insertions(+), 866 deletions(-) create mode 100644 docs/site_libs/bootstrap/bootstrap-172ba59bd5e0b52282274ba0c0cc16fc.min.css create mode 100644 docs/site_libs/bootstrap/bootstrap-dark-8b348f4b4b74a528bf910da1e8c5139e.min.css create mode 100644 docs/site_libs/quarto-html/quarto-syntax-highlighting-64a204ab8560d761af7679ceaba22944.css create mode 100644 docs/site_libs/quarto-html/quarto-syntax-highlighting-dark-b85bc7c33db8c58e0ec93c3465666fed.css diff --git a/docs/background.html b/docs/background.html index 28d5aa02..b3aac375 100644 --- a/docs/background.html +++ b/docs/background.html @@ -2,17 +2,23 @@ - + OMOP CDM Background – OMOP Common Data Model