OHDSI / CohortDiagnostics

An R package for performing various cohort diagnostics.
https://ohdsi.github.io/CohortDiagnostics
41 stars 48 forks source link

CohortDiagnostics and FeatureExtraction cohortCovaraite branch #1039

Open gowthamrao opened 1 year ago

gowthamrao commented 1 year ago

I am testing the functionality using the code below

remotes::install_github("OHDSI/FeatureExtraction", ref = "cohortCovariates")
remotes::install_github("OHDSI/SkeletonCohortDiagnostics")
remotes::install_github('OHDSI/Eunomia')

connectionDetails <- Eunomia::getEunomiaConnectionDetails()
databaseId = "Eunomia"
databaseName = "Eunomia Test"
databaseDescription = "This is a test data base called Eunomia"
cdmDatabaseSchema = 'main'
vocabularyDatabaseSchema = "main"
cohortDatabaseSchema = "main"
tempEmulationSchema = getOption("sqlRenderTempEmulationSchema")

# Cohort Definitions ----
remotes::install_github('OHDSI/SkeletonCohortDiagnosticsStudy')

## get cohort definition set ----
cohortDefinitionSet <-
  CohortGenerator::getCohortDefinitionSet(
    settingsFileName = "settings/CohortsToCreate.csv",
    jsonFolder = "cohorts",
    sqlFolder = "sql/sql_server",
    packageName = "SkeletonCohortDiagnosticsStudy",
    cohortFileNameValue = "cohortId"
  ) |>  dplyr::tibble()

featureCohortIds <- c(14907)
cohortTableNames = CohortGenerator::getCohortTableNames(cohortTable = "cohortEunomia")

# output folder information ----
outputFolder <-
  file.path("D:", "temp", "outputFolder", "eunomia")

## optionally delete previous execution ----
unlink(x = outputFolder,
       recursive = TRUE,
       force = TRUE)
dir.create(path = outputFolder,
           showWarnings = FALSE,
           recursive = TRUE)

# Execution ----
## Create cohort tables on remote ----
CohortGenerator::createCohortTables(
  connectionDetails = connectionDetails,
  cohortDatabaseSchema = cohortDatabaseSchema,
  cohortTableNames = cohortTableNames,
  incremental = TRUE
)
## Generate cohort on remote ----
CohortGenerator::generateCohortSet(
  connectionDetails = connectionDetails,
  cdmDatabaseSchema = cdmDatabaseSchema,
  tempEmulationSchema = tempEmulationSchema,
  cohortTableNames = cohortTableNames,
  cohortDefinitionSet = cohortDefinitionSet,
  cohortDatabaseSchema = cohortDatabaseSchema,
  incremental = TRUE,
  incrementalFolder = file.path(outputFolder, "incremental")
)

FeatureExtractionSettingsCohortDiagnostics <-
  CohortDiagnostics::getDefaultCovariateSettings()

FeatureExtractionSettingsCohortBasedCovariateSettings <-
  FeatureExtraction::createCohortBasedTemporalCovariateSettings(
    analysisId = 150,
    covariateCohortDatabaseSchema = cohortDatabaseSchema,
    covariateCohortTable = cohortTableNames$cohortTable,
    covariateCohorts = cohortDefinitionSet |> 
      dplyr::filter(cohortId %in% c(featureCohortIds)) |>
      dplyr::select(cohortId,
                    cohortName),
    valueType = "binary",
    temporalStartDays = FeatureExtractionSettingsCohortDiagnostics$temporalStartDays,
    temporalEndDays = FeatureExtractionSettingsCohortDiagnostics$temporalEndDays
  )
FeatureExtractionCovariateSettings <- 
  list(
    FeatureExtractionSettingsCohortBasedCovariateSettings,
    FeatureExtractionSettingsCohortDiagnostics
  )

CohortDiagnostics::executeDiagnostics(
  cohortDefinitionSet = cohortDefinitionSet,
  exportFolder = outputFolder,
  databaseId = databaseId,
  databaseName = databaseName,
  databaseDescription = databaseDescription,
  cohortDatabaseSchema = cohortDatabaseSchema,
  cdmDatabaseSchema = cdmDatabaseSchema,
  tempEmulationSchema = tempEmulationSchema,
  connectionDetails = connectionDetails,
  cohortTableNames = cohortTableNames,
  runIncidenceRate = FALSE,
  runCohortRelationship = FALSE,
  vocabularyDatabaseSchema = vocabularyDatabaseSchema,
  temporalCovariateSettings = FeatureExtractionCovariateSettings,
  incremental = TRUE
)

# package results ----
CohortDiagnostics::createMergedResultsFile(dataFolder = outputFolder, overwrite = TRUE)
# Launch diagnostics explorer shiny app ----
CohortDiagnostics::launchDiagnosticsExplorer()
gowthamrao commented 1 year ago

Notice - two 'cohort' in the drop down

image

gowthamrao commented 1 year ago

@azimov now that FeatureExtraction release has CohortCovariates, we can think of CohortRelationship/CohortOverlap also an output of FeatureExtraction. Here - all other cohorts are features - with time window -99999 to 99999.