jackwasey / icd

Fast ICD-10 and ICD-9 comorbidities, decoding and validation in R. NB use main instead of master for default branch.
https://jackwasey.github.io/icd/
GNU General Public License v3.0
242 stars 60 forks source link

expand_range errors out on ICD-10 decimal codes #196

Open patrickmdnet opened 4 years ago

patrickmdnet commented 4 years ago

While investigating issue #194 I was surprised to find that the expand_range function fails when using ICD-10 decimal codes. The test code in tests/testthat/test-ranges-icd10.R does not seem to cover this case.

> expand_range("C81.99", "C81.99")
Error in expand_range.icd10cm(start, end, short_code = short_code, defined = defined,  : 
  start code 'C81.99' not found
In addition: Warning message:
In icd10_children_defined_rcpp(x = x, lookup = lu, nc = nc) :

The error message is actually a lie - the problem is with the end code, not the start code.

The culprit appears to be R/ranges.R#L115:

  end_kids <- children_defined.icd10cm(end, short_code = TRUE)

since short_code is forced to TRUE, the function fails:

> icd:::children_defined.icd10cm('C81.99', short_code = TRUE)
character(0)
Warning message:
In icd10_children_defined_rcpp(x = x, lookup = lu, nc = nc) :
  None of the provided ICD-10 codes matched the lookup codes

In fact, the passed in short_code parameter value is never used.

@jackwasey can you shine some light on this?