## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

library(CDMConnector)
CDMConnector::requireEunomia()

## ----warning=FALSE------------------------------------------------------------
library(dplyr)
library(CDMConnector)
library(DBI)
library(duckdb)
library(OmopSketch)
library(CodelistGenerator)

# Connect to Eunomia database
con <- DBI::dbConnect(duckdb::duckdb(), CDMConnector::eunomiaDir())
cdm <- CDMConnector::cdmFromCon(
  con = con, cdmSchema = "main", writeSchema = "main"
)

cdm

## ----warning=FALSE------------------------------------------------------------
acetaminophen <- getCandidateCodes(
  cdm = cdm,
  keywords = "acetaminophen",
  domains = "Drug",
  includeDescendants = TRUE
) |>
  dplyr::pull("concept_id")

sinusitis <- getCandidateCodes(
  cdm = cdm,
  keywords = "sinusitis",
  domains = "Condition",
  includeDescendants = TRUE
) |>
  dplyr::pull("concept_id")

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list(
    "acetaminophen" = acetaminophen,
    "sinusitis" = sinusitis
  )
) |>
  select(group_level, variable_name, variable_level, estimate_name, estimate_value) |>
  glimpse()

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list(
    "acetaminophen" = acetaminophen,
    "sinusitis" = sinusitis
  ),
  countBy = c("record", "person")
) |>
  select(group_level, variable_name, estimate_name) |>
  distinct() |>
  arrange(group_level, variable_name)

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list(
    "acetaminophen" = acetaminophen,
    "sinusitis" = sinusitis
  ),
  countBy = "record"
) |>
  select(group_level, variable_name, estimate_name) |>
  distinct() |>
  arrange(group_level, variable_name)

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list(
    "acetaminophen" = acetaminophen,
    "sinusitis" = sinusitis
  ),
  countBy = "person",
  interval = "years",
  sex = TRUE,
  ageGroup = list("<=50" = c(0, 50), ">50" = c(51, Inf))
) |>
  select(group_level, strata_level, variable_name, estimate_name) |>
  glimpse()

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list("sinusitis" = sinusitis),
  countBy = "person"
) |>
  plotConceptSetCounts()

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list("sinusitis" = sinusitis),
  countBy = c("person", "record")
) |>
  filter(variable_name == "Number subjects") |>
  plotConceptSetCounts()

## ----warning=FALSE------------------------------------------------------------
summariseConceptSetCounts(cdm,
  conceptSet = list("sinusitis" = sinusitis),
  countBy = c("person"),
  sex = TRUE,
  ageGroup = list("<=50" = c(0, 50), ">50" = c(51, Inf))
) |>
  visOmopResults::tidyColumns()

summariseConceptSetCounts(cdm,
  conceptSet = list("sinusitis" = sinusitis),
  countBy = c("person"),
  sex = TRUE,
  ageGroup = list("<=50" = c(0, 50), ">50" = c(51, Inf))
) |>
  plotConceptSetCounts(facet = "sex", colour = "age_group")