Accuracy of administrative data in ascertaining health conditions: a systematic review
Data files
Jun 15, 2026 version files 302.71 KB
-
01.Data_Accuracy_Table_1.do
15.06 KB
-
02.Data_Accuracy_Upset_Plot.do
2.73 KB
-
03.Data_Accuracy_Alluvial_Plot.do
6.32 KB
-
04.Data_Accuracy_Violin_Plot.do
13.12 KB
-
05.Years_and_Countries_Clean.do
9.23 KB
-
06.area_chart.r
6.46 KB
-
07.world_map.r
3.23 KB
-
Data_extraction_table_complete_vF.csv
231.64 KB
-
README.md
14.90 KB
Abstract
Objectives: To conduct a systematic review of studies assessing the accuracy of International Classification of Diseases (ICD) and Diagnostic and Statistical Manual of Mental Disorders (DSM) codes in administrative data for ascertaining health conditions when compared to a reference standard.
Materials and Methods: We searched MEDLINE, Embase, and PsycINFO, and reported study characteristics and accuracy measures, including sensitivity, specificity, positive predictive value (PPV), and negative predictive value (NPV). We synthesised information about primary and validation sources of administrative data used in this literature and visually described accuracy measures by ICD chapter.
Results: Our review included 280 studies; only two were conducted in low or middle-income countries. The majority of studies used hospital records as the primary administrative data source (52.1%; n=146) and medical chart reviews as the data source for validation (53.6%; n=150). The interquartile ranges (IQRs) of accuracy measures across studies and ICD chapters were 44.0–91.4, 90.0–99.6, 59.4–91.1, and 90.0–99.5 for sensitivity, specificity, PPV, and NPV, respectively.
Discussion: The assessed literature is heavily skewed towards data from high-income countries. The variance we observed in accuracy measures, particularly for sensitivity and PPV, indicates that we need more evidence on and ongoing monitoring of the accuracy of ICD/DSM codes in administrative data, which are now widely used in population-based epidemiologic studies and therefore highly relevant for public health policymaking.
Conclusion: Health conditions ascertained using ICD/DSM have moderate to high accuracy in identifying true positives and high to very high accuracy in identifying true negatives.
This dataset contains the data extraction table and all analysis code used to produce the results, tables, and figures in the associated article.
Associated article: Campbell A, et al. Accuracy of administrative data in ascertaining health conditions: a systematic review. JAMIA Open (in press).
Dataset DOI: 10.5061/dryad.ffbg79d9f
Corresponding author: Dr Lucas Calais-Ferreira (lucas.cf@unimelb.edu.au)
Summary
The study is a systematic review of 280 studies that validated the accuracy of diagnostic codes for health conditions in administrative health data against a reference standard. For each study, accuracy estimates (sensitivity, specificity, positive predictive value, and negative predictive value) were extracted alongside study characteristics, the health condition and its diagnostic codes, the administrative data source, the reference standard used for validation, and a QUADAS-2 risk-of-bias assessment.
Glossary
Because users may be new to the field, the abbreviations used throughout the data and code are defined here:
- ICD-9 / ICD-10: International Classification of Diseases, 9th and 10th revisions (diagnostic coding systems).
- DSM: Diagnostic and Statistical Manual of Mental Disorders (psychiatric coding system).
- Sensitivity: proportion of true cases correctly identified by the administrative code (percent).
- Specificity: proportion of true non-cases correctly identified (percent).
- PPV: positive predictive value, the proportion of code-positive records that are true cases (percent).
- NPV: negative predictive value, the proportion of code-negative records that are true non-cases (percent).
- CI: confidence interval; LB / UB: lower / upper bound.
- SE: standard error.
- IQR: interquartile range.
- RoB: risk of bias, assessed with the QUADAS-2 tool (Quality Assessment of Diagnostic Accuracy Studies, version 2).
- ED: emergency department.
- Reference standard / validation data: the source treated as the truth against which the administrative code was compared (for example, a medical chart review).
Description of the data and file structure
Intermediate files created when the scripts are run (not included in the deposit; regenerated by the code):
Dataset/master_data.dta: cleaned Stata dataset, created by script 01 and used by scripts 02 and 03. See the run-order note below.Dataset/Data_extraction_years_expanded_v04.xlsx: created by script 05 and read by script 06.
Data
Data_extraction_table_complete_vF.csv has 613 data rows and 49 columns. The unit of a row is one accuracy estimate, not one study. A single study can contribute several rows (for example, when it validated more than one health condition, used more than one diagnostic code, or reported more than one accuracy measure).
Ref #identifies the study (there are 280 unique studies).Entry #numbers the rows within a study; there are exactly 280 rows withEntry # = 1, one per study.
Missing values
Missing values are coded 9999 for both numeric and text fields. The R scripts read these as NA (na.strings = "9999"); the Stata scripts convert them with mvdecode _all, mv(9999). A small number of legacy text cells are simply blank.
Files and variables
Data_extraction_table_complete_vF.csv
The 49 columns are listed below in the order they appear. Variable names are given exactly as they appear in the header; a few contain quirks from the extraction template, noted in brackets.
Identifiers and study metadata
Ref #: unique study identifier (the Covidence reference number). Integer.Entry #: sequential number of the accuracy estimate within a study (1 = first). Integer.Lead author (PS: All papers are "et al"): surname of the first author. Text. (The parenthetical is a note left in the template header; all studies are multi-author.)Publication year: year of publication, four digits. Some values carry anaorbsuffix to distinguish multiple papers by the same author in the same year; the scripts strip these suffixes before numeric use.Sample - Country(ies): country or countries in which the study was conducted. Text. One multinational study lists three countries separated by semicolons ("Netherlands; Italy; Denmark"); one study did not specify a country.
Sample characteristics
Study year (first): first calendar year of the study's data window (YYYY).Study year(last): last calendar year of the study's data window (YYYY).Overall Sample size: total number of individuals in the study. Count.Validation sample size: number of individuals in the validation (reference-standard) sample. Count.Age mean: mean age of the sample, in years.Age SD: standard deviation of age, in years.Age median: median age, in years.Age IQR: interquartile range of age, in years. Text (for example "45-66").Age range: minimum to maximum age, in years. Text.Male (%): percentage of the sample that is male (0 to 100).Female (%): percentage of the sample that is female (0 to 100).
Health condition and diagnostic coding
Health condition (free text): the health condition validated, as described in the source study. Text.ICD-10 code(s): ICD-10 diagnostic code(s) assessed. Text.ICD-10 Chapter: name of the ICD-10 chapter to which the condition belongs. Text. (Some raw values carry a leading asterisk, removed by the scripts.) Chapters XVIII and XXI were ineligible for the review and are dropped during analysis.ICD-9 code(s): ICD-9 diagnostic code(s) assessed. Text.DSM code: DSM diagnostic code(s), where applicable. Text.DSM code type: DSM edition/type (for example "DSM-5"). Text; missing for nearly all rows (DSM coding was rare).
Data sources
Type of administrative data source: category of the administrative data being validated. Text. Observed values include: Hospital records, Hospital data, Insurance claims records, Insurance claims data, ED records, Hospital and ED records, Hospital and insurance claims records, Registry, Primary care records, Administrative Database, Other. (The analysis scripts harmonise these into a smaller set of categories, for example collapsing the variants of hospital and insurance.)Adm data source (other): free-text description used when the category is "Other". Text.Type of reference standard: category of the validation (reference standard) data. Text. Observed values include: Medical chart reviews, Chart reviews, Administrative data, Clinical records, Registry, Disease register, Laboratory test results, Laboratory test, Radiography, Research assessment, Survey (self-report), Other.Reference standard (other): free-text description used when the category is "Other". Text.Reference standard (free text): fuller free-text description of the reference standard. Text.Single code used?: whether a single diagnostic code defined the condition. Text. Values:Yes,No,Unclear,At least 1(treated as "No" in analysis),1(treated as "Yes" in analysis). Case varies in the raw file.
Accuracy measures (all on the percentage scale, 0 to 100)
Sensitivity (estimate): sensitivity point estimate (percent).Sensitivity (95% CI LB): lower bound of the 95% confidence interval (percent).Sensitivity (95% CI UB): upper bound of the 95% confidence interval (percent).Sensitivity (SE): standard error of the estimate (percentage points).Specificity (estimate): specificity point estimate (percent).Specificity (95% CI LB): lower bound of the 95% CI (percent).Specificity (95% CI UB): upper bound of the 95% CI (percent).Specificity (SE): standard error (percentage points).PPV (estimate): positive predictive value point estimate (percent).(PPV (95% CI LB): lower bound of the PPV 95% CI (percent).PPV (95% CI UB): upper bound of the PPV 95% CI (percent).PPV (SE): standard error of PPV (percentage points).NPV (estimate): negative predictive value point estimate (percent).NPV (95% CI LB): lower bound of the NPV 95% CI (percent).NPV (95% CI UB): upper bound of the NPV 95% CI (percent).NPV (SE): standard error of NPV (percentage points).Measure (other): free text naming any additional accuracy measures reported by the study, such as Cohen's kappa or area under the curve (AUC). Text.
Risk of bias (QUADAS-2 domains)
Each domain is rated Low or High risk of bias (case varies in the raw file; there are no "Unclear" ratings in this dataset). Blank where not assessed.
RoB - Patient selection: risk of bias in how study participants were selected.RoB - Index test: risk of bias in how the administrative code (index test) was applied/interpreted.RoB - Reference standard: risk of bias in the reference standard and its interpretation.RoB - Flow and timing: risk of bias in participant flow and the timing between index test and reference standard.
Code/software
All analyses can be reproduced from the CSV using the seven scripts in Analytical code/.
Software and versions
- Stata for the five
.dofiles. Developed under Stata 18; also run under Stata/SE 19. - R for the two
.rfiles. Developed under R 4.4.2; also run under R 4.6.0.
Required user-contributed packages
Stata (install once with ssc install <name>, except where a URL is given):
01(Table 1):table1,carryforward02(upset plot):upsetplot03(alluvial plot):alluvial;labutil(provideslabmask);gr_postproduce(net install gr_postproduce, from("https://raw.githubusercontent.com/DiegoCiccia/StataPostProduce/main"))04(violin plots):violinplot,dstat,moremata;palettesandcolrspace(providecolorpalette, used to build the chapter legend)
R (install with install.packages()):
06(area chart):readxl,dplyr,tidyr,purrr,ggplot2,reshape2,viridis,scales07(world map):dplyr,rworldmap,RColorBrewer
How to run
Each script derives its file paths from the working directory by stripping Analytical code from the current path. Run each script from inside the Analytical code/ folder (set it as the Stata working directory, or open the R script from there), so that the Dataset/ folder is found one level up.
Run the scripts in numbered order (01 to 07). Two dependencies make the order matter:
- Script 01 must run before scripts 02 and 03. Script 01 cleans the CSV and saves
Dataset/master_data.dta, which 02 and 03 then read. - Script 04 overwrites
master_data.dtawith a violin-specific subset of the data (it drops ineligible ICD chapters XVIII and XXI and rows without a complete risk-of-bias assessment). If you re-run 02 or 03 after running 04, re-run 01 first to restore the fullmaster_data.dta. Running straight through 01 to 07 once avoids this issue.
Scripts 04, 05, and 07 each re-import the CSV directly and do not depend on master_data.dta. Script 06 depends on the Excel file written by script 05.
Description of each .do and .r files
01.Data_Accuracy_Table_1.do: Imports the CSV, recodes missing values, harmonises country names and data-source/reference-standard categories, derives study-level variables (study name, study duration, count of distinct conditions, binary flags for each accuracy measure and coding system), and saves the cleanedDataset/master_data.dta. Produces Table 1 (descriptive characteristics of the included studies) asTable_1_v3.xlsx, with an internal check that each categorical factor sums to 280 studies.02.Data_Accuracy_Upset_Plot.do: Readsmaster_data.dta, flags which of sensitivity, specificity, PPV, and NPV each study reported, drops studies whose only measure was Cohen's kappa, and draws the upset plot of the combinations of accuracy measures reported (Figure 5). Output:05.Upsetplot_Measures_Stata_v06.0.tif.03.Data_Accuracy_Alluvial_Plot.do: Readsmaster_data.dta, collapses the administrative data source into five categories (Hospital, Insurance, ED, Registry, Other) and the reference standard into five categories (Medical chart reviews, Admin. data, Diagnostic test, Registry, Other), and draws the alluvial plot linking administrative data source to validation data source (Figure 4). Output:04.Alluvial_plot_v04.1.tif.04.Data_Accuracy_Violin_Plot.do: Imports the CSV, computes study-by-chapter median values for each of the four accuracy measures, excludes ineligible ICD chapters (XVIII and XXI), and draws the four-panel violin plots of sensitivity, specificity, PPV, and NPV by ICD-10 chapter (Figure 6) plus a separate chapter legend. Also exports per-chapter summary statistics and the overall IQRs reported in the manuscript. Outputs:6.Database_Accuracy_Violin_Plot_v06.0.tif,Violin_Legend_v06.0.tif,ICD_Chapters_Summary_Stats.xlsx,log_v1.log. (Note: this script rewritesmaster_data.dta; see the run-order note.)05.Years_and_Countries_Clean.do: Imports the CSV, keeps one row per study, and expands each study into indicator columns for every calendar year (1969 to 2025) the study's data span. ExportsDataset/Data_extraction_years_expanded_v04.xlsx, the input for the area chart (script 06). Also reports the lag between publication year and the study's data window.06.area_chart.r: ReadsDataset/Data_extraction_years_expanded_v04.xlsx, reshapes it to counts of studies per ICD-10 chapter per year, and draws the stacked area chart of conditions by ICD-10 chapter over time, with grey bars for the number of publications per year (Figure 3).07.world_map.r: Reads the CSV, counts one row per study, harmonises country names, and draws the world map shading countries by the number of included studies (Figure 2) using a single-hue binned colour scale (bands: 1-2, 3-5, 6-10, 11-20, 21-80, 81-115). The one multinational study is counted once for each of its three countries; the one study with no specified country is not mapped. Outputs:Figure2_world_map.tiff(300 dpi),.pdf, and.png.
Access information
- These data were extracted by the authors from the 280 published studies included in the systematic review. Each row can be traced to its source study through the
Ref #identifier and the lead author and publication year. - All analysis code was written by the study authors and is released so that the results, tables, and figures can be reproduced.
When using these data, please cite both the Dryad dataset and the associated JAMIA Open article.
