Skip to content

Commit

Permalink
Fix exportToSQLite errors caused by old table name and parameter order (
Browse files Browse the repository at this point in the history
#159)

* Fix exportToSQLite errors caused by old table name and parameter order

* Add the rest of the tables to exportToSqlite()

* Add cdm version support for 5.3 and 5.4 to exportToSQLite

---------

Co-authored-by: Evanette Burrows <[email protected]>
  • Loading branch information
mccullen and burrowse authored Feb 23, 2024
1 parent cba3503 commit c298e20
Showing 1 changed file with 87 additions and 87 deletions.
174 changes: 87 additions & 87 deletions R/exportToSQLite.r
Original file line number Diff line number Diff line change
@@ -1,87 +1,87 @@
#' @title Export a CDM (Vocabulary and Event tables) into a SQLite Database.
#'
#' @description This function fetches (pruned) table data into R dataframes and writes them to a SQLite DB. (Eunomia support)
#'
#' @param connectionDetails An R object of type\cr\code{connectionDetails} created using the
#' function \code{createConnectionDetails} in the
#' \code{DatabaseConnector} package.
#'
#' @param cdmSchema The name of the database schema that contains the CDM.
#' Requires read and write permissions to this database. On SQL
#' Server, this should specifiy both the database and the schema,
#' so for example 'cdm_instance.dbo'.
#'
#' @param SQLiteDbName The name of the SQLite Database File.
#'
#'@export

exportToSQLite <-
function(connectionDetails,
cdmSchema,
SQLiteDbName = "cdm.sqlite")
{
conn <- DatabaseConnector::connect(connectionDetails)
sqliteCD <-
DatabaseConnector::createConnectionDetails(dbms = "sqlite", server = SQLiteDbName)
sqliteCon <- DatabaseConnector::connect(sqliteCD)

eventTable <- c(
"care_site",
"cdm_source",
"cohort",
"cohort_attribute",
"condition_era",
"condition_occurrence",
"cost",
"death",
"device_exposure",
"dose_era",
"drug_era",
"drug_exposure",
"fact_relationship",
"location",
"measurement",
"metadata",
"note",
"note_nlp",
"observation",
"observation_period",
"payer_plan_period",
"person",
"procedure_occurrence",
"provider",
"specimen",
"visit_detail",
"visit_occurrence"
)

vocabTable <- c(
"concept",
"concept_ancestor",
"concept_class",
"concept_relationship",
"concept_synonym",
"domain",
"drug_strength",
"relationship",
"source_to_concept_map",
"vocabulary"
)

for (tableName in c(eventTable, vocabTable)) {
sqlQuery <-
paste0("select * from ", paste0(cdmSchema, ".", tableName), ";")
translatedSql <-
SqlRender::translate(sqlQuery, targetDialect = connectionDetails$dbms)
writeLines(paste0("Fetching: ", tableName))
tableData <- DatabaseConnector::querySql(conn, translatedSql)
DatabaseConnector::insertTable(
connection = sqliteCon,
tableName = toupper(tableName),
data = tableData
)
}

DatabaseConnector::disconnect(conn)
DatabaseConnector::disconnect(sqliteCon)
}
#' @title Export a CDM (Vocabulary and Event tables) into a SQLite Database.
#'
#' @description This function fetches (pruned) table data into R dataframes and writes them to a SQLite DB. (Eunomia support)
#'
#' @param connectionDetails An R object of type\cr\code{connectionDetails} created using the
#' function \code{createConnectionDetails} in the
#' \code{DatabaseConnector} package.
#'
#' @param cdmSchema The name of the database schema that contains the CDM.
#' Requires read and write permissions to this database. On SQL
#' Server, this should specifiy both the database and the schema,
#' so for example 'cdm_instance.dbo'.
#'
#' @param SQLiteDbName The name of the SQLite Database File.
#'
#'@export

exportToSQLite <-
function(connectionDetails,
cdmSchema,
SQLiteDbName = "cdm.sqlite")
{
conn <- DatabaseConnector::connect(connectionDetails)
sqliteCD <-
DatabaseConnector::createConnectionDetails(dbms = "sqlite", server = SQLiteDbName)
sqliteCon <- DatabaseConnector::connect(sqliteCD)

eventTable <- c(
"care_site",
"cdm_source",
"cohort",
"cohort_attribute",
"condition_era",
"condition_occurrence",
"cost",
"death",
"device_exposure",
"dose_era",
"drug_era",
"drug_exposure",
"fact_relationship",
"location",
"measurement",
"metadata",
"note",
"note_nlp",
"observation",
"observation_period",
"payer_plan_period",
"person",
"procedure_occurrence",
"provider",
"specimen",
"visit_detail",
"visit_occurrence"
)

vocabTable <- c(
"concept",
"concept_ancestor",
"concept_class",
"concept_relationship",
"concept_synonym",
"domain",
"drug_strength",
"relationship",
"source_to_concept_map",
"vocabulary"
)

for (tableName in c(eventTable, vocabTable)) {
sqlQuery <-
paste0("select * from ", paste0(cdmSchema, ".", tableName), ";")
translatedSql <-
SqlRender::translate(sqlQuery, targetDialect = connectionDetails$dbms)
writeLines(paste0("Fetching: ", tableName))
tableData <- DatabaseConnector::querySql(conn, translatedSql)
DatabaseConnector::insertTable(
connection = sqliteCon,
tableName = toupper(tableName),
data = tableData
)
}

DatabaseConnector::disconnect(conn)
DatabaseConnector::disconnect(sqliteCon)
}

0 comments on commit c298e20

Please sign in to comment.