Concept sets

library(omopgenerics)

Codelist

A concept set can be represented as either a codelist or a concept set expression. A codelist is a named list, with each item of the list containing specific concept IDs.

condition_codes <- list("diabetes" = c(201820, 4087682, 3655269),
                        "asthma" = 317009)
condition_codes <- newCodelist(condition_codes)

condition_codes
#> 
#> - diabetes (3 codes)
#> - asthma (1 codes)

A codelist must be named

condition_codes <- list(c(201820, 4087682, 3655269))
newCodelist(condition_codes)
#> Error in `validateCodelist()`:
#> ! x must be a list; it can not contain NA; it can not be NULL; it has to
#>   be named; elements must have class: numeric, integer.

And a codelist cannot have missing values

condition_codes <- list("diabetes" = c(201820, NA, 3655269),
                        "asthma" = 317009)
newCodelist(condition_codes)
#> Error in `validateCodelist()`:
#> ! `diabetes` must not contain NA.

Concept set expression

A concept set expression provides a high-level definition of concepts that, when applied to a specific OMOP CDM vocabulary version (by making use of the concept hierarchies and relationships), will result in a codelist.

condition_cs <- list(
  "diabetes" = dplyr::tibble(
    "concept_id" = c(201820, 4087682),
    "excluded" = c(FALSE, FALSE),
    "descendants" = c(TRUE, FALSE),
    "mapped" = c(FALSE, FALSE)
  ),
  "asthma" = dplyr::tibble(
    "concept_id" = 317009,
    "excluded" = FALSE,
    "descendants" = FALSE,
    "mapped" = FALSE
  )
)
condition_cs <- newConceptSetExpression(condition_cs)

condition_cs
#> 
#> - diabetes (2 concept criteria)
#> - asthma (1 concept criteria)

As with a codelist, a concept set expression must be a named list and cannot have missing elements.

condition_cs <- list(
  dplyr::tibble(
    "concept_id" = c(201820, NA),
    "excluded" = c(FALSE, FALSE),
    "descendants" = c(TRUE, FALSE),
    "mapped" = c(FALSE, FALSE)
  ))
newConceptSetExpression(condition_cs)
#> Error in `validateConceptSetExpression()`:
#> ! x must be a list; it can not contain NA; it can not be NULL; it has to
#>   be named; elements must have class: tbl.
condition_cs <- list(
  "diabetes" = dplyr::tibble(
    "concept_id" = c(201820, NA),
    "excluded" = c(FALSE, FALSE),
    "descendants" = c(TRUE, FALSE),
    "mapped" = c(FALSE, FALSE)
  ),
  "asthma" = dplyr::tibble(
    "concept_id" = 317009,
    "excluded" = FALSE,
    "descendants" = FALSE,
    "mapped" = FALSE
  )
)
newConceptSetExpression(condition_cs)
#> Error in `validateConceptSetExpression()`:
#> ! $x[[i]]concept_id must be a numeric; it has to be integerish; it can
#>   not contain NA; it can not be NULL.