Converts a vector of ICD codes to a vector of descriptions of these codes. The conversion is based on the edition (ICD-9 or ICD-10), and class (e.g., icd10who) of the input vector. See examples.

explain_code(...)

explain_icd(...)

# S3 method for default
explain_code(
  x,
  short_code = guess_short(x),
  condense = TRUE,
  brief = FALSE,
  warn = TRUE,
  ...
)

# S3 method for list
explain_code(x, ...)

# S3 method for icd9
explain_code(...)

# S3 method for icd9cm
explain_code(
  x,
  short_code = guess_short(x),
  condense = TRUE,
  brief = FALSE,
  warn = TRUE,
  ...
)

# S3 method for icd10cm
explain_code(
  x,
  short_code = guess_short(x),
  condense = TRUE,
  brief = FALSE,
  warn = TRUE,
  ...
)

# S3 method for icd10who
explain_code(
  x,
  short_code = guess_short(x),
  condense = TRUE,
  brief = NULL,
  warn = TRUE,
  lang = c("en", "fr"),
  ...
)

# S3 method for icd10fr
explain_code(x, ...)

# S3 method for icd10be
explain_code(x, lang = c("fr", "nl", "en"), ...)

# S3 method for icd10
explain_code(
  x,
  short_code = guess_short(x),
  condense = TRUE,
  brief = FALSE,
  warn = TRUE,
  ...
)

Arguments

...

arguments passed on to other functions

x

vector or other structure of ICD codes to explain in human language

short_code

single logical value which determines whether the ICD-9 code provided is in short (TRUE) or decimal (FALSE) form. Where reasonable, this is guessed from the input data.

condense

single logical value which indicates whether to condense the given set of ICD-9 codes by replacing subsets of codes with 'parent' codes which exactly encompass certain subsets. E.g. If all cholera diagnoses are provided, only '001 - Cholera' needs to be displayed, not all sub-types.

brief

single logical value, default is FALSE. If TRUE, the short description from the canonical CMS descriptions will be used, otherwise the long description is used.

warn

single logical value, default is TRUE, meaning that codes which do not correspond to diagnoses, or to three-digit codes, will trigger a warning.

lang

For WHO ICD-10 codes, the 2016 English and 2008 French translations are available. Use en or fr respectively. For ICD-10-CM codes, Dutch is also available, indicated by nl.

Value

data frame, or list of data frames, with fields for ICD-9 code, name and description. There is no guarantee on the order of the returned descriptions. explain_table is designed to provide results in a reliable order (when not condensing codes, at least).

Details

explain_icd is a synonym for explain_code.

Methods (by class)

  • default: Explain ICD codes from a character vector, guessing ICD version

  • list: Explain all ICD-9 codes in a list of vectors

  • icd9: explain character vector of ICD-9 codes.

  • icd9cm: explain character vector of ICD-9-CM codes

  • icd10cm: ICD-10-CM explanation, current a minimal implementation

  • icd10who: WHO ICD-10 explanation in French or English

  • icd10fr: ICD-10-FR explanation, initial implementation, subject to change

  • icd10be: ICD-10-BE explanation, initial implementation, subject to change

  • icd10: ICD-10 explanation, falls back on ICD-10-CM until ICD-10 WHO copyright workaround is available

Examples

# by default, just show parent code and ignore children (428.0 not shown # because 428 is present): explain_code(icd9_map_ahrq$CHF[1:3])
#> [1] "Rheumatic heart failure (congestive)" #> [2] "Malignant hypertensive heart disease with heart failure" #> [3] "Benign hypertensive heart disease with heart failure"
# same without condensing the list. In this case, 428.0 is shown: explain_code(icd9_map_ahrq$CHF[1:3], brief = TRUE)
#> [1] "Rheumatic heart failure" "Mal hypert hrt dis w hf" #> [3] "Benign hyp ht dis w hf"
# The first three in the ICD-10 equivalent are a little different: explain_code(icd10_map_ahrq$CHF[1:3], brief = TRUE)
#> [1] "Rheumatic heart failure" #> [2] "Left ventricular failure, unspecified" #> [3] "Unspecified systolic (congestive) heart failure"
if (FALSE) { # these may need to download the WHO data first: explain_code(as.icd10who("B219"), lang = "fr") explain_code(as.icd10who("B219")) } if (FALSE) { # Belgian ICD-10 has three languages available explain_code(as.icd10be("C20")) # [1] "Malignant neoplasm of rectum" explain_code(as.icd10be("C20"), lang = "en") # [1] "Malignant neoplasm of rectum" explain_code(as.icd10be("C20"), lang = "fr") # [1] "néoplasme malin du rectum" explain_code(as.icd10be("C20"), lang = "nl") # [1] "maligne neoplasma van het rectum" }