Set up

Install packages and load Eunomia and test that it works

library(tidyverse);library(magrittr)
library(DT)
# library(devtools)
# options(devtools.install.args = "--no-multiarch")
# install_github('OHDSI/DatabaseConnector')
# install_github('OHDSI/SqlRender')
# 
# install_github('OHDSI/FeatureExtraction')
# install_github('OHDSI/OhdsiRTools')
# install_github('OHDSI/OhdsiSharing')
# devtools::install_github('OHDSI/Achilles')
# devtools::install_github('OHDSI/Eunomia')
# devtools::install_github('OHDSI/DataQualityDashboard')
# devtools::install_github('OHDSI/PatientLevelPrediction')
#remove.packages('Eunomia')

library(Eunomia)
## Loading required package: DatabaseConnector
connectionDetails <- Eunomia::getEunomiaConnectionDetails()
connection <- connect(connectionDetails)
## Connecting using SQLite driver
querySql(connection, "SELECT COUNT(*) FROM person;")
##   COUNT(*)
## 1     2694
tables<-getTableNames(connection = connection)
tables
##  [1] "CARE_SITE"             "CDM_SOURCE"           
##  [3] "COHORT"                "COHORT_ATTRIBUTE"     
##  [5] "CONCEPT"               "CONCEPT_ANCESTOR"     
##  [7] "CONCEPT_CLASS"         "CONCEPT_RELATIONSHIP" 
##  [9] "CONCEPT_SYNONYM"       "CONDITION_ERA"        
## [11] "CONDITION_OCCURRENCE"  "COST"                 
## [13] "DEATH"                 "DEVICE_EXPOSURE"      
## [15] "DOMAIN"                "DOSE_ERA"             
## [17] "DRUG_ERA"              "DRUG_EXPOSURE"        
## [19] "DRUG_STRENGTH"         "FACT_RELATIONSHIP"    
## [21] "LOCATION"              "MEASUREMENT"          
## [23] "METADATA"              "NOTE"                 
## [25] "NOTE_NLP"              "OBSERVATION"          
## [27] "OBSERVATION_PERIOD"    "PAYER_PLAN_PERIOD"    
## [29] "PERSON"                "PROCEDURE_OCCURRENCE" 
## [31] "PROVIDER"              "RELATIONSHIP"         
## [33] "SOURCE_TO_CONCEPT_MAP" "SPECIMEN"             
## [35] "VISIT_DETAIL"          "VISIT_OCCURRENCE"     
## [37] "VOCABULARY"
#DatabaseConnector::disconnect(connection)

Run Achilles

Only mesures that we need. This can be skipped if you executed Achilles in the past.

library(Achilles)

cdmDatabaseSchema<-'main'
resultsDatabaseSchema<-cdmDatabaseSchema
vocabDatabaseSchema<-cdmDatabaseSchema
cdmSourceName='eunomia'


Achilles::achilles(connectionDetails, 
  cdmDatabaseSchema = cdmDatabaseSchema, 
  resultsDatabaseSchema=resultsDatabaseSchema,
  vocabDatabaseSchema = vocabDatabaseSchema,
  numThreads = 1,
  sourceName = cdmSourceName, 
  cdmVersion = "5.3.0",
  analysisIds=c(600,605,625), #procedural items
  runHeel = FALSE,
  runCostAnalysis = FALSE,createIndices = FALSE,conceptHierarchy = FALSE
  )
## Connecting using SQLite driver
## Beginning single-threaded execution
## Connecting using SQLite driver
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |================================                                 |  50%
  |                                                                       
  |=================================================================| 100%
## Executing SQL took 0.006 secs
## Executing multiple queries. This could take a while
## Analysis 600 (Number of persons with at least one procedure occurrence, by procedure_concept_id) -- START
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |================================                                 |  50%
  |                                                                       
  |=================================================================| 100%
## Executing SQL took 0.036 secs
## [Main Analysis] [COMPLETE] 600 (0.047990 secs)
## Analysis 605 (Number of procedure occurrence records, by procedure_concept_id by procedure_type_concept_id) -- START
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |================================                                 |  50%
  |                                                                       
  |=================================================================| 100%
## Executing SQL took 0.037 secs
## [Main Analysis] [COMPLETE] 605 (0.046948 secs)
## Analysis 625 (Number of procedure_occurrence records by procedure_source_concept_id) -- START
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |================================                                 |  50%
  |                                                                       
  |=================================================================| 100%
## Executing SQL took 0.026 secs
## [Main Analysis] [COMPLETE] 625 (0.035125 secs)
## Merging scratch Achilles tables
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |================================                                 |  50%
  |                                                                       
  |=================================================================| 100%
## Executing SQL took 0.00498 secs
## Done. Achilles results can now be found in schema main

Procedural data

d<-Achilles::fetchAchillesAnalysisResults(connectionDetails = connectionDetails,
                                       resultsDatabaseSchema = resultsDatabaseSchema,
                                       analysisId = 600)$analysisResults
## Connecting using SQLite driver
#view of it
DT::datatable(d,rownames=FALSE)
restricted<-d %>% filter(COUNT_VALUE > 100)
restricted %>% write_csv('a600.csv')

Procedural data (source values)

d<-Achilles::fetchAchillesAnalysisResults(connectionDetails = connectionDetails,
                                       resultsDatabaseSchema = resultsDatabaseSchema,
                                       analysisId = 625)$analysisResults
## Connecting using SQLite driver
#view of it
DT::datatable(d,rownames=FALSE)
restricted<-d %>% filter(COUNT_VALUE > 100)
restricted %>% write_csv('a625.csv')