Releases: jackwasey/icd
Scalable comorbidities with sparse matrix multiplication
Version 3.0
- major improvement in comorbidity calculation speed using matrix multiplication behind the scenes. ICD-10 codes were slower than ICD-9 code comorbidities before, and are now 1.5 - 2 orders of magnitude faster.
- Added AHRQ clinical condition software (CCS) classification for ICD-9 and ICD-10, thanks to Vitaly Druker, fixes #127
- added 'charlson' synonyms for 'quan_deyo', e.g. Charlson comorbidities can now be found using
comorbid_charlson(patient_data)
- Added AHRQ clinical condition software (CCS) classification for ICD-9 and ICD-10, thanks to Vitaly Druker, fixes #127
- function names have lost the 'icd_' prefix, old names kept for compatiblity, but easier now to write
comorbid(patient_data)
, andicd::comorbid
may also be used, and which many consider good practice. - Assume C++11, which is now four years old, enabling code simplification
- rename all functions to remove the icd_, people can use the concise icd:: if library(icd) was not callled
- deprecated rarely or unused code, including %i9in%
Need for speed bugfix
Obscure memory access error corrected. Other minor updates.
1.2 - need for speed and the monstrous RTF
Perhaps it is an obsession, but for reproducible research, I think it is important to extract data from source wherever possible. ICD-9-CM code definitions are scattered between very old formal documents, text files (with no hierarchical information) and a monstrous RTF document with everything on it. The RTF is not in any way designed to be machine readable for anything other than display, but, with difficulty, can be parsed to get the data.
This version derives ICD-9 codes from the RTF and plain text sources. Previously, icd9
relied on scraping some heading data from an unofficial web site. For the end user, this means greater fidelity to the actual specification (which changes annually), and improved processing of ICD-9 code ranges, e.g. finding parent codes common to a subset of codes in a list, and thus enabling summaries of otherwise complicated lists.
The OpenMP parallelization and C++11 optimization are now working to the satisfaction of CRAN (and Solaris and OS X compilers), using a configure script which builds the right Makevars
each installation. I haven't benchmarked -O3
compiler flag, but this is likely to give a boost.
Other changes and many small improvements and bug fixes are listed in NEWS.md and the git log.
CRAN release 1.1 with big speed improvements
Major change is parallelization and much more efficient coding of comorbidity assignment.
Bug fixes.
Major update
- Calculate Charlson scores
- Sum distinct comorbidities or diagnoses by patient
- Core rewrite in C++ for 50+ times speed improvement. 100,000 patients assigned comorbidities in ~2 seconds.
- Simplified handling validation of codes. No longer done in every function.
- Most functions now guess the ICD-9 code type automatically (e.g. 00321 vs 003.21)
- Reduced external dependencies down to Rcpp and checkmate (a very lightweight and fast function argument checker)
- Bug fixes (see github)
- API changes
- no more validation except in the icd9IsValidXxx functions. Removed stopIfInvalidIcd9, icd9InvalidActions
- internalized utility functions. They are also packaged and tested in jwutil
- deprecated icd9ValidXxx in favour of icd9IsValidXxx
- deprecated icd9ComorbditiesXxx replacing with briefer icd9ComorbidXxx
- stopped exporting benchmarking and SAS code processing.