Skip to main content

Lab analyses and results

A Lab Analysis (Lab Analysis) is a single analytical run that applies a Method to a sample. Each run produces one or more Lab Results (Lab Result), the individual measured values, one Analyte at a time. Together they are how a laboratory's reported numbers enter Erde: the analysis records how the measurement was made, and each result records what was found. This page explains the concepts; for the exact field-by-field catalog, see Lab data reference.

What a Lab Analysis anchors to

A Lab Analysis points back to the thing that was analyzed through two optional anchors:

  • SampleId — the field Sample that was collected.
  • LabReportSampleId — the lab's own report-sample handle (the code the lab assigned on its electronic data deliverable).

The rule is at least one of the two, not one or the other. Both may be set at the same time. This is deliberate so Erde can represent three real situations:

SituationSampleIdLabReportSampleId
Field sample, lab gave it a report-sample codeSetSet
Field sample, no separate lab codeSet
Lab QC run (no field sample exists)Set

A field analysis routinely carries both anchors — the lab's report-sample code is just the lab's handle on the same field sample, so both-set is normal, not an exception. A lab quality-control run (such as a method blank or laboratory control sample) has no field sample, so it carries only the report-sample handle, and its Sample is empty.

Erde enforces "at least one" at three layers: the validator rejects a save with the message Either sample or lab report sample is required., a database check constraint named ck_lab_analysis_sample_anchor backs it, and the sample, lab report, and report-sample links all use restrict-on-delete so you cannot orphan an analysis.

info

The quality-control classification (Method Blank, Laboratory Control Sample, Matrix Spike, and so on) lives on the lab report sample, not on the Lab Analysis itself. A Lab Analysis records the run and its method; the QC role is a property of the report sample it points to.

How a Lab Analysis describes the run

Beyond its anchors, a Lab Analysis records how the run was performed. The required AnalysisMethod identifies the procedure; optional PreparationMethod and LeachateMethod record preparation and leaching steps. Classification fields carry the run's chemistry: RunType (default Initial), Fraction (default Total), and MatrixType (default Aqueous). The run's DilutionFactor is required and must be positive. Optional dates record when leaching, preparation, and analysis happened, in that order. An optional Lab Analysis Code records the laboratory's own identifier for the run (its LIMS test/run id) — a reference handle for cross-checking with the lab, kept unique within the report but never used to match results to analyses.

An analysis can also be assigned at most one batch of each type — an optional Leachate Batch, Preparation Batch, and Analysis Batch from its lab report — tying the run to the QC processed alongside it. A rerun or re-extraction is a separate analysis row, distinguished by its run type, never a second batch of the same type. See Manage lab batches.

The dilution factor and leachate method are part of the analysis's identity, alongside the sample anchors, method, date, fraction, run type, and GC column: same-day serial dilutions (a 10x and a 100x re-run) and total-versus-TCLP runs of the same method are distinct analyses and coexist on one sample.

What a Lab Result carries

Each Lab Result belongs to one Lab Analysis and reports a single value. The headline fields are:

  • ResultValue — the numeric result and ResultText — a text result. These are mutually exclusive — a result never carries both. A result may also carry neither: a non-detect, a surrogate, or an EMPC-only result legitimately has no reported value or text. When a detected result carries an EmpcValue (EMPC, Estimated Maximum Possible Concentration) but no value or text, analysis substitutes that EMPC as its effective value, so an EMPC-only detection is screened and charted rather than dropped. (ResultValue is deliberately allowed to be negative, because raw radiochemistry can read below zero after blank correction.)
  • LabQualifier — the lab's qualifier flag (for example U, J).
  • Unit — the required measurement unit for the value.
  • SignificantFigures — the precision the lab reported, which travels with the result so analysis tools can present it correctly. It must be a whole number from 1 to 20.

A result also identifies its analyte two ways: Analyte (the system analyte, required for every result except a tentatively identified compound) and LabAnalyteName (the lab's literal name for the compound, captured at import). Its ResultType classifies the result as Target, Surrogate, InternalStandard, or TentativelyIdentified (TIC). Every result also carries a ReportableResult flag (Yes / No) marking whether the value belongs to the reportable data set, and a required Basis stating the reporting basis of the value. Basis lives on the result — not the analysis — because it qualifies the number, not the run: one physical analysis legitimately reports the same analyte wet-weight, dry-weight, and (for tissue) lipid-normalized, and those siblings coexist under the one analysis.

Figure: a Lab Analysis applies a method to a sample (and/or its lab report sample) and produces Lab Results, each measuring an analyte.

Detection limits and non-detects

A laboratory cannot measure below a certain concentration, so every result also records the limits that frame it:

  • MethodDetectionLimit (MDL) — the lowest concentration the method can reliably distinguish from zero.
  • MethodReportingLimit (MRL) — the lowest concentration the lab will report as a number. MRL must be greater than or equal to MDL.
  • OtherDetectionLimit (ODL) — an additional lab-reported limit (such as a practical quantitation limit), paired with a detection-limit type. ODL is captured and displayed as reference information only — it does not drive non-detect handling in V1.

All limits are non-negative; a recorded zero is tolerated as a legacy "no limit reported" sentinel.

A non-detect (Non-detect) is a result the lab did not detect at or above its reporting limit. Erde marks this with DetectedResult = No. The value cell of a non-detect is meaningful only together with its limits, which is why a non-detect with no MDL, MRL, or other limit raises a warning rather than a clean save. When screening or charting, Erde's analysis tools substitute the MDL or MRL for a non-detect; only those two limits drive substitution, never the ODL. A non-detect that has no MDL or MRL at all but carries an EMPC falls back to the EMPC as its limit, and a DMP can be configured to let a non-detect's EMPC supersede its MDL/MRL.

note

Significant figures are applied on reporting and analysis surfaces such as the Crosstab, Data Explorer, and the result detail panel. Management and validation grids show the raw reported value. In every case the SignificantFigures value travels with the result, so the precision the lab reported is never lost.

How it fits together

ConceptScopeHolds
Lab ReportA laboratory submissionGroups its analyses and batches
Lab AnalysisOne analytical runAnchors, method, run chemistry, dates
Lab ResultOne measured value in a runValue or text, qualifier, unit, limits, analyte

A Lab Result is reviewed separately through a validation workflow, where a data reviewer records a validated qualifier without changing the lab's reported facts. The result's disposition — whether it is rejected, estimated, tentatively identified, or biased — is derived from that qualifier through the Qualifiers reference data, not entered by hand. That review lives in its own record alongside each result; see Validate lab results.