is_valid: Check whether ICD-9 codes are syntactically valid

Description Usage Arguments Details Value Methods (by class) Three-digit validation NA values Class See Also Examples

View source: R/valid.R

Description

These functions check whether the given ICD codes look correct, but do not check whether they have actual definitions in any particular ICD scheme. For that, see is_defined.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
is_valid(x, ...)

## S3 method for class 'icd10'
is_valid(
  x,
  short_code = guess_short(x),
  whitespace_ok = TRUE,
  re_short = re_icd10_short,
  re_decimal = re_icd10_decimal,
  ...
)

## S3 method for class 'icd10fr'
is_valid(x, short_code = guess_short(x), whitespace_ok = TRUE, ...)

## S3 method for class 'icd9'
is_valid(x, short_code = guess_short(x), whitespace_ok = TRUE, ...)

## S3 method for class 'comorbidity_map'
is_valid(x, short_code, ...)

Arguments

x

An ICD-9 or 10 code. If the class is set to 'icd9', 'icd10', 'icd10cm' etc then perform appropriate validation.

...

arguments passed on to other functions

whitespace_ok

Single logical, if TRUE, the default, matches for ICD codes will accept leading and trailing white space.

major

character vector of 'major' part of ICD-9 codes, i.e. that part which falls before the decimal point, in decimal notation. (In five digit notation, the 'major' part is be the first three characters (with leading zeroes), and includes V or E prefix.

Details

Leading zeroes in the decimal form are not ambiguous. Although integer ICD-9 codes could be intended by the user, there is a difference between 100, 100.0, 100.00. Therefore a warning is given if a numeric value is provided.

Value

logical vector with TRUE or FALSE for each ICD code provided according to its validity

Methods (by class)

Three-digit validation

icd9_is_valid_major validates just the 'major' three-digit part of an ICD-9 code. This can in fact be provided as a numeric, since there is no ambiguity. Numeric-only codes should be one to three digits, V codes are followed by one or two digits, and E codes always by three digits between 800 and 999.

NA values

Currently, there is a limitation on NA values. Calling with NA (which is a logical vector of length one by default) fails, because it is not a string. This is rarely of significance in real life, since the NA will be part of a character vector of codes, and will therefore be cast already to NA_character

Class

S3 class of on object in R is just a vector. Attributes are lost with manipulation, with the exception of class: therefore, elements of the class vector are used to describe features of the data. If these are not present, the user may specify (e.g. decimal vs short_code type, ICD-9 vs ICD-10 WHO), but if they are, the correct functions are called without any guess work. There is overlap between sets with combinations of short_code or decimal_code, and ICD-9 or ICD-10 codes, so guessing is never going to be perfect.

See Also

http://www.stata.com/users/wgould/icd9/icd9.hlp http://www.sascommunity.org/wiki/Validate_the_format_of_ICD-9_codes

Examples

1
2
3
4
5
6
7
8
9
is_valid(as.icd9(c(
  "", "1", "22", "333", "4444", "123.45", "V",
  "V2", "V34", "V567", "E", "E1", "E70", "E"
)))
# internal function:
icd:::is_valid_major(c(
  "", "1", "22", "333", "4444", "123.45", "V",
  "V2", "V34", "V567", "E", "E1", "E70", "E"
))

icd documentation built on July 2, 2020, 4:07 a.m.