Most document pipelines treat a laboratory report as a table. Find the rows, read the test name, read the number next to it, and move on to the next page. On a clean report from a single laboratory that approach looks like it works, and the extracted values land in a database column that says result.

The trouble is that a laboratory result is not a number. It is a number in a unit, compared against a range that a particular laboratory set, flagged by that laboratory, measured on a specimen collected at a particular time, and reported on a date that may be days later. Take the number alone and every one of those facts is lost. Worse, the loss is silent: the column still holds a plausible value, and nothing downstream knows that the meaning went missing on the way in.

This piece is about what a lab report extraction has to keep together, why each piece cannot be separated from the others, and what goes wrong when one of them is dropped. It quotes the United States laboratory rules under the Clinical Laboratory Improvement Amendments (CLIA) from primary text, because those rules describe what a report must carry. It is about documents and data. It does not interpret any result, and nothing in it is clinical guidance.

What a laboratory report must carry

The CLIA regulations for laboratories are in 42 CFR Part 493. The standard for the test report is section 493.1291. Paragraph (c) lists what the report must indicate:

  • Patient identification — for positive identification, either the patient’s name and identification number, or a unique patient identifier and identification number.
  • The performing laboratory — the name and address of the laboratory location where the test was performed.
  • The report date and the test — the test report date, the test performed and, when appropriate, the specimen source.
  • The result with its unit — the test result and, if applicable, the units of measurement or interpretation, or both.
  • Specimen problems — any information about the condition and disposition of specimens that do not meet the laboratory’s criteria for acceptability.

Paragraph (d) adds the piece most extraction schemas forget. Pertinent reference intervals, or normal values, as determined by the laboratory performing the tests, must be available to the authorized person who ordered the tests and, if applicable, to the individual responsible for using the results.

Read as an extraction specification, those two paragraphs already say most of what matters. The unit is part of the result. The reference interval belongs to the laboratory that performed the test. The performing laboratory is named on the report for a reason. And a report can carry text about the specimen itself that changes what the result can be used for.

Five fields that travel as one

A useful way to design the schema is to ask, for each field, what breaks if it is extracted without the others. The answer is the reason the fields belong in one object rather than in five columns that happen to share a row number.

FieldWhy it cannot travel aloneWhat goes wrong if it is missing
ValueA number has no meaning without its unit and its rangeThe value is stored, compared and charted as if every laboratory measured it the same way
UnitThe same analyte can be reported in different units by different laboratoriesTwo results that describe the same quantity look different, or two different quantities look the same
Reference intervalIt is set by the performing laboratory, under 493.1291(d), and can differ between laboratoriesSomeone fills it in from a generic table that the laboratory never used
FlagIt is the laboratory’s own comparison of the value against its own intervalA downstream system recomputes it against a different interval and disagrees with the report
Collection date and timeIt is when the specimen reflects the patient, which the report date does notResults are ordered by the day the paperwork arrived, and trends shift by days

None of this requires knowing what any test means. It only requires accepting that the report is the laboratory’s statement about a specimen, and that the statement has parts. The extraction’s job is to keep the parts attached.

The range belongs to the laboratory, not to the test

The phrase that matters in 493.1291(d) is as determined by the laboratory performing the tests. A reference interval is not a property of the analyte the way its name is. It is a property of a method, an instrument, a population and a decision taken by a specific laboratory, and two laboratories can publish different intervals for a test with the same name.

That has a direct consequence for extraction. When a report prints a reference interval next to a result, the interval is a field on that result, read from that page, with that laboratory as its source. When the report does not print one, the interval is absent on that document. It is tempting to fill the gap from a lookup table keyed by test name, because the table makes every row look complete. It also replaces the laboratory’s interval with somebody else’s, on a document that will later be read as if the laboratory had said it.

  • Extract the interval as printed — lower bound, upper bound, any one-sided bound such as a value printed with a less-than sign, and the text form when the interval is not numeric.
  • Keep the interval with its laboratory — the performing laboratory’s name and address from 493.1291(c)(2) are the key that says whose interval it is.
  • Record absence as absence — an interval that is not on the page is a missing field with a reason, not a blank to be filled from a default.
  • Never mix sources silently — if a downstream system needs an interval the report did not carry, it should fetch one with its own provenance, and the record should say which interval came from where.

The same discipline applies to units. A unit printed in a column header applies to every row below it until the table says otherwise, and a unit printed inside the result cell overrides the header. Both patterns appear on real reports, sometimes on the same page. The unit an extraction stores should be the one that governs that row on that page, with the region it was read from.

The flag is the laboratory’s reading, not yours

Most reports print a flag next to results that fall outside the interval: a letter, a symbol, a word, sometimes a separate column, sometimes bold type with no letter at all. Because the flag can be derived from the value and the interval, it is easy to treat it as redundant and compute it again after extraction.

That is a mistake for two reasons. First, the recomputation only agrees with the report if the extraction captured exactly the interval the laboratory used, including its bounds and any qualifiers. Second, the flag on the page is what the ordering clinician saw. If the pipeline’s flag disagrees with the printed one, the pipeline has created a second version of the report that nobody at the laboratory wrote.

  • Extract the printed flag — the symbol or word exactly as it appears, mapped to a small controlled set only when the mapping is printed on the report, as in a legend.
  • Keep a computed flag separate — if a downstream rule needs its own comparison, store it as a different field with the interval it used, so the two can disagree visibly.
  • Treat a disagreement as a finding — a printed flag that does not match the printed value and interval usually means the extraction misread one of the three, and the row should go to review rather than be quietly corrected.

Section 493.1291(g) also requires a laboratory to alert the person who ordered the test immediately when a result indicates an imminently life-threatening condition, or panic or alert values. That alert happens outside the document. A pipeline reading a report days later is not part of that path, and it should not present itself as one. Its job is to preserve whatever the report says, including any critical-value notation, without implying it is the notification.

Three dates, and they are not interchangeable

A laboratory report usually carries more than one date, and the CLIA rules explain why. Each date answers a different question, and each comes from a different moment in the specimen’s path.

  • Collection — under 493.1241(c)(6), the test requisition must solicit the date and, if appropriate, the time of specimen collection. This is when the specimen reflects the patient.
  • Receipt — under 493.1283(a)(2), the laboratory’s records must include the date and time of specimen receipt into the laboratory. This is when the laboratory took custody.
  • Report — under 493.1291(c)(3), the report must indicate the test report date. This is when the laboratory stated the result.

For almost any downstream use that orders results in time, the collection date is the one that matters, and it is the one most often missing from an extraction that only captured the header. A report printed on a Friday for a specimen collected on Tuesday will sit on the wrong day of a trend if it is filed by the report date. When several results from the same draw arrive on different reports, the collection timestamp is also what groups them back together.

The extraction should keep all three when the page carries them, label each one, and record which ones were absent. It should not promote the report date into the collection field because the collection field was empty. That substitution makes a missing fact look present, which is the one thing a downstream reader cannot detect.

When the report comes from a different laboratory

Specimens are often sent onward. A hospital laboratory refers a test it does not perform to a reference laboratory, and the result comes back on the referring laboratory’s letterhead, inside its report, sometimes alongside its own results. Section 493.1291(i) covers this case, and three of its points matter for extraction.

  • The result is not edited on the way back — under (i)(1), the referring laboratory must not revise results or information directly related to the interpretation of results provided by the testing laboratory.
  • An exact copy exists — under (i)(2), the referring laboratory may let the testing laboratory send results directly, and must retain or be able to produce an exact duplicate of each testing laboratory’s report.
  • Every performing location is named — under (i)(3), the person who ordered the test must be notified by the referring laboratory of the name and address of each laboratory location where the test was performed.

For a document pipeline, this means one report can carry results from more than one performing laboratory, and each result’s interval belongs to the laboratory that performed that result. The extraction has to attach the performing laboratory to each row, not once to the page. A report header that names only the referring laboratory, with the reference laboratory named in a footnote or a separate block, is a common layout. Reading the header and applying it to every row assigns intervals to the wrong source.

Corrected reports supersede, they do not disappear

Section 493.1291(k) describes what a laboratory does when it finds an error in a reported result. It must promptly notify the person who ordered the test, issue a corrected report promptly, and maintain duplicates of both the original and the corrected report.

That sequence produces two documents describing the same test on the same specimen, and an extraction pipeline will eventually ingest both, often out of order. The medical record abstraction article makes the general point that an addendum supersedes an assertion, not a document. Laboratory corrections are the sharpest case of it.

  • Read the report status — preliminary, final and corrected are different states, and the label is usually printed. A corrected report that is extracted as if it were a fresh final report creates a duplicate rather than a supersession.
  • Link on the specimen, not the date — the accession or specimen identifier and the collection timestamp tie the corrected result to the original. The report dates will differ by design.
  • Supersede the value, keep the history — the corrected value replaces the original as the current value, while the original stays in the record with its status, because the rule itself requires both to exist and someone may have acted on the first.

The same applies to amended reference intervals, units or flags. A correction can change any field the original carried, and the extraction should compare the two reports field by field rather than assume only the value moved.

Specimen comments qualify the result

Section 493.1291(c)(7) requires the report to indicate any information about the condition and disposition of specimens that do not meet the laboratory’s criteria for acceptability. On the page, that information usually appears as a comment: a line under the result, a footnote marker, a coded remark, or a sentence at the bottom of the report that applies to some rows and not others.

Comments are the part of a report that table-oriented extraction loses first. They are not in a column, they wrap across lines, and they often refer back to a result through a symbol rather than by position. Yet they are part of what the laboratory reported about that result. A value that the laboratory printed together with a note about the specimen is not the same statement as the value alone.

The extraction should keep each comment, resolve its footnote marker to the result or results it applies to, and store it on those results rather than at the end of the page. If a marker cannot be resolved with confidence, the comment should still be kept and the link marked as uncertain. Dropping text because it does not fit a cell is how a qualified result becomes an unqualified one.

What the extraction should deliver

Put together, a lab report extraction built on these rules produces one result object per analyte per specimen, rather than one row per line of text:

  • The analyte — the test name as printed and any code the report carries, with the panel it belongs to when the report groups results.
  • The measurement — the value as printed, including any qualifier such as a less-than or greater-than sign, and the unit that governs that row.
  • The laboratory’s reading — the reference interval and the flag as printed, each with its source region on the page, and any computed flag stored separately.
  • The specimen and its time — specimen source, accession identifier, and the collection, receipt and report dates, each labelled and each marked absent when the page does not carry it.
  • The provenance — the performing laboratory for that row, the report status, and the link to any earlier report this one corrects.
  • The qualifications — every comment that applies to the result, with how confidently it was linked.

Each of those fields should carry the confidence of its extraction and the place on the page it came from, so a reviewer can check a single value without reading the whole report. When any of the five inseparable fields is missing or uncertain, the result should be routed for review instead of being written with a default.

Not chart abstraction, not claims

Two neighbouring problems use some of the same documents and are easy to confuse with this one.

Chart abstraction assembles many documents about one patient into an episode: notes, results, authorizations and payer documents, linked by an inferred join key. The medical record abstraction article covers that assembly. This piece is one layer down. It is about making each laboratory result a correct object before it is placed in any episode, because an abstraction built on results without their units, intervals and collection times inherits every one of those gaps.

Claim form extraction reads what was billed, not what was measured. A UB-04 can carry laboratory charges as a revenue category with a total, as the CMS-1500 and UB-04 article describes, and an EOB reports how those charges were adjudicated, which the CARC and RARC article discusses. Neither document carries the result itself, and neither should be used to infer one.

The number is the smallest part

A laboratory result is the most compact statement in a medical record, and that compactness is what makes it easy to extract badly. The value fits in a cell. The unit, the interval, the flag, the collection time, the performing laboratory, the report status and the specimen comments do not, and the CLIA rules are explicit that the report carries them for a reason. A lab report extraction that keeps them together, takes each one from the page rather than from a default, and records what was absent is not doing anything clinical. It is simply refusing to separate a statement the laboratory made as one.