Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 3 additions & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -35,6 +35,8 @@ Imports:
ResultModelManager,
yaml,
stringr
Remotes:
javier-gracia-tabuenca-tuni/DatabaseConnector@bigquery-DBI-2
Suggests:
testthat (>= 3.0.0),
bigrquery,
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ 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
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
Expand Down
2 changes: 1 addition & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
10 changes: 6 additions & 4 deletions R/getCDMSource.R
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#'
#' @importFrom checkmate assertClass
#' @importFrom SqlRender render translate
#' @importFrom DatabaseConnector dbGetQuery
#' @importFrom DatabaseConnector renderTranslateQuerySql
#' @importFrom tibble as_tibble
#'
#' @export
Expand All @@ -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)
}
25 changes: 11 additions & 14 deletions R/getCodeCounts.R
Original file line number Diff line number Diff line change
Expand Up @@ -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
#'
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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'
Expand Down
12 changes: 8 additions & 4 deletions R/getConceptsWithCodeCounts.R
Original file line number Diff line number Diff line change
Expand Up @@ -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
#'
Expand Down Expand Up @@ -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))
Expand Down
39 changes: 18 additions & 21 deletions R/helper.R
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand Down