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

CDMConnector::requireEunomia("synpuf-1k", "5.3")

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

# Connect to the database and create the cdm object
con <- dbConnect(duckdb(), 
                 eunomiaDir("synpuf-1k", "5.3"))
cdm <- cdmFromCon(con = con, 
                  cdmName = "Eunomia Synpuf",
                  cdmSchema = "main",
                  writeSchema = "main",
                  achillesSchema = "main")

## -----------------------------------------------------------------------------
availableICD10(cdm, level = "ICD10 Chapter") |> 
  glimpse()
availableICD10(cdm, level = "ICD10 SubChapter") |> 
  glimpse()
availableICD10(cdm, level = "ICD10 Hierarchy") |> 
  glimpse()
availableICD10(cdm, level = "ICD10 Code") |> 
  glimpse()

## -----------------------------------------------------------------------------
icd_chapters <- getICD10StandardCodes(cdm = cdm,
                                      level = "ICD10 Chapter")
icd_chapters |> length()
icd_chapters

## -----------------------------------------------------------------------------
mental_and_behavioural_disorders <- getICD10StandardCodes(
  cdm = cdm,
  name = "Mental and behavioural disorders",
  level = "ICD10 Chapter"
)
mental_and_behavioural_disorders

## -----------------------------------------------------------------------------
icd_subchapters <- getICD10StandardCodes(
  cdm = cdm,
  level = "ICD10 SubChapter"
)
icd_subchapters |> length()
icd_subchapters

## -----------------------------------------------------------------------------
mood_affective_disorders <- getICD10StandardCodes(
  cdm = cdm,
  name = "Mood [affective] disorders", 
  level = "ICD10 SubChapter"
)
mood_affective_disorders

## -----------------------------------------------------------------------------
icd_hierarchy <- getICD10StandardCodes(
  cdm = cdm,
  level = "ICD10 Hierarchy"
)
icd_hierarchy |> length()
icd_hierarchy

## -----------------------------------------------------------------------------
persistent_mood_affective_disorders   <- getICD10StandardCodes(
  cdm = cdm,
  name = "Persistent mood [affective] disorders", 
  level = "ICD10 Hierarchy"
)
persistent_mood_affective_disorders

## -----------------------------------------------------------------------------
icd_code <- getICD10StandardCodes(
  cdm = cdm,
  level = "ICD10 Code"
)
icd_code |> length()
icd_hierarchy

## -----------------------------------------------------------------------------
dysthymia   <- getICD10StandardCodes(
  cdm = cdm,
  name = "dysthymia", 
  level = "ICD10 Code"
)
dysthymia

## -----------------------------------------------------------------------------
dysthymia_descendants <- getICD10StandardCodes(
  cdm = cdm,
  name = "dysthymia", 
  level = "ICD10 Code",
  includeDescendants = TRUE
)
dysthymia_descendants

dysthymia_no_descendants <- getICD10StandardCodes(
  cdm = cdm,
  name = "dysthymia", 
  level = "ICD10 Code",
  includeDescendants = FALSE
)
dysthymia_no_descendants

## -----------------------------------------------------------------------------
compareCodelists(dysthymia_no_descendants, 
                 dysthymia_descendants) |> 
  filter(codelist == "Both") |> 
  pull("concept_id")

compareCodelists(dysthymia_no_descendants, 
                 dysthymia_descendants) |> 
  filter(codelist == "Only codelist 2") |> 
  pull("concept_id")

## -----------------------------------------------------------------------------
dysthymia <- getICD10StandardCodes(
  cdm = cdm,
  name = "dysthymia", 
  level = "ICD10 Code",
  nameStyle = "{concept_name}"
)
dysthymia

## -----------------------------------------------------------------------------
dysthymia <- getICD10StandardCodes(
  cdm = cdm,
  name = "dysthymia", 
  level = "ICD10 Code",
  type = "codelist"
)
dysthymia[[1]] |> glimpse()

## -----------------------------------------------------------------------------
dysthymia <- getICD10StandardCodes(
  cdm = cdm,
  name = "dysthymia", 
  level = "ICD10 Code",
  type = "codelist_with_details"
)
dysthymia[[1]] |> glimpse()