Goals

How to execute

library(devtools)
install_github(c("OHDSI/SqlRender", 
                 "OHDSI/DatabaseConnector"))
install_github("OHDSI/StudyProtocols/PGxDrugStudy")
library(PGxDrugStudy)
execute(...)
email(from = "msuchard@ucla.edu",  # Use your own
      dataDescription = "I hold no real data")
first_results <- loadOhdsiStudy(file = "Junk.rda")

Build a package

execute <- function(dbms, user, password, server, 
                    port = NULL,
                    cdmSchema, resultsSchema, 
                    file = getDefaultStudyFileName(),
                    ...) {    
    # Open DB connection
    # Create R objects as results
    # Close connection
    # Save objects
}

Overload execute() function

    # Open DB connection
    connectionDetails <- 
        DatabaseConnector::createConnectionDetails(
            dbms=dbms, 
            server=server, 
            user=user, 
            password=password, 
            schema=cdmSchema, 
            port = port)    

    conn <- DatabaseConnector::connect(
        connectionDetails)

Overload execute function

    # Count gender
    gender <- invokeSql("CountGender.sql", 
        dbms, conn, 
        "Executing gender count ...")    

    # Get frequencies
    frequencies <- invokeSql("GetFrequencies.sql", 
        dbms, conn, 
        "Executing frequency count ...")

What does CountGender.sql look like?

SELECT CONCEPT.concept_name, 
    COUNT(DISTINCT(PERSON.person_id))
FROM DRUG_EXPOSURE,  PERSON, CONCEPT
WHERE DRUG_EXPOSURE.DRUG_EXPOSURE_START_DATE 
            >= DATE '2009-01-01'
AND   DRUG_EXPOSURE.DRUG_EXPOSURE_START_DATE 
            <= DATE '2012-12-31'
AND   DRUG_EXPOSURE.person_id = PERSON.person_id 
AND   PERSON.gender_concept_id = CONCEPT.concept_id
AND   (YEAR(DRUG_EXPOSURE.DRUG_EXPOSURE_START_DATE) 
            - PERSON.year_of_birth >= 0)
AND   (YEAR(DRUG_EXPOSURE.DRUG_EXPOSURE_START_DATE) 
            - PERSON.year_of_birth < 14)
GROUP BY CONCEPT.concept_name
ORDER BY CONCEPT.concept_name

Overload execute function

    # List of R objects to save
    objectsToSave <- c("gender","frequencies")

    # Save results to disk
    saveOhdsiStudy(list = objectsToSave, file = file)

    # Clean up
    DBI::dbDisconnect(conn)    

    # Package and return result 
    # if return value is used   
    result <- mget(objectsToSave)
    class(result) <- "OhdsiStudy"
    invisible(result)
}

Other functions to overload

# Package must provide a default gmail address 
# to receive result files
#' @keywords internal
getDestinationAddress <- function() { 
    return("nobody@gmail.com") }

# Package must provide a default result file name
#' @keywords internal
getDefaultStudyFileName <- function() { 
    return("OhdsiStudy.rda") }

# Packge must provide default email subject
#' @keywords internal
getDefaultStudyEmailSubject <- function() { 
    return("OHDSI Study Results") }

Polishing the package

How to execute

library(devtools)
install_github(c("OHDSI/SqlRender", 
                 "OHDSI/DatabaseConnector"))
install_github("OHDSI/StudyProtocols/PGxDrugStudy")
library(PGxDrugStudy)
execute(...)
email(from = "msuchard@ucla.edu",  # Use your own 
      dataDescription = "I hold no real data")
first_results <- loadOhdsiStudy(file = "Junk.rda")


jmbanda/LearningEffectiveCTP documentation built on May 19, 2019, 1:51 p.m.