Guide

How to run a retrospective chart review.

Clinical Extract turns the data-pull step of a retrospective chart review into one export: paste the patient list, confirm the graded matches, and start the review from a CSV and its data dictionary. This guide covers the study from the IRB application to the review.

1 The study

What a retrospective chart review is, and what the IRB asks.

A retrospective chart review answers a defined question from records that already exist: a cohort, a set of variables, an outcome. The IRB asks who the patients are, which variables you will collect, where each one comes from and how identifiers are handled. Answer those four questions before you open a chart: they set up the data dictionary, the patient list or criteria, and the honest broker's release. If your site routes research data requests through your informatics team, the same four answers start that request.

2 The variables

Define the variables before the review starts.

Write every variable with its definition and its source before the review starts: the diagnosis code set, the lab and its LOINC code, the medication class, the date rule. Split the list in two. The coded variables (diagnoses, dates, results, medications, procedures, staging) come out of the EHR as columns. The judgment variables (a reading of a note, an ambiguous stage, a cause) are the medical chart review itself, and they get an abstraction rule and a second reader. The first list becomes data-dictionary.json; the second is the abstraction form.

3 The patient list

Grade the patient list you already have.

Most chart reviews start from a list: MRNs from a pathology log, names and dates of birth from a clinic schedule, a CSV from a prior study. Roster pull matches every row against the EHR, an exact MRN first, then the FHIR Patient/$match operation on name, date of birth and sex, then a demographic search, and grades it certain, probable, possible, multiple or none. You confirm the matches, and the confirmed rows become the cohort the export runs on. A study that starts from criteria instead of a list builds the cohort the same way and reads the count first.

Patient list to analysis-ready CSVFour numbered steps joined by a process line. Step 1, paste: a roster of 240 rows, MRNs or names with dates of birth, for example MRN 0048152; Hale, Ruth 1958-04-02; Ortiz, M. 1972-11-19; Chen, Li 1966-07-30; Novak, Jan 1949-01-05. Step 2, match: every row gets a grade, drawn as an ink tint from solid to open. Certain, 198 rows, by exact MRN or Patient/$match; probable, 20 rows, by demographic search; possible, 8 rows, by Patient/$match; multiple, 9 rows, where the search finds two or more candidates; none, 5 rows, no candidate found. Step 3, confirm: the 226 certain, probable and possible rows you confirm become the study cohort, Group/{cohort-id}, highlighted; the 14 multiple and none rows are held for your review. Step 4, export: GET /Group/{cohort-id}/$export with _type=Patient,Condition,Observation,Procedure,MedicationRequest, Accept: application/fhir+json and Prefer: respond-async. The NDJSON files that come back are flattened into study.csv, 226 rows, one per patient, with columns such as patient_ref, birth_year, dx_code, dx_date, er_status and first_chemo, and data-dictionary.json with one entry per column.1PASTE2MATCH3CONFIRM4EXPORTMRN, OR NAME AND DOBGRADEROWSMRN 0048152certainexact MRN or $match198Hale, Ruth 1958-04-02probabledemographic search20Ortiz, M. 1972-11-19possible$match8Chen, Li 1966-07-30multiple (2)two candidates found9Novak, Jan 1949-01-05noneno candidate found5240 rows pasted240226confirmed198 + 20 + 8 rowsthe study cohortGroup/{cohort-id}14 held for your review9 multiple + 5 noneGET /Group/{cohort-id}/$export  ?_type=Patient,Condition,  Observation,Procedure,  MedicationRequestAccept: application/fhir+jsonPrefer: respond-asyncNDJSON, flattenedstudy.csv226 rows, one per patientpatient_ref,birth_year,dx_code,dx_date,er_status,first_chemo,...data-dictionary.jsonone entry per column
Patient list to analysis-ready CSVFour numbered steps joined by a process line. Step 1, paste: a roster of 240 rows, MRNs or names with dates of birth, for example MRN 0048152; Hale, Ruth 1958-04-02; Ortiz, M. 1972-11-19; Chen, Li 1966-07-30; Novak, Jan 1949-01-05. Step 2, match: every row gets a grade, drawn as an ink tint from solid to open. Certain, 198 rows, by exact MRN or Patient/$match; probable, 20 rows, by demographic search; possible, 8 rows, by Patient/$match; multiple, 9 rows, where the search finds two or more candidates; none, 5 rows, no candidate found. Step 3, confirm: the 226 certain, probable and possible rows you confirm become the study cohort, Group/{cohort-id}, highlighted; the 14 multiple and none rows are held for your review. Step 4, export: GET /Group/{cohort-id}/$export with _type=Patient,Condition,Observation,Procedure,MedicationRequest, Accept: application/fhir+json and Prefer: respond-async. The NDJSON files that come back are flattened into study.csv, 226 rows, one per patient, with columns such as patient_ref, birth_year, dx_code, dx_date, er_status and first_chemo, and data-dictionary.json with one entry per column.1PASTE2MATCHROWSMRN 0048152certainMRN or $match198Hale, Ruth 1958-04-02probablesearch, 1 found20Ortiz, M. 1972-11-19possible$match8Chen, Li 1966-07-30multiple (2)search, 2 found9Novak, Jan 1949-01-05nonenone found5240 rows pasted2403CONFIRM226confirmedcertain + probable + possiblethe study cohortGroup/{cohort-id}14 held for your review9 multiple + 5 none4EXPORTGET /Group/{cohort-id}/$export?_type=Patient,  Condition,Observation,Procedure,  MedicationRequestAccept: application/fhir+jsonPrefer: respond-asyncNDJSON, flattenedstudy.csv226 rows, one per patientpatient_ref,birth_year,dx_code,dx_date,er_status,first_chemo,...data-dictionary.jsonone entry per column
Figure 1 as a table
GradeHow the row matchedRowsNext
certainexact MRN, or Patient/$match match-grade certain198joins the cohort when you confirm
probabledemographic search, one candidate20joins the cohort when you confirm
possiblePatient/$match match-grade possible8joins the cohort when you confirm
multipledemographic search, two or more candidates9held for your review
noneno candidate found5held for your review
All rowspasted roster240226 confirmed, 14 held
Figure 1. Patient list to analysis-ready CSV. Paste the list you already have: roster pull grades every row, you confirm the matches, and the confirmed rows become the cohort the export runs on. The chart review starts from one CSV and its data dictionary. Row counts are illustrative, and the rows shown are synthetic.

4 The export

One export fills every coded variable.

The export runs for the cohort and the resource types the variable list names, through the certified bulk FHIR API, in your environment. What comes back is study.csv, one row per patient and one column per coded variable, and data-dictionary.json. For every coded variable the reviewers work in the CSV, and each cell can be traced to the FHIR element it came from.

5 The review

Manual review covers only the judgment variables.

The judgment variables are the review: two readers, an abstraction rule per variable, an agreement check on a sample. With the coded fields filled, the readers open a chart only for the questions that take a reading of the notes. Abstraction starting from the coded record shows the split for each field and what it does to the minutes per case.

6 Questions

Questions about chart reviews

Does a retrospective chart review need IRB approval?

A review of identified records for research needs IRB review; many qualify for expedited review and a waiver of consent when the records exist already and the risk is confidentiality alone. Your IRB decides. The variable list and the cohort definition are what the application quotes, and both come out of this workflow as a data dictionary and a count.

What is a medical chart review?

Reading patient records to answer a defined question: for a study, a quality measure, a registry or a payer audit. A retrospective chart review is the research form of it, run on records that exist already. A record’s coded fields are exported, and its narrative is read.

What is the difference between a prospective and a retrospective chart review?

A prospective review defines the variables and collects them as care happens. A retrospective review defines them now and collects them from records already written. The second one is where a study-scoped export does the most work, because the coded data is already there.

What level of evidence is a retrospective chart review?

Observational. It describes and compares what happened in the records; it does not randomize. A clean variable list, a defined cohort and a data dictionary that states each column’s source are what make its findings reproducible.

How many charts can we pull?

A pasted list runs up to 500 rows a run through roster pull, and a cohort of any size runs as a Group export. The chart review then starts from one study.csv.

Next

See Clinical Extract run on one of your studies.

Tell us which EHR you run and what the study or registry needs. We reply within one business day to set a meeting time.

Request a demo