Data Curation Checklist for Clinical Datasets

By Dr. Zubair Khalid, DVM, MS, PhD ·

Data Curation Checklist for Clinical Datasets

By the end of this guide, you will be able to take a raw clinical dataset, such as an export from an electronic health record (EHR), a registry, or a multi-center study, and move it through a complete curation workflow: profiling, quality control, de-identification, standardization, and preparation for deposit in a research repository. You will have a working checklist you can adapt to your own project, along with runnable code for the most common quality checks.

To follow the walkthrough, have the following on hand:

  • Python 3.9 or later with pandas, numpy, and (optionally) great_expectations installed
  • Your dataset in CSV, Parquet, or a database export
  • A data dictionary or codebook from the source system, if one exists
  • A copy of your institutional review board (IRB) protocol or data use agreement, because curation decisions about identifiers and sharing depend on what your protocol permits

What Clinical Data Curation Actually Means

Data curation is the organized work of making a dataset trustworthy, understandable, and reusable. For clinical data, that work covers several layers at once: verifying that values are accurate representations of real patients, checking completeness, harmonizing terminology across sites or systems, protecting patient privacy, and documenting every decision so that another researcher can reproduce the result.

This is distinct from ordinary data cleaning. Cleaning fixes syntax problems, such as a misspelled drug name or a date stored as text. Curation goes further and asks whether the dataset can support a scientific claim. The distinction shows up repeatedly in the literature. Central review of Glasgow Outcome Scale-Extended assessments across 18 sites in the TRACK-TBI study found errors in 24 percent of assessments in the first cohort. After curation of the first cohort, structured feedback, and additional assessor training, the error rate fell to 10 percent in the second cohort [1]. Curation is not a formatting step. It changes what the data can prove.

Curation also scales poorly if you treat it as pure manual work. Manual review of EHR records is labor-intensive and prone to reviewer-dependent variation, which is why automated and semi-automated approaches now appear throughout clinical research [2]. A realistic modern checklist assumes you will combine scripted checks with targeted human review and, increasingly, machine learning assistance.

The Clinical Data Curation Checklist, Step by Step

Five-step flow of the curation checklist from inventory and profiling through integrity checks, de-identification, and standardization.

The checklist below is ordered so that early steps catch problems that would otherwise contaminate later ones. Profile first, de-identify second, standardize third, and document last, because each step depends on the one before it.

Step 1: Inventory the Dataset and Its Provenance

Before touching any values, answer five questions in writing:

  1. Where did each field originate (EHR export, case report form, registry, lab feed)?
  2. What version of each source system was in use, and did it change during the study period?
  3. Who or what process entered each value, and when?
  4. What transformations have already been applied upstream?
  5. What is the unit of observation, meaning one row per patient, per encounter, per specimen, or per measurement?

Provenance matters because upstream changes silently alter your data. The NFL injury surveillance program, which links a league-wide EHR with game statistics and other sources, treats curation as an ongoing activity that is adjusted over time in response to findings about completeness and accuracy, rather than as a one-time pass [3]. Build that expectation into your plan from the start.

Step 2: Profile the Data Before Cleaning Anything

Run a profiling pass that reports row counts, column types, missingness rates, distinct values, and basic distribution statistics for every field. With pandas:

import pandas as pd
import numpy as np

df = pd.read_csv("cohort_raw.csv")

# Basic shape and types
print(df.shape)
print(df.dtypes)

# Missingness rate per column, sorted worst first
miss = df.isna().mean().sort_values(ascending=False)
print((miss * 100).round(1).head(15))

Expected output looks like this:

(2310, 47)
patient_id             int64
encounter_date        object
metastasis_site       object
age_at_diagnosis     float64
...
metastasis_site        38.2
followup_months        22.7
biomarker_status       14.9

Two profiling rules that catch most early surprises:

  • Confirm that the row count matches the expected cohort size exactly. If a dataset of 2,310 patients yields 2,310 rows of one type but 6,900 rows of another, you are looking at one row per encounter rather than one per patient.
  • Flag every column above your missingness threshold. A common working threshold is 50 percent. Automated curation tooling developed for primary Sjögren's syndrome cohorts used a 50 percent missingness cutoff, imputing features below that threshold and reporting the rest in a quality report [5].

Step 3: Check for Duplicates and Impossible Values

Clinical datasets accumulate duplicates from repeated exports, merged records, and repeated measurements. Check uniqueness at the level your analysis assumes:

# Duplicated patient IDs when the unit is one row per patient
dupes = df["patient_id"].duplicated().sum()
print(f"duplicate patient_id rows: {dupes}")

# Impossible values
bad_age = df[(df["age_at_diagnosis"] < 0) | (df["age_at_diagnosis"] > 120)]
bad_dates = df[df["encounter_date"] > pd.Timestamp.today()]
print(f"implausible ages: {len(bad_age)}, future dates: {len(bad_dates)}")

Expected output:

duplicate patient_id rows: 3
implausible ages: 2, future dates: 0

For continuous variables, use a z-score screen, which flags values more than a chosen number of standard deviations from the mean. The Sjögren's syndrome curation tool used z-scores for outlier detection and reported them on a feature-by-feature basis in its quality report [5]. A z-score screen in pandas takes one line:

z = (df["lab_value"] - df["lab_value"].mean()) / df["lab_value"].std()
outliers = df[z.abs() > 4]

An outlier is a question, not an error. Cross-check each flagged value against the source document before changing or dropping it.

Step 4: De-identify and Verify the De-identification

De-identification removes or transforms direct and indirect identifiers. This step must come before any sharing decision and should be scripted so it is reproducible:

import re

# Remove or hash direct identifiers
df = df.drop(columns=["name", "mrn", "address", "phone"])

# Scan every text column for stray medical record numbers
mrn_pattern = re.compile(r"\bMRN[:\s]*\d{6,10}\b", re.IGNORECASE)
for col in df.select_dtypes(include="object").columns:
    hits = df[col].astype(str).str.contains(mrn_pattern).sum()
    if hits:
        print(f"WARNING: {hits} possible MRNs in column {col}")

Expected output when the scan finds a leak:

WARNING: 4 possible MRNs in column radiology_note_excerpt

Dates deserve special attention. Admission and discharge dates combined with a five-digit ZIP code can re-identify a patient, so most workflows shift all dates by a per-patient random offset. Record the offset method in your documentation without ever storing the mapping in the shared dataset.

The automated pipeline in the breast cancer LLM study ran on data that had already been de-identified and prestructured through a clinical data warehouse before any model touched it [2]. That ordering, de-identification before any downstream processing, is the safe default for every workflow, including local ones.

Step 5: Standardize Terminology and Units

Inconsistent vocabulary is the most expensive problem to find late. The same clinical concept arrives as "T2DM," "type 2 diabetes," and E11.9 from ICD-10. A practical standardization pass has three parts:

  1. Build a value map for each categorical field, listing every raw value and its target term.
  2. Normalize units, converting all weights to kilograms or all lab values to a single unit system, and record the conversion in the data dictionary.
  3. Align your fields to a reference model where one exists. Automated curation work in the Sjögren's syndrome cohorts produced a standardization report comparing each feature against a reference model to identify fields that shared common terminology [5].

A quick vocabulary check:

print(df["sex"].value_counts(dropna=False))

Expected output revealing inconsistent coding:

F           1120
M            980
Female       140
Male         132
NaN           38
f              9

Map those to a single controlled pair and record the mapping file alongside the dataset.

Step 6: Validate Against a Data Model or Minimum Dataset

A structured target prevents silent scope drift. Several mature clinical curation efforts define explicit data models and curation workflows for this reason. My Cancer Genome developed a clinical trial information model, a curation information system, and a standard operating procedure for consistent annotation of oncology trials, and has used it to curate more than 5,000 trials [6]. The AACR Project GENIE Biopharma Collaborative uses the PRISSMM data curation model to collect longitudinal treatment and outcome data for 25,000 patients on top of a registry spanning more than 130,000 patients [7].

You do not need their infrastructure to borrow their principle: pick or define a target schema first, then validate every field against it, including allowed value sets and data types.

Step 7: Handle Missingness Deliberately

Decision path for missing data: separate codes for missing types, then a 50 percent threshold for imputing versus reporting.

For each field with missing values, classify the mechanism as best you can: is the value truly absent, not applicable, not yet collected, or lost in an upstream merge? Preserve that distinction with separate codes rather than collapsing everything into a blank. The 50 percent imputation threshold used in the Sjögren's syndrome automated tooling is one defensible default, but any imputation choice must be stated in your documentation so downstream users can rerun the analysis without it [5].

Step 8: Curate Derived and Text-Derived Variables with a Validation Set

Many clinical variables, such as metastatic sites, medication names, or outcome scores, are extracted from free text. Treat these as hypotheses until validated. In the AACR GENIE metastasis work, researchers trained models to identify affected organs from 31,445 free-text radiology reports across 2,310 patients, using logistic regression, convolutional neural networks, and BERT. The BERT model reached an average per-site area under the receiver operating characteristic curve of 0.981 and an average accuracy of 97.3 percent, but only because a curated labeled dataset existed to train and evaluate against [4].

The same discipline applies to large language models. The breast cancer study compared physician manual review with LLM-based processing of de-identified records from five academic hospitals, reporting extraction accuracy, missing value rates, and concordance between the two pathways against a national registry benchmark [2]. The transferable lesson is methodological, not model-specific: always hold out a manually reviewed gold-standard subset and report concordance before trusting any automated extraction at scale.

Deep learning pipelines for image curation follow the same pattern. An automated echocardiography pipeline curating 14,326 exams from 9,678 patients validated its automated left ventricular ejection fraction measurements against manual ones, reporting a bias of negative 1.8 percent with a standard deviation of 7.6 percent across a validation subsample [8]. Validation against a human reference is what turns an automated pipeline into curated data.

Step 9: Apply Central or Second-Reviewer QC

Single-reviewer curation embeds that reviewer's assumptions into the data. TRACK-TBI's central review of outcome assessments, which reduced the scored-assessment error rate from 24 percent to 10 percent between cohorts, is the clearest demonstration that independent review and feedback improve data quality measurably [1]. For smaller projects, a second reviewer auditing a random 10 percent sample of curated rows is a reasonable adaptation.

Step 10: Document, Package, and Choose a Repository

Curation ends when a stranger could reuse your dataset without emailing you. That requires:

  • A data dictionary defining every field, unit, and allowed value
  • A versioned changelog recording every transformation, in the order applied
  • The de-identification method and its limitations
  • The scripts that produced the shared files, stored with the data

Then choose a repository. Research data sharing through a public or controlled-access repository multiplies the value of curation work, and the choice among repositories should be driven by data type, access model, and interoperability rather than convenience. A comparison of the major options relevant to clinical datasets:

RepositoryBest suited forAccess modelNotable curation features
cBioPortal (AACR Project GENIE)Clinico-genomic cancer datasetsOpen, public views [7]Longitudinal patient timelines, treatment-linked sample selection, survival analysis [7]
MIDRCMultimodal medical imaging plus clinical dataControlledInteroperability with other data commons such as BioData Catalyst and N3C for matched-cohort construction [9]
MSeqDRMitochondrial disease genomic and phenotypic dataConsortium and optional public sharingWeb portal for variant, gene, and exome-level analysis with distributed annotation sharing [10]
CIViCClinical variant interpretationsOpen, crowdsourced with expert moderationAssertion-level curation following AMP guidelines, ClinGen Allele Registry IDs, automated ClinVar submission [11]
My Cancer GenomeStructured clinical trial eligibility knowledgeOpen public viewsData model with standard operating procedure for trial annotation [6]

Interoperability deserves weight in the comparison. The Medical Imaging and Data Resource Center demonstrated building matched clinical and imaging cohorts by connecting with BioData Catalyst and the National Clinical Cohort Collaborative, characterizing cohort representativeness against CDC population statistics [9]. A repository that can interoperate with others effectively extends your dataset without new collection.

A Consolidated Checklist Table

PhaseKey checksPrimary toolingTypical failure caught
InventoryProvenance, unit of observation, source versionsDocumentation templateRow-level ambiguity
ProfileShape, types, missingness, distributionspandas profiling scriptsSilent upstream schema drift
IntegrityDuplicates, impossible values, z-score outlierspandas, numpyPhantom patients, implausible values
PrivacyIdentifier removal, MRN scanning, date shiftingScripted de-identificationRe-identification risk
StandardizationValue maps, unit conversion, reference model alignmentMapping tables, terminology reportsVocabulary fragmentation across sites
ValidationTarget schema conformance, value setsData model, great_expectationsFields that cannot support the analysis
MissingnessMechanism classification, imputation policyDocumented codes, threshold policyCollapsed distinctions between missing types
Automation QCGold-standard subset, concordance ratesNLP or LLM extraction with validationUnverified automated labels
Human QCCentral or second review, feedback loopReview protocols, retrainingReviewer-dependent scoring error
SharingDictionary, changelog, repository fitRepository comparisonUndocumented, unreusable data

Tips That Save the Most Time

  • Script every transformation. If a fix exists only in a spreadsheet cell, it does not exist. The NFL surveillance program's practice of ongoing, adjustable curation works only because corrections are applied systematically [3].
  • Curate against the analysis, not in the abstract. Write the primary analysis plan first, then curate the fields it requires to a high standard and the rest to a good standard. Perfectionism across all 200 columns is how curation becomes the bottleneck that motivated NLP-assisted approaches in cancer genomics research [4].
  • Use ontology guidance for multi-site integration. The NINDS Center for SUDEP Research applied ontology-guided curation to integrate multisite clinical research data, an approach worth imitating whenever sites use local coding habits [12].
  • Store hashed, timestamped files when integrity matters. Multimodal imaging curation work established a format that computes cryptographic hashes on compressed image slices and writes them with digitally signed timestamps, protecting against silent corruption [13].
  • Remember that curation decisions themselves generate scientific value. Expert curation within ClinGen, including variant curation expert panels applying standardized evidence codes for genes such as CDH1 and PTEN, produces classifications that become reusable community resources [14]. The ClinGen infrastructure supporting gene-disease validity curation runs on common data standards and shared frameworks [15]. Your documented mapping tables and adjudication notes are the small-scale equivalent.

Common Mistakes and Limitations

  • Curating before profiling. Teams that start fixing values on day one routinely miss structural problems, such as a one-row-per-encounter table treated as one-row-per-patient, until analysis time. Profile first, always.
  • Trusting a single reviewer. TRACK-TBI's 24 percent first-cohort error rate came from well-intentioned site assessors [1]. Solo curation carries the same risk at any scale.
  • Deploying automated extraction without a validation subset. The impressive numbers in the LLM and NLP literature, including 97.3 percent accuracy for metastatic site extraction [4], were measured against curated ground truth. An unvalidated pipeline produces numbers that look curated but are not.
  • Treating de-identification as deletion. Dropping the name column does nothing about free-text notes, rare diagnosis plus small geography combinations, or dates. Script a residual-identifier scan and shift dates.
  • Collapsing all missing values into one code. "Not applicable" and "not collected" mean different things for every downstream analysis.
  • Choosing a repository after curation instead of before. Repository data models, such as PRISSMM for GENIE's longitudinal data [7] or the MSeqDR portal structure [10], shape what you should capture. Choosing late forces a second curation pass.
  • Assuming curation is finished at deposit. Datasets decay as source systems change. Plan for review cycles the way the NFL program does [3].

One honest limitation applies to all of it: curation improves data quality, but it cannot manufacture signal that was never collected, and it cannot substitute for clinical judgment in individual cases, which belongs with a treating clinician.

Frequently Asked Questions

What is a clinical data curation checklist?

It is a structured, ordered list of quality, privacy, and standardization tasks that takes a raw clinical dataset to a research-ready state. A good checklist covers profiling, integrity checks, de-identification, terminology standardization, validation against a data model, missingness handling, human or automated quality review, and documentation for reuse.

How is data curation different from data cleaning?

Cleaning fixes syntactic errors such as typos, malformed dates, and duplicated rows. Curation additionally verifies that the data can support a scientific claim, which includes provenance documentation, privacy protection, terminology harmonization, validation of derived variables, and second-reviewer quality control.

Can large language models handle clinical data curation for me?

They can handle substantial portions of extraction and review, but only with validation. A comparative study in breast cancer records found LLM-based processing feasible against physician manual review, and the study's design, with concordance checks against a national registry, is the model to follow [2]. Never deploy automated extraction without a manually reviewed gold-standard subset.

How do I decide which repository to deposit my dataset in?

Match the repository to your data type and access needs. Genomic-plus-clinical cancer data fits cBioPortal through GENIE [7], imaging plus clinical data fits MIDRC with its interoperability with BioData Catalyst and N3C [9], mitochondrial disease genomics fits MSeqDR [10], and variant interpretations fit CIViC [11]. Compare access model, data model fit, and interoperability before you curate, not after.

What missingness threshold should trigger imputation versus flagging?

A widely used working threshold is 50 percent, with features below that level imputed and above it reported rather than filled. Any threshold is defensible only if you document it and report which fields were imputed so others can reanalyze without imputation.

How much error should I expect in multi-site outcome assessments?

Meaningful error rates are normal without central review. TRACK-TBI found scoring errors in 24 percent of Glasgow Outcome Scale-Extended assessments in its first cohort, reduced to 10 percent after central curation, feedback, and retraining [1]. Budget for central or second-reviewer QC in any multi-site study.

What documentation must accompany a shared clinical dataset?

At minimum: a data dictionary with field definitions, units, and allowed values, a versioned transformation changelog, the de-identification method and its limitations, and the scripts used to produce the shared files. Mature resources such as the ClinGen data platforms treat standardization and dissemination infrastructure as central to usability [15].

Do I need new IRB approval to curate data I already have?

Curation itself usually falls under your existing protocol, but de-identification methods and any plan to deposit data in a repository change the risk profile and often require amendment or review. Confirm with your IRB before Step 4 of the checklist, not after.

Sources

  1. Central Curation of Glasgow Outcome Scale-Extended Data: Lessons Learned from TRACK-TBI
  2. Large Language Model Versus Manual Review for Clinical Data Curation in Breast Cancer: Retrospective Comparative Study
  3. Lessons on Data Collection and Curation From the NFL Injury Surveillance Program
  4. Abstract 1158: A.I.-assisted clinical data curation to determine genomic biomarkers of cancer metastasis
  5. AB0166 ENHANCING THE QUALITY OF CLINICAL DATA THROUGH DATA CURATION IN PRIMARY SJöGREN’S SYNDROME
  6. The My Cancer Genome clinical trial data model and trial curation workflow
  7. Analysis and Visualization of Longitudinal Genomic and Clinical Data from the AACR Project GENIE Biopharma Collaborative in cBioPortal
  8. A deep learning-based pipeline for large-scale echocardiography data curation and measurements
  9. Multimodal data curation via interoperability: use cases with the Medical Imaging and Data Resource Center
  10. Mitochondrial Disease Sequence Data Resource (MSeqDR): A global grass-roots consortium to facilitate deposition, curation, annotation, and integrated analysis of genomic data for the mitochondrial disease clinical and research communities
  11. Adapting crowdsourced clinical cancer curation in CIViC to the ClinGen minimum variant level data community-driven standards
  12. ODaCCI: Ontology-guided Data Curation for Multisite Clinical Research Data Integration in the NINDS Center for SUDEP Research
  13. Data Curation for Preclinical and Clinical Multimodal Imaging Studies
  14. A case for expert curation: an overview of cancer curation in the Clinical Genome Resource (ClinGen)
  15. Generating Clinical-Grade Gene-Disease Validity Classifications Through the ClinGen Data Platforms