Exercise

Use Achilles to

  1. View the kinds of analyses and characterizations it performs.
  2. Run Acilles
  3. Generate Achilles SQL

Packages

Installation

View Analyis Details

First, let’s look at the kind of analyses Achilles can perform. Note there are analysis_ids for each kind of analysis.

Since a full achilles run will take a long time, we will select a subset of analysis ids.

Achilles::getAnalysisDetails() %>% 
  DT::datatable(options = list(
      scrollX = T,
      autoWidth = T,
      columnDefs = list(
        list(width = '500px', targets = 4),
        list(width = '200px', targets = 11)
      )
    )
  )
datasetName = "GiBleed"
dbms = "sqlite"

datasetLocation <- Eunomia::getDatabaseFile(
  datasetName = datasetName, 
  dbms = dbms, 
  databaseFile = tempfile(fileext = ".sqlite")
)
connectionDetails <- DatabaseConnector::createConnectionDetails(dbms = dbms, server = datasetLocation)
connection = DatabaseConnector::connect(connectionDetails = connectionDetails)
Eunomia::createCohorts(connectionDetails)
DatabaseConnector::getTableNames(connection, databaseSchema = 'main')
base_dir = "resources/artifacts/achilles"
result <- Achilles::achilles(connectionDetails,
                   cdmDatabaseSchema = "main",
                   resultsDatabaseSchema = "main",
                   sourceName = "Eunomia",
                   outputFolder = base_dir,
                   sqlOnly = T,
                   analysisIds = 1:10,
                   cdmVersion = "5.3.0")
lines <- readLines(file.path(base_dir, "achilles.sql"))
sql <- paste(lines, collapse = "\n")
DatabaseConnector::executeSql(connection, sql)
DatabaseConnector::getTableNames(connection, databaseSchema = 'main')
DatabaseConnector::querySql(connection, "select * from achilles_analysis limit 100")
DatabaseConnector::querySql(connection, "select * from achilles_results limit 100")
DatabaseConnector::querySql(connection, "select * from achilles_results_dist limit 100")
ETLSyntheaBuilder::exportToSQLite(connectionDetails, "main", SQLiteDbName = "eunomia-achilles.sqlite")
Achilles::exportToAres(
  connectionDetails = connectionDetails,
  cdmDatabaseSchema = "main",
  resultsDatabaseSchema = "main",
  vocabDatabaseSchema = "main",
  outputPath = "./data")
DataQualityDashboard::executeDqChecks(
  connectionDetails,
  cdmDatabaseSchema = "main",
  resultsDatabaseSchema = "main",
  outputFile = "synthea.json",
  cdmSourceName = "Eunomia",
  outputFolder = "./data")
DatabaseConnector::getTableNames(connection, databaseSchema = 'main')
# Note json_path must be an absolute path...
json_path <- file.path(getwd(), base_dir, "synthea.json")
DataQualityDashboard::viewDqDashboard(jsonPath = json_path)
DatabaseConnector::querySql(connection = connection, "select * from main.\"main.dqdashboard_results\"")