Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Strategus module approach #145

Merged
merged 40 commits into from
Jul 31, 2024
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
ace0bd6
burn it all down
anthonysena Jun 11, 2024
e685e78
Prelim interface and test harness
anthonysena Jun 12, 2024
c4e5881
Use pre-release of CG
anthonysena Jun 28, 2024
0fa7129
Seperate settings function into own class
anthonysena Jun 28, 2024
b5b989e
Adding settings functions for CG
anthonysena Jun 28, 2024
f10e1bd
Modifying properties; adding results data model creation
anthonysena Jul 1, 2024
eea5e5f
Add CI module; remove tests
anthonysena Jul 1, 2024
8c95223
refactoring again
anthonysena Jul 2, 2024
49deb2e
Adding basic logging; continue to remove other code
anthonysena Jul 2, 2024
8fae65d
Basic upload and results viewing
anthonysena Jul 2, 2024
b608e4c
Cleanup
anthonysena Jul 2, 2024
632ff16
Adding CohortMethod module
anthonysena Jul 2, 2024
376b60c
Handle DatabaseMetaData table creation and upload
anthonysena Jul 2, 2024
8027322
Separate modules into own R files
anthonysena Jul 3, 2024
bff21e9
Add CD Module
anthonysena Jul 3, 2024
6aa56c3
Add Characterization module (not working)
anthonysena Jul 3, 2024
2593629
Add PLP Module (not working)
anthonysena Jul 3, 2024
f854f10
Add SCCS Module (working)
anthonysena Jul 3, 2024
e2d3d72
Adding EvidenceSynthesis module (not working)
anthonysena Jul 3, 2024
24981c6
Re-enable module-level logging
anthonysena Jul 8, 2024
0a4dc52
Add ES rdms to project; move database meta rdms
anthonysena Jul 8, 2024
83158d3
PLP Module fixes
anthonysena Jul 8, 2024
6859daa
Remove clearLoggers from Execution.R
anthonysena Jul 9, 2024
758c0d3
Add context specific module settings functions
anthonysena Jul 9, 2024
e8caa38
Settings for results data model creation
anthonysena Jul 9, 2024
15ade78
Add uploadResultsSettings and refactor
anthonysena Jul 10, 2024
fccd80d
Update function documentation and address R CMD checks
anthonysena Jul 10, 2024
5faa282
Add Characterization module (working); fix bugs
anthonysena Jul 10, 2024
57711dd
# This is a combination of 5 commits.
anthonysena Jul 10, 2024
35c6bc6
Change CG declaration; remove 4.2.3 specific tests
anthonysena Jul 10, 2024
6a7f145
Add back unit tests; fix bugs
anthonysena Jul 12, 2024
0e8fb74
Removing stale documentation
anthonysena Jul 12, 2024
6eb78a0
Fix missing deps
anthonysena Jul 12, 2024
9bdc095
Add CirceR
anthonysena Jul 12, 2024
87b33b4
Remove logging from within modules
anthonysena Jul 15, 2024
ccc08e7
Revise to use pre-release shiny viewer
anthonysena Jul 15, 2024
1a68ae5
Refactor settings for results management
anthonysena Jul 15, 2024
6c3e37e
Fix upload bug with Char module
anthonysena Jul 18, 2024
00be102
Implementation of CohortIncidence module. (#147)
chrisknoll Jul 26, 2024
6baf9d9
Adjustments from testing
anthonysena Jul 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: Strategus
Type: Package
Title: Coordinating and Executing Analytics Using HADES Modules
Version: 0.3.0
Version: 1.0.0
Date: 2023-06-04
Authors@R: c(
person("Martijn", "Schuemie", email = "[email protected]", role = c("aut")),
Expand All @@ -17,36 +17,42 @@ BugReports: https://github.com/OHDSI/Strategus/issues
Depends:
R (>= 4.2.0),
CohortGenerator (>= 0.8.0),
DatabaseConnector (>= 6.2.3)
DatabaseConnector (>= 6.2.3),
R6
Imports:
targets,
renv (>= 1.0.0),
ParallelLogger (>= 3.1.0),
dplyr,
checkmate,
keyring,
rlang,
utils,
R.utils,
digest,
methods,
tibble,
ResultModelManager (>= 0.3.0),
SqlRender (>= 1.11.0),
semver,
httr2,
jsonlite
ResultModelManager (>= 0.5.8),
SqlRender (>= 1.18.0)
Suggests:
testthat (>= 3.0.0),
Characterization,
CohortDiagnostics,
CohortIncidence,
CohortMethod,
Eunomia,
fs,
knitr,
PatientLevelPrediction,
rmarkdown,
Eunomia,
SelfControlledCaseSeries,
testthat (>= 3.0.0),
withr
Remotes:
ohdsi/CohortGenerator,
ohdsi/Characterization@372fb70c6133bdd8811f8dc1d2a2f9cb9a184345,
ohdsi/CohortDiagnostics,
ohdsi/CohortGenerator@develop,
ohdsi/CohortIncidence,
ohdsi/CohortMethod,
ohdsi/PatientLevelPrediction,
ohdsi/ResultModelManager,
ohdsi/Eunomia
ohdsi/SelfControlledCaseSeries
VignetteBuilder: knitr
NeedsCompilation: no
RoxygenNote: 7.3.1
Expand Down
20 changes: 10 additions & 10 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Generated by roxygen2: do not edit by hand

export(CharacterizationModule)
export(CohortDiagnosticsModule)
export(CohortGeneratorModule)
export(CohortIncidenceModule)
export(CohortMethodModule)
export(EvidenceSynthesisModule)
export(PatientLevelPredictionModule)
export(SelfControlledCaseSeriesModule)
export(StrategusModule)
export(addModuleSpecifications)
export(addSharedResources)
export(compareLockFiles)
export(createCdmExecutionSettings)
export(createEmptyAnalysisSpecificiations)
export(createResultDataModels)
export(createResultsExecutionSettings)
export(ensureAllModulesInstantiated)
export(execute)
export(getModuleList)
export(installLatestModule)
export(retrieveConnectionDetails)
export(storeConnectionDetails)
export(syncLockFile)
export(unlockKeyring)
export(validateLockFile)
export(verifyModuleInstallation)
export(uploadResults)
export(zipResults)
import(CohortGenerator)
import(DatabaseConnector)
Expand Down
65 changes: 59 additions & 6 deletions R/DatabaseMetaData.R
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,12 @@
# carefully consider serialization and deserialization to JSON, which currently
# uses custom functionality in ParallelLogger to maintain object attributes.

createDatabaseMetaData <- function(executionSettings, keyringName = NULL) {
createDatabaseMetaData <- function(executionSettings, connectionDetails) {
databaseMetaDataFolder <- file.path(executionSettings$resultsFolder, "DatabaseMetaData")
if (!dir.exists(databaseMetaDataFolder)) {
dir.create(databaseMetaDataFolder, recursive = TRUE)
}

connectionDetails <- retrieveConnectionDetails(
connectionDetailsReference = executionSettings$connectionDetailsReference,
keyringName = keyringName
)
connection <- DatabaseConnector::connect(connectionDetails)
on.exit(DatabaseConnector::disconnect(connection))

Expand All @@ -54,7 +50,10 @@ createDatabaseMetaData <- function(executionSettings, keyringName = NULL) {
}

resultsDataModel <- CohortGenerator::readCsv(
file = system.file("databaseMetaDataRdms.csv", package = "Strategus"),
file = system.file(
file.path("csv", "databaseMetaDataRdms.csv"),
package = "Strategus"
),
warnOnCaseMismatch = FALSE
)

Expand Down Expand Up @@ -132,3 +131,57 @@ createDatabaseMetaData <- function(executionSettings, keyringName = NULL) {
)
return(databaseId)
}

.createDatabaseMetadataTables <- function(resultsConnectionDetails,
resultsDatabaseSchema,
resultsFolder) {
if (dir.exists(file.path(resultsFolder, "DatabaseMetaData"))) {
databaseMetaDataResultsFolder <- file.path(resultsFolder, "DatabaseMetaData")
rdmsFile <- file.path(databaseMetaDataResultsFolder, "resultsDataModelSpecification.csv")
if (file.exists(rdmsFile)) {
rlang::inform("Creating results data model for database metadata")
connection <- DatabaseConnector::connect(resultsConnectionDetails)
on.exit(DatabaseConnector::disconnect(connection))

# Create the SQL from the resultsDataModelSpecification.csv
sql <- ResultModelManager::generateSqlSchema(
csvFilepath = rdmsFile
)
sql <- SqlRender::render(
sql = sql,
database_schema = resultsDatabaseSchema
)
DatabaseConnector::executeSql(connection = connection, sql = sql)
} else {
warning("DatabaseMetaData not found - skipping table creation")
}
}
}
.uploadDatabaseMetadata <- function(resultsConnectionDetails,
resultsDatabaseSchema,
resultsFolder) {
if (dir.exists(file.path(resultsFolder, "DatabaseMetaData"))) {
databaseMetaDataResultsFolder <- file.path(resultsFolder, "DatabaseMetaData")
rdmsFile <- file.path(databaseMetaDataResultsFolder, "resultsDataModelSpecification.csv")
if (file.exists(rdmsFile)) {
rlang::inform("Uploading database metadata")
connection <- DatabaseConnector::connect(resultsConnectionDetails)
on.exit(DatabaseConnector::disconnect(connection))

specification <- CohortGenerator::readCsv(file = rdmsFile)
ResultModelManager::uploadResults(
connection = connection,
schema = resultsDatabaseSchema,
resultsFolder = databaseMetaDataResultsFolder,
purgeSiteDataBeforeUploading = TRUE,
databaseIdentifierFile = file.path(
databaseMetaDataResultsFolder,
"database_meta_data.csv"
),
specifications = specification
)
} else {
warning("DatabaseMetaData not found - skipping upload")
}
}
}
Loading
Loading