Returns a data frame with clinical codes that match the supplied regular expression. Ignores case by default.

code_descriptions_like(
  reg_expr,
  code_type,
  all_lkps_maps = NULL,
  ignore_case = TRUE,
  codes_only = FALSE,
  preferred_description_only = TRUE,
  standardise_output = TRUE,
  col_filters = default_col_filters()
)

Arguments

reg_expr

a regular expression to search for

code_type

character. The type of clinical code system to be searched. Must be one obnf, dmd, icd9, icd10, read2, read2_drugs, read3, opcs4, data_coding_3, data_coding_4, data_coding_5, data_coding_6, sct, or phecode)`.

all_lkps_maps

Either a named list of lookup and mapping tables (either data frames or tbl_dbi objects), or the path to a SQLite database containing these tables (see also build_all_lkps_maps() and all_lkps_maps_to_db()). If NULL, will attempt to connect to an SQLite database named 'all_lkps_maps.db' in the current working directory, or to a a SQLite database specified by an environmental variable named 'ALL_LKPS_MAPS_DB' (see here for how to set environment variables using a .Renviron file). The latter method will be used in preference.

ignore_case

Should case differences be ignored in the match?

codes_only

bool. If TRUE, return a character vector of unique codes. If FALSE (default), return a data frame of all results including code descriptions (useful for manual validation).

preferred_description_only

bool. Return only preferred descriptions for clinical codes with synonyms. Default value is TRUE.

standardise_output

bool. If TRUE (default), outputs a data frame with columns named 'code', 'description' and 'code_type'. Otherwise returns a data frame with all columns for the relevant lookup sheet from (UK Biobank resource 592).

col_filters

A named list where each name in the list refers to the name of a lookup or mapping table. Each item is also a named list, where the names refer to column names in the corresponding table, and the items are vectors of values to filter for. For example, list(my_lookup_table = list(colA = c("A", "B")) will result in my_lookup_table being filtered for rows where colA is either 'A' or 'B'. Uses default_col_filters() by default. Set to NULL to remove all filters.

Value

data frame by default, or a character vector of codes if codes_only is TRUE.

Examples

# build dummy all_lkps_maps
all_lkps_maps_dummy <- build_all_lkps_maps_dummy()

# lookup ICD10 code descriptions matching 'cyst'
code_descriptions_like(
  reg_expr = "cyst",
  code_type = "icd10",
  all_lkps_maps = all_lkps_maps_dummy
)
#> # A tibble: 2 × 3
#>   code  description          code_type
#>   <chr> <chr>                <chr>    
#> 1 L721  Trichilemmal cyst    icd10    
#> 2 N330  Tuberculous cystitis icd10