# Laboratory module — what to set up, and in what order

**For:** the pathologist and the laboratory manager.
**State as at:** 5 August 2026.

The software is finished. What is left is deciding things only your laboratory
can decide. This is the order to do them in, and roughly how long each takes.

Nothing in this document needs a developer.

---

## Where things stand

The old PathCare catalogue has been loaded into Clinic:

| | |
|---|---|
| Tests | 1,197 (905 from the old system, plus 292 sub-tests inside panels) |
| Reference ranges | 1,118 |
| Answer lists | 324 across 66 tests |
| Organisms | 173 |
| Antibiotics | 110 |

**Every one of them is switched off.** Nobody can order any of them. That is
deliberate: a test is switched on only after somebody qualified has looked at
it.

---

## Step 1 — The pathologist approves the first batch

**Who:** the pathologist. **Time:** two or three sittings for the first batch.

**492 tests are ready right now.** They have everything the system needs and are
waiting on one thing: a qualified person saying they are fit to use.

Do **not** work through all 492. Pick the **30 tests the laboratory runs most** —
blood count, sugar, liver, kidney, thyroid, urine — and approve only those. That
is enough to go live. The rest follow in batches, at whatever pace suits.

Use the review file (`lab-review-tier1.csv`). Fill in the last columns:

| Column | What to put |
|---|---|
| Critical low / high | The level that means *telephone the doctor now*. Leave blank if the test has none — many do not. |
| Approved? | `Yes` |
| Reviewer | Your name |
| Date | Today |

Send the file back and the tests are switched on with one command.

### One thing to know about the danger levels

**The old system's critical limits were not real.** They were filler numbers —
0 to 99,999,999 and similar. If they had been copied across, the new system
would have looked like it was watching for life-threatening results and would
never once have raised an alarm.

They were deliberately **not** imported. Every critical limit starts empty and
has to be entered here. That is more work, and it is the right kind of work.

---

## Step 2 — Fill the gaps the old data has

**Who:** the pathologist. **Time:** ongoing, in batches.

The remaining tests are blocked on missing clinical information. The system
will not let them be switched on until it is supplied:

| What is missing | Tests affected |
|---|---|
| No unit | 639 |
| No reference range | 420 |

A number with no unit cannot be read safely — 5 of what? A result with no range
cannot be called normal or abnormal. Neither can be guessed, and the system will
not let anyone pretend otherwise.

Open the test in **Laboratory → Catalogue**. A yellow box at the top of each
test's page says exactly what is missing.

---

## Step 3 — Say what your answers mean

**Who:** the pathologist. **Time:** an hour or two.

66 tests answer from a fixed list — screening tests mostly, with answers like:

> Positive · Negative · Repeat With Fresh Sample

**All 324 answers are currently marked "not decided yet."** Nothing was assumed,
because the same word means different things on different tests: *positive* on a
hepatitis screen is bad news, *positive* on a control sample is exactly what
should happen.

On each test's page, mark each answer **Normal**, **Abnormal**, or leave it
undecided. "Repeat with fresh sample" should usually stay undecided — it is an
instruction, not a finding, and flagging it either way would say something the
laboratory has not said.

Until an answer is marked, a result carrying it prints with no flag. That is
safe, just less useful.

---

## Step 4 — Set up the specialised tests

**Who:** the laboratory manager, with the pathologist for anything clinical.

Each of these is on the test's own page in the catalogue.

### Cultures (Microbiology — your largest department)

Check **Laboratory → Catalogue → Organisms and antibiotics**. All 173 organisms
and 110 antibiotics came across and are in use.

- Retire anything you no longer stock — it leaves the pickers but stays on record.
- Add anything new. **An antibiotic missing from this list cannot be tested**,
  because the sensitivity grid is built from it.

### Assays read against a cut-off (PCR, ELISA)

Set three things: the **cut-off**, the **wording** for each side, and **which
side is abnormal**.

The last one is separate on purpose. On an HIV screen, above the cut-off is
"Reactive" and is bad news. On rubella IgG, above the cut-off is "Immune" and is
the reassuring answer — there the *low* side is the one worth flagging. One
setting for both would get one of them backwards.

Leave the abnormal side undecided and no result is flagged. Safe; just less
useful.

### Titre panels (Widal, Brucella)

Set the **dilution series** — `1:20,1:40,1:80,1:160,1:320,1:640` — and list the
**antigens**.

A technician may then only record an endpoint from that series, so a misread
column cannot become a dilution nobody tested.

No significance threshold is stored anywhere. Which titre matters depends on the
antigen, the local background rate and vaccination history — that is your
judgement, not the software's.

---

## Step 5 — Go live with what is approved

Run one order end to end before opening the doors: order it, collect the sample,
enter the result, approve it, print the report. Compare that report against the
old system's for the same test.

Then go live. **Only approved tests can be ordered.** The other 1,100-odd stay
locked until they are approved in turn — so a partly-finished catalogue is not a
risk, it is just a shorter menu.

Keep the old system running as a fallback for the first week.

---

## The rules the software will not let anyone break

Worth knowing, because they will look like obstacles at some point:

1. **An unapproved test cannot be ordered.** No exceptions, no override.
2. **A numeric test with no unit or no range cannot be switched on.**
3. **A signed-off result cannot be edited** — it is amended, and the original
   stays readable.
4. **Nothing guesses a clinical meaning.** An unset value produces no flag
   rather than a plausible one.
5. **Reports do not change under the patient.** Every report keeps the names,
   ranges and thresholds it printed. Renaming a test or moving a cut-off next
   year does not rewrite a report issued today.

---

## If something looks wrong

The whole import can be undone in one command, and every imported row is
traceable back to the exact row it came from in the old system. Nothing was
merged, corrected or thrown away — including the 763 rows the old system held
that this one had no place for yet.

Ask your technical lead for `docs/lab/PHASE-1-LEGACY-AUDIT.md`, which records
what was found in the old software and what was deliberately not carried across.
