This site is published by Medrecords AI, which makes 1 of the products it covers. We say which one wherever it appears. How we handle that.

Medical Record Chronology

Gaps in care and duplicate pages in a medical chronology

By Ahmed Jemaa, Co-Founder and CEO of Medrecords AI. Updated .

Answer in brief: set duplicates aside in a log instead of deleting them, and keep near-duplicates such as amended or re-filed reports in the chronology with a flag. Give every gap in care its own row with dates, length in days and 1 of 4 types, because a blank can mean no treatment, missing records or a reason written somewhere else.

Limits: Tool facts come from each vendor's own website, read 2026-11-12, and we have not tested those products. The time figures are published estimates from other sites, cited where used, and the worked example is synthetic.

The synthetic file, page by page

Synthetic, no real patient. The Patient A file from the guide has 64 pages. Here is what each block is, and what happens to it.

Page map of the 64-page synthetic file: 6 exact duplicate pages (9 to 14), 3 near-duplicate pages (34 to 36), 4 non-clinical pages (1, 2, 61, 62) and 51 other clinical pages Pages 1 to 32 (top row) and 33 to 64 (bottom row) 1 9 15 31 32 33 34 37 42 45 50 54 57 61 63 64 Clinical, read (51) Exact duplicate, set aside (6) Near-duplicate, kept (3) Non-clinical (4)
Of 64 pages, 54 carry clinical content you have to read (51 plus the 3 near-duplicates). The 6 exact duplicates are logged, not deleted. Synthetic file.
PagesDocumentTreatment
1-2Fax covers from the carrierNon-clinical, logged
3-8ED note and lumbar x-ray, 2025-03-04Rows 2 and 3
9-14Same ED note and x-ray, carrier's copyExact duplicate of 3-8, logged
15-30Occupational medicine, PT evaluation, 8 PT notesRows 4 to 6
31-33MRI report, Valley ImagingRow 7
34-36Same MRI report on ortho letterhead, ortho fax stampNear-duplicate, kept and cited with row 7
37-60Ortho, primary care 2022, injection, follow-upsRows 1 and 8 to 13
61-62Billing ledgerNon-clinical, logged
63-64Handwritten intake questionnaire, no dateRow 14, undated

The finished rows and both logs are on the template page.

Duplicates: exact, near and copy-forward

Record files repeat themselves because the same page passes through several hands. A hospital sends its records, the insurer sends the hospital's records again, and the treating surgeon's chart contains copies of both. Not every repeat is the same kind of repeat, and treating them all the same way loses information.

KindWhat it looks likeWhat to doRisk if you get it wrong
Exact duplicateSame page, same text, stamps and handwritingLog against the kept page, leave out of extractionA double row: 2 ED visits that were really 1
Near-duplicateSame report with a different header, fax stamp, signature date or addendumKeep, cite next to the original, note the differenceLosing the addendum, or the date a provider first saw a result
Amended or corrected report"Addendum" or "corrected report" with changed findingsIts own row on its own date, flagged as a conflict if the findings differQuoting the superseded version in your report
Copy-forward textA new note with history or exam text copied word for word from an earlier noteKeep the row, flag copy-forwardCounting 1 statement as 2 independent ones
Same-day separate encounters2 notes on 1 date that look alike, such as an ED note and an urgent care noteBoth stay; they are 2 eventsDropping a real encounter as a "duplicate"

Software that removes duplicates usually means exact duplicates. Ask any vendor what it does with near-duplicates and copy-forward text, and check a few on your own file. Medrecords AI, for example, removes exact duplicate pages and doesn't bill them. Copy-forward text inside a new note is a different problem that you still flag yourself.

The 4 types of gap in care

A gap is any interval longer than your threshold with no record. The threshold depends on the case: for example, a few days around a surgery, 30 days for injury follow-up, longer for a stable chronic condition. Pick it before you look, write it in the header, and type every gap you find:

TypeWhat it meansHow you knowWhat the row says
No treatmentThe patient was not seenLater notes say so, or the next visit reads like a restartDates, days, "no treatment", page of the note that says so
Reason statedCare paused for a recorded reason: authorization, travel, another illnessA later note gives the reasonDates, days, the reason in quotes, its page
Records not producedCare probably happened but the records aren't in the fileA note mentions a visit, test or provider you can't findDates, the missing provider, the page that mentions it, a request
Expected intervalThe gap matches the planThe previous note said "return in 6 weeks"Dates, days, the plan and its page

The type matters more than the length. A 110-day gap with a stated reason (authorization delay) means something different from a 40-day gap with no explanation. Your chronology records the type. Your opinion decides what it means.

Gap finder: paste your dates

Paste 1 date per line, with an optional label after it. Ranges such as 2025-03-14 to 2025-04-09 count from the end date. Dates can be YYYY-MM-DD or MM/DD/YYYY. The box starts with the Patient A dates. Nothing you paste leaves your browser.


Press "Find gaps" to list every interval over the threshold.

On the sample dates at 30 days, the finder returns 3 gaps: 901 days before the injury, 110 days after the orthopedic consult, and 35 days after the injection. Only the middle one needs a typed explanation in an IME; the first is pre-injury history and the last matches the plan in the procedure note.

Missing records: the gap that hides inside a note

The hardest gap to find doesn't show up as an interval. On 2025-11-05 the pain management note says the patient "has completed 6 PT sessions at Northside PT". No Northside records are in the file, and because the dates of those sessions are unknown, no interval flags them. You only catch it by reading for references: other providers, tests, imaging, prior claims. Flag each as missing and list them in the gap log so the request goes out early.