Skip to main content
Chemical Records is the core operational module in AquaOps.

Purpose

Use this module to record pool chemistry test readings and let the system evaluate those readings against each pool’s configured profile.

Best for

  • daily chemistry testing
  • supervisor review of out-of-range readings
  • audit-friendly water quality recordkeeping

List page

Go to:
The list page supports filtering by:
  • location
  • pool
  • start date
  • end date

Desktop view

Desktop shows a table with:
  • time
  • location/pool
  • submitted by
  • free chlorine
  • total chlorine
  • combined chlorine
  • pH
  • alkalinity
  • calcium hardness
  • pool temperature
  • LSI
  • overall status

Mobile view

Mobile shows tap-friendly cards with the most important summary values.

Creating a chemical record

Go to:

Fields captured

  • pool
  • date and time
  • free chlorine
  • total chlorine
  • pH
  • pool temperature
  • air temperature
  • heater set temperature
  • heater actual temperature
  • thermometer actual temperature
  • alkalinity
  • calcium hardness
  • cyanuric acid
  • TDS
  • water clarity
  • backwash yes/no
  • notes
A pool may also have additional custom fields configured for it — see Custom fields below.

Combined chlorine

Combined chlorine is calculated automatically from:
If the result is negative, the form warns you that free chlorine exceeds total chlorine and the readings should be checked.

Custom fields

Beyond the standard readings, a pool can have its own custom fields for anything specific to that facility — a chemical not covered by the built-in list, a piece of equipment status, or any other note you want captured on every test.

Defining a custom field

Custom fields are defined per pool, not globally. Anyone with chemical_records:edit can go to:
and add one or more custom fields in the Custom fields section of that pool’s profile. For each field, set:
  • a label
  • a type — Number, Text, or Yes/No
  • whether it’s required
Custom field values are stored separately from the standard readings and don’t affect chemistry status or LSI.

On the record form

Any custom fields defined for the selected pool appear in an Additional Fields section near the bottom of the chemical record form. A required custom field must be filled in to save the record, just like a required standard field.

On the detail page

Saved custom field values show in their own Additional Fields section on the record’s detail page, alongside the standard per-field readings.

Corrections

Custom field values aren’t a special case for corrections — editing one is part of editing the record as a whole, so it goes through the same correction flow as every other field: a reason is required, and the change applies immediately if you hold chemical_records:correct or is held pending review otherwise.

Typical walkthrough

1

Open Chemical Records

Filter to the correct location or pool if you are reviewing prior entries.
2

Add chemical record

Select Add chemical record.
3

Enter the readings

Enter the real test date and time and complete the measured values.
4

Save and review

Save the record and review the status badges and detail page.
5

Note follow-up

If the record is out of range, use comments to note follow-up or corrective action.

What happens on save

When you save a record, AquaOps:
  • stores the chemistry record
  • computes overall chemistry status
  • computes field-level status details
  • computes LSI
  • stores audit-relevant history data

Detail page

Open any record to see:
  • pool and location
  • submission time
  • submitting user
  • overall status badge
  • detailed per-field readings
  • ideal range reference text
  • auxiliary readings like air temperature and clarity
  • LSI and LSI recommendation
  • notes
  • comments
  • edit history link
  • an Additional Fields section, if the pool has custom fields configured

Comments and history

Each record has:
  • a comments section for discussion or corrective notes
  • an edit history view for audit visibility
This is especially important for out-of-range readings and closure-threshold events.

Correcting a saved record

Once a chemical record is saved, editing it is treated as a correction, not a silent overwrite. Select Edit, make your changes, and enter a reason — it’s required. What happens next depends on your permissions:
  • If you hold chemical_records:correct, the correction applies immediately. It’s still logged as a correction (self-reviewed), so the audit trail is complete.
  • Otherwise, the correction is held as pending. The record keeps its original values until someone with chemical_records:correct reviews it — either approving it (applying the change) or rejecting it (with required notes explaining why).
Any record with an approved correction shows a Corrected badge next to its status. Scroll to the Corrections section on the detail page to see every correction’s reason, a before/after comparison of the fields that changed, who requested it, and who reviewed it.

Closure-required records

If a record hits a closure threshold, the detail page shows a prominent warning. Examples include:
  • water clarity issues
  • chemistry values beyond configured closure bounds
The current implementation warns the operator and links into the compliance workflow. Teams can open or review a closure incident from the affected record, then track notes, evidence, and corrective actions there.

Best practices

  • make sure the correct pool is selected before saving
  • enter the actual test time, not just the current time
  • leave non-measured fields blank rather than guessing
  • use comments for corrective actions or follow-up notes
  • review pool chemical profiles periodically so statuses remain meaningful

Suggested screenshots

  • desktop chemical records list
  • mobile chemical record cards
  • new chemical record form
  • record detail page with field-level statuses
  • closure-required warning state