diff --git a/DESCRIPTION b/DESCRIPTION index 47d32e5..f6c12f2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -9,7 +9,7 @@ License: MIT + file LICENSE Encoding: UTF-8 Language: en Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.2 +RoxygenNote: 7.3.3 URL: https://github.com/javier-gracia-tabuenca-tuni/ROMOPAPI BugReports: https://github.com/javier-gracia-tabuenca-tuni/ROMOPAPI/issues Imports: @@ -35,6 +35,8 @@ Imports: ResultModelManager, yaml, stringr +Remotes: + javier-gracia-tabuenca-tuni/DatabaseConnector@bigquery-DBI-2 Suggests: testthat (>= 3.0.0), bigrquery, diff --git a/Dockerfile b/Dockerfile index 8cc6272..bf76595 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN apt-get update && apt-get install -y openjdk-8-jdk liblzma-dev libbz2-dev li && rm -rf /var/lib/apt/lists/* # Install renv and restore packages -ARG ROMOPAPI_BRANCH=master +ARG ROMOPAPI_BRANCH=main ARG BUILD_CACHE_BUSTER=1 # Install renv and restore packages @@ -29,7 +29,7 @@ RUN --mount=type=secret,id=build_github_pat \ cp /usr/local/lib/R/etc/Renviron /tmp/Renviron \ && echo "GITHUB_PAT=$(cat /run/secrets/build_github_pat)" >> /usr/local/lib/R/etc/Renviron \ && Rscript -e 'install.packages("remotes")' \ - && Rscript -e 'remotes::install_github("FINNGEN/ROMOPAPI@${ROMOPAPI_BRANCH}")' \ + && Rscript -e 'remotes::install_github("FINNGEN/ROMOPAPI")' \ && cp /tmp/Renviron /usr/local/lib/R/etc/Renviron; # Expose the port that the API will run on diff --git a/NAMESPACE b/NAMESPACE index 24ad4e8..f06b1e3 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -25,10 +25,10 @@ export(runApiServer) importFrom(DatabaseConnector,connect) importFrom(DatabaseConnector,createConnectionDetails) importFrom(DatabaseConnector,createDbiConnectionDetails) -importFrom(DatabaseConnector,dbGetQuery) importFrom(DatabaseConnector,disconnect) importFrom(DatabaseConnector,executeSql) importFrom(DatabaseConnector,insertTable) +importFrom(DatabaseConnector,renderTranslateQuerySql) importFrom(DiagrammeR,mermaid) importFrom(Eunomia,extractLoadData) importFrom(R6,R6Class) diff --git a/R/getCDMSource.R b/R/getCDMSource.R index ac79f1e..b0b545f 100644 --- a/R/getCDMSource.R +++ b/R/getCDMSource.R @@ -11,7 +11,7 @@ #' #' @importFrom checkmate assertClass #' @importFrom SqlRender render translate -#' @importFrom DatabaseConnector dbGetQuery +#' @importFrom DatabaseConnector renderTranslateQuerySql #' @importFrom tibble as_tibble #' #' @export @@ -33,9 +33,11 @@ getCDMSource <- function( # sql <- "SELECT * FROM @vocabularyDatabaseSchema.cdm_source;" - sql <- SqlRender::render(sql, vocabularyDatabaseSchema = vocabularyDatabaseSchema) - sql <- SqlRender::translate(sql, targetDialect = connection@dbms) - cdm_source <- DatabaseConnector::dbGetQuery(connection, sql) |> tibble::as_tibble() + cdm_source <- DatabaseConnector::renderTranslateQuerySql( + connection = connection, + sql = sql, + vocabularyDatabaseSchema = vocabularyDatabaseSchema + ) |> tibble::as_tibble() return(cdm_source) } diff --git a/R/getCodeCounts.R b/R/getCodeCounts.R index 2f5cfc8..315e4ee 100644 --- a/R/getCodeCounts.R +++ b/R/getCodeCounts.R @@ -18,7 +18,7 @@ #' #' @importFrom checkmate assertClass assertIntegerish #' @importFrom SqlRender render translate -#' @importFrom DatabaseConnector dbGetQuery +#' @importFrom DatabaseConnector renderTranslateQuerySql #' @importFrom tibble as_tibble #' @importFrom dplyr pull bind_rows #' @@ -109,18 +109,16 @@ getCodeCounts <- function( WHERE parent_concept_id IN (SELECT DISTINCT child_concept_id FROM temp_tree ) OR child_concept_id IN (@conceptId) " - sql <- SqlRender::render( - sql, + # Gets tree of descendants and the code counts for each descendant + familyTree <- DatabaseConnector::renderTranslateQuerySql( + connection = connection, + sql = sql, vocabularyDatabaseSchema = vocabularyDatabaseSchema, conceptId = conceptId, resultsDatabaseSchema = resultsDatabaseSchema, stratifiedCodeCountsTable = stratifiedCodeCountsTable - ) - sql <- SqlRender::translate(sql, targetDialect = connection@dbms) - - # Gets tree of descendants and the code counts for each descendant - familyTree <- DatabaseConnector::dbGetQuery(connection, sql) |> - tibble::as_tibble() + ) |> + tibble::as_tibble() if (nrow(familyTree) == 0) { stop("No family tree found for conceptId: ", conceptId) @@ -157,14 +155,13 @@ getCodeCounts <- function( # - Get counts and derive 'Maps to' and 'Mapped from' from that sql <- "SELECT * FROM @resultsDatabaseSchema.@stratifiedCodeCountsTable WHERE concept_id IN (@conceptIds) OR maps_to_concept_id IN (@conceptIds);" - sql <- SqlRender::render( - sql, + codeCounts <- DatabaseConnector::renderTranslateQuerySql( + connection = connection, + sql = sql, resultsDatabaseSchema = resultsDatabaseSchema, conceptIds = paste(conceptIdsToGetCounts, collapse = ","), stratifiedCodeCountsTable = stratifiedCodeCountsTable - ) - sql <- SqlRender::translate(sql, targetDialect = connection@dbms) - codeCounts <- DatabaseConnector::dbGetQuery(connection, sql) |> + ) |> tibble::as_tibble() # - Derive 'Maps to' and 'Mapped from' diff --git a/R/getConceptsWithCodeCounts.R b/R/getConceptsWithCodeCounts.R index a94e598..2f10f2a 100644 --- a/R/getConceptsWithCodeCounts.R +++ b/R/getConceptsWithCodeCounts.R @@ -19,7 +19,7 @@ #' #' @importFrom checkmate assertClass #' @importFrom SqlRender render translate -#' @importFrom DatabaseConnector dbGetQuery +#' @importFrom DatabaseConnector renderTranslateQuerySql #' @importFrom tibble as_tibble #' @importFrom dplyr mutate if_else #' @@ -49,9 +49,13 @@ getConceptsWithCodeCounts <- function( FROM @vocabularyDatabaseSchema.concept c INNER JOIN @resultsDatabaseSchema.@codeCountsTable cc ON c.concept_id = cc.concept_id;" - sql <- SqlRender::render(sql, vocabularyDatabaseSchema = vocabularyDatabaseSchema, resultsDatabaseSchema = resultsDatabaseSchema, codeCountsTable = codeCountsTable) - sql <- SqlRender::translate(sql, targetDialect = connection@dbms) - concepts <- DatabaseConnector::dbGetQuery(connection, sql) |> + concepts <- DatabaseConnector::renderTranslateQuerySql( + connection = connection, + sql = sql, + vocabularyDatabaseSchema = vocabularyDatabaseSchema, + resultsDatabaseSchema = resultsDatabaseSchema, + codeCountsTable = codeCountsTable + ) |> tibble::as_tibble() |> dplyr::mutate(standard_concept = dplyr::if_else(is.na(standard_concept), FALSE, TRUE)) |> dplyr::mutate(concept_id = as.double(concept_id)) diff --git a/R/helper.R b/R/helper.R index 8601566..45257d9 100644 --- a/R/helper.R +++ b/R/helper.R @@ -118,8 +118,7 @@ helper_FinnGen_getDatabaseFileCounts <- function() { #' @return No return value. Creates a new SQLite database file at the specified path. #' #' @importFrom checkmate assertClass assertString -#' @importFrom DatabaseConnector createConnectionDetails connect disconnect insertTable dbGetQuery -#' @importFrom SqlRender render translate +#' @importFrom DatabaseConnector createConnectionDetails connect disconnect insertTable renderTranslateQuerySql #' @importFrom tibble as_tibble #' #' @export @@ -162,13 +161,13 @@ helper_createSqliteDatabaseFromDatabase <- function( # Get concept table sql <- "SELECT DISTINCT c.* FROM @vocabularyDatabaseSchema.concept c WHERE c.concept_id IN (@conceptIdsToExtract)" - sql <- SqlRender::render( - sql, + + concept <- DatabaseConnector::renderTranslateQuerySql( + connection = sourceConnection, + sql = sql, vocabularyDatabaseSchema = sourceVocabularyDatabaseSchema, conceptIdsToExtract = paste(conceptIdsToExtract, collapse = ",") - ) - sql <- SqlRender::translate(sql, targetDialect = sourceConnection@dbms) - concept <- DatabaseConnector::dbGetQuery(sourceConnection, sql) |> + ) |> tibble::as_tibble() targetConnection |> DatabaseConnector::insertTable( @@ -182,13 +181,12 @@ helper_createSqliteDatabaseFromDatabase <- function( # Concept ancestor table sql <- "SELECT DISTINCT ca.* FROM @vocabularyDatabaseSchema.concept_ancestor ca WHERE ca.descendant_concept_id IN (@conceptIdsToExtract) " - sql <- SqlRender::render( - sql, + conceptAncestor <- DatabaseConnector::renderTranslateQuerySql( + connection = sourceConnection, + sql = sql, vocabularyDatabaseSchema = sourceVocabularyDatabaseSchema, conceptIdsToExtract = paste(conceptIdsToExtract, collapse = ",") - ) - sql <- SqlRender::translate(sql, targetDialect = sourceConnection@dbms) - conceptAncestor <- DatabaseConnector::dbGetQuery(sourceConnection, sql) |> + ) |> tibble::as_tibble() targetConnection |> DatabaseConnector::insertTable( @@ -202,14 +200,13 @@ helper_createSqliteDatabaseFromDatabase <- function( # Code counts table sql <- "SELECT DISTINCT cc.* FROM @resultsDatabaseSchema.@codeCountsTable cc WHERE cc.concept_id IN (@conceptIdsToExtract)" - sql <- SqlRender::render( - sql, + codeCounts <- DatabaseConnector::renderTranslateQuerySql( + connection = sourceConnection, + sql = sql, resultsDatabaseSchema = sourceResultsDatabaseSchema, conceptIdsToExtract = paste(conceptIdsToExtract, collapse = ","), codeCountsTable = codeCountsTable - ) - sql <- SqlRender::translate(sql, targetDialect = sourceConnection@dbms) - codeCounts <- DatabaseConnector::dbGetQuery(sourceConnection, sql) |> + ) |> tibble::as_tibble() targetConnection |> DatabaseConnector::insertTable( @@ -223,13 +220,13 @@ helper_createSqliteDatabaseFromDatabase <- function( # stratified code counts table sql <- "SELECT DISTINCT cc.* FROM @resultsDatabaseSchema.@stratifiedCodeCountsTable cc WHERE cc.concept_id IN (@conceptIdsToExtract) OR cc.maps_to_concept_id IN (@conceptIdsToExtract)" - sql <- SqlRender::render(sql, + stratifiedCodeCounts <- DatabaseConnector::renderTranslateQuerySql( + connection = sourceConnection, + sql = sql, resultsDatabaseSchema = sourceResultsDatabaseSchema, conceptIdsToExtract = paste(conceptIdsToExtract, collapse = ","), stratifiedCodeCountsTable = paste0("stratified_", codeCountsTable) - ) - sql <- SqlRender::translate(sql, targetDialect = sourceConnection@dbms) - stratifiedCodeCounts <- DatabaseConnector::dbGetQuery(sourceConnection, sql) |> + ) |> tibble::as_tibble() targetConnection |> DatabaseConnector::insertTable(