Skip to main content

Screening

Screening compares a Lab Result against a threshold and reports whether it exceeds. The thresholds live in a three-level hierarchy: a Screening Program holds one or more Screening Criteria Sets, and each Criteria Set holds Screening Levels — the per-analyte limit values a result is measured against. One server-side evaluator runs the comparison, so every analysis tool reports the same verdict.

The screening hierarchy

A Screening Program is the top-level container — typically one regulatory framework or risk basis (for example, a state groundwater standard). It carries a Code (required, unique), a Name (required), and an optional Description.

A Screening Criteria Set is a named, versioned collection of limits within a program — usually one specific table or revision. Its Name is required and unique within its program. Each set carries a Status (Draft, Active, Superseded, or Archived; default Draft), an optional EffectiveDate and Source, an optional Description, and a Color used in displays. A set has no Code of its own — the Program is the only Code-keyed level.

A Screening Level is one threshold row inside a Criteria Set, identified by its analyte, Matrix, and Fraction. Each level can set an Upper Limit, a Lower Limit, or both — the two values share one unit, and each bound has its own qualifier. At least one bound is required, each provided bound must be non-negative, and when both are set the lower limit must be below the upper.

Figure: A Screening Program holds Criteria Sets; each Criteria Set holds per-analyte Screening Levels.

A level's identity within its set is the combination of Analyte, Matrix, and Fraction, so the same analyte can legitimately repeat for a different matrix or fraction. The Fraction defaults to Any (all fractions); a level set to a specific fraction (such as Dissolved or Total) applies only to results of that fraction.

When a regulatory table is revised

When an agency publishes a revision to a table you screen against, enter the revision as a new Criteria Set in the same Screening Program, with its own Effective Date and Source. Then mark the old set Superseded and pick the new set in its Superseded By field, so the lineage between vintages is recorded. Projects that reference the superseded set keep screening against that vintage deliberately — reports already delivered under the old table stay reproducible — while new work references the new set.

Don't edit levels in a set that projects reference

Changing level values inside a referenced Criteria Set changes the screening verdict of every result already evaluated against it — historical exceedances can appear or disappear. Erde warns when you save ("This criteria set is currently referenced by one or more projects; changes will affect their screening results.") but does not block, because marking an in-use set Superseded is itself an edit to it. Treating a regulatory revision as a new set is the curator's rule.

How a result is evaluated

When a tool screens a result, it resolves a single comparison value, then asks the evaluator to compare it to the matching Screening Levels:

  • A detected result compares its measured value; a detected result that reports only an EMPC (no value or text) compares the EMPC instead of being skipped.
  • A non-detect compares its recorded result value when it has one, otherwise the plan's chosen detection or reporting limit — falling back to a reported EMPC when no limit exists, or using the EMPC as the limit when the DMP is configured to — when non-detect screening is on, and is not screened when it is off.

Screening resolves one of five statuses:

StatusMeaningDisplay
ExceedsCompared against at least one applicable level and exceeded a bound"Exceeds"
Within LimitsCompared against at least one applicable level, exceeded none"Within Limits"
UnscreenableA dimensionally compatible criterion exists, but this result could not be compared — no matching matrix or fraction, or a non-detect with no recorded value or limit"Unscreenable"
Not ApplicableScreening ran, but the analyte has no comparable criterion at all"Not Applicable"
Not ScreenedScreening was not performed — no set selected, an ineligible sample type, or a non-detect while non-detect screening is offblank

Exceedance is decided per bound. By default an upper limit is exceeded when the result is strictly greater than the limit (the boundary value passes), and a lower limit is exceeded when the result is strictly less than it. Each bound's qualifier can switch to "or equal", making the boundary value itself an exceedance. A result exceeds the level if either bound is exceeded.

Unscreenable is the flagged case worth attention: a criterion for the analyte exists in a compatible unit, but this specific result could not be matched — most often a matrix or fraction mismatch, or a non-detect with no recorded value or limit to screen against. It is never treated as a silent pass. Not Applicable means no criterion applies at all, so the result is expected to read blank and is not counted as a problem.

Fraction matching is exact

Total and Total Recoverable are distinct fractions and do not cross-match. A criterion meant to apply to both should be authored with Fraction set to Any (all fractions), or entered for each fraction. A mismatch surfaces as Unscreenable, not a silent pass.

The Criteria Set Color

Each Criteria Set carries a Color drawn from a fixed palette of 20 named values (default Crimson). The Color is what displays use to attribute an exceedance to the set that produced it — the marker, cell highlight, or legend swatch that tells you which set a result failed.

The color identity is stable: only the name is stored, and the actual hex values are applied when the result is drawn, so the on-screen hues can be retuned without changing saved data. When you save a set using a color already in use by another Draft or Active set, Erde shows a non-blocking warning so you can keep set colors distinct, but the save still succeeds. Superseded and Archived sets are excluded from the check.

Where screening appears

The same evaluator feeds every analytical surface, so a result's verdict is identical wherever you open it. The surface differs only in the unit it screens:

SurfaceScreensShows
Data ExplorerPer result rowA screening status column, with a count of unscreenable results
CrosstabPer cellCell highlight in the Criteria Set Color of the driving exceedance
MapPer location (rolled up)A marker colored by the location's combined status

The Map rolls the per-result statuses for a location into a single marker status: an exceedance always wins; a location with a compatible-but-uncompared result and no exceedance reads as partially screened; a location whose only screenable results are non-detects (with non-detect screening off) still reads clean.

You select which Criteria Sets to screen against in each tool's filter panel. Multiple sets can apply at once, and each contributes its own result and color.

Where a surface shows a qualifier beside a screened result, it is the result's validated qualifier only — an unvalidated result contributes none. A non-detect's status is conveyed by its < limit or ND notation, independent of any qualifier. The raw lab qualifier is kept only in the Data Explorer's audit columns.

How it fits together

Screening sits alongside the Data Management Plan (DMP) in the analysis flow. The DMP, assigned to a Project, prepares the results — unit conversion, summation, duplicate aggregation, and non-detect handling — before the screening evaluator compares them to the selected Criteria Sets.

Screening Criteria SetData Management Plan
RoleSupplies the limits a result is compared againstPrepares results before comparison
IdentityName, unique within its Screening ProgramAssigned to a Project
SelectedIn each tool's filter panelAutomatically, from the Project's DMP

Screening Programs, Criteria Sets, and Screening Levels are managed under Data Management; creating or editing them requires Data Steward access (the Administrator or Data Manager role), while reading them needs only sign-in.