Skip to main content

Extract data from lab results

A lab results report is where a diagnosis often starts, and a clinic or research team receives them from a dozen sources that never agree on format: a Quest Diagnostics PDF, a LabCorp portal export, a hospital system printout, and a faxed panel from a referring physician. Data each report carries is the same in concept: a list of analytes, each with a measured value, the units, a reference range, and a flag when the result falls outside that range. A metabolic panel alone can carry 14 analytes, and a single report can stack several panels, so a medical record system or a researcher needs every line captured with its value tied to the right reference interval.

Difficulty concentrates in units, reference ranges, and the high-low flags. Identical analytes report in different units across labs, so glucose at 95 mg/dL on one report is 5.3 mmol/L on another, and a value is meaningless without its unit. Reference ranges are themselves a pair (such as 70 to 99 mg/dL) that has to stay bound to its analyte, and the abnormal flag (H, L, or a critical marker) drives clinical follow-up. Many analytes map to a LOINC code that lets results from different labs be compared, and capturing that code is what makes a result interoperable. A report dated 2026-04-18 with a fasting glucose of 110 mg/dL flagged H is only actionable when the value, unit, range, and flag travel together.

Talonic reads the lab report and returns each analyte with its value, unit, reference range, abnormal flag, and LOINC code where present, grouped by panel. A clinical or research system loads structured results instead of re-keying a panel by hand. Results drawn 2026-04-18 at Quest Diagnostics, exported from the EHR and the EMR as a PDF, let a US clinic compare a fasting glucose of 110 mg/dL against the 70 to 99 reference range, while the LOINC code keeps the value comparable across LabCorp and Mayo Clinic Laboratories.

What gets extracted from lab results

Patient NameHelen Park
Collection Date2026-04-18
Performing LabQuest Diagnostics
AnalyteGlucose, fasting
Value110
Unitsmg/dL
Reference Range70 to 99
FlagH (high)
LOINC Code1558-6

How extraction works for lab results

Lab reports arrive as reference-lab PDFs, EHR exports, and faxed panels, so the analyte table looks different on every source. Talonic reads the report and maps it to the lab-result schema in the Field Registry, which captures each analyte with its value, unit, reference range, and abnormal flag rather than a flat block of numbers. Units are kept explicit, since a value without its unit is clinically meaningless, and the reference range is bound to its analyte as a low-high pair. Abnormal flags (H, L, or a critical indicator) are captured so a downstream system can trigger follow-up. A LOINC code is attached when the report carries one, which lets results from Quest Diagnostics and LabCorp be compared on the same axis. Every value returns with a confidence score and pixel-region provenance under DIN SPEC 91491 conformity, so a clinician can verify a result against the source report.

Sample extraction

A multi-panel lab report from a reference laboratory

{
  "patient_name": "Helen Park",
  "collection_date": "2026-04-18",
  "performing_lab": "Quest Diagnostics",
  "panels": [
    {
      "panel": "Comprehensive Metabolic Panel",
      "results": [
        {
          "analyte": "Glucose, fasting",
          "value": 110,
          "units": "mg/dL",
          "reference_low": 70,
          "reference_high": 99,
          "flag": "H",
          "loinc": "1558-6"
        },
        {
          "analyte": "Creatinine",
          "value": 0.9,
          "units": "mg/dL",
          "reference_low": 0.6,
          "reference_high": 1.3,
          "flag": null,
          "loinc": "2160-0"
        }
      ]
    }
  ]
}

Frequently asked

Does it keep units bound to each value?

Every analyte value is captured with its explicit unit, because the same analyte reports in different units across labs and a number without its unit cannot be interpreted or compared.

How are reference ranges and flags handled?

Reference ranges are captured as a low-high pair bound to the analyte, and the abnormal flag (H, L, or a critical marker) is returned alongside, so a record system can surface out-of-range results for follow-up.

Does it capture LOINC codes?

When a report carries a LOINC code for an analyte it is captured, which is what lets results from Quest Diagnostics, LabCorp, and a hospital lab be normalized and compared.

What fields are extracted from lab results?

Talonic returns lab results as schema-validated, typed fields. Common fields include Patient Name, Collection Date, Performing Lab, Analyte, and more, each normalized (dates to ISO 8601, amounts as numbers) and mapped to a stable key so the output shape stays the same across layouts.

How accurate is extraction from lab results, and how is confidence reported?

Every extracted cell carries a confidence score from 0.0 to 1.0 and a provenance pointer back to the source page and region, so low-confidence values can be reviewed against the original before the data is trusted downstream. There is no single accuracy number: confidence is reported per field so you can gate on it.

Can I use lab results extraction in production?

Yes. The same engine behind this guide is available as a production REST API and Node SDK with sync, async, and streaming modes, schema versioning, signed webhooks, and EU-resident processing. Start free with an API key, then scale on usage-based pricing.

What does it cost to extract data from lab results?

There is a free tier for prototyping and agent evaluation with no credit card. Paid usage is credit-based at 1,000 credits per euro: page ingestion is 100 credits per page and registry-resolved queries are free. See talonic.com/pricing for current rates.

Author note

Reviewed by Talonic engineering, schema review · last reviewed 2026-06-15