Laboratory & Blood Bank¶
A full laboratory information system (LIS): order tests, track specimens, enter and verify results, run quality control, monitor turnaround time, and manage the blood bank.
Screenshot: Lab dashboard — TODO
Medical → Laboratory (/medical/lab) shows the active worklist, pending verification, today's
critical results, TAT breaches today, blood-bank alerts, and QC exceptions.
Test orders & results¶
- Lab Orders (
/medical/lab/orders) — create requisitions (patient, ordering provider, tests, priority Routine/Urgent/STAT). Status flows Requested → Specimen Collected → In Process → Resulted → Verified (or Cancelled). - Result entry (
/medical/lab/orders/{id}/results) — enter values per test line; the system auto‑flags critical high/low against reference ranges. Verify releases the report. - Report (
/medical/lab/orders/{id}/report) — the formatted lab report.
Who may enter, release and correct a result¶
Entering a result, releasing it and correcting a released one are three separate permissions, so a lab can give a technician the bench without giving them release authority:
| Permission | Allows |
|---|---|
MED_LIS:LAB_ORDERS:RESULT_ENTER |
Open the bench view and record values |
MED_LIS:LAB_ORDERS:RESULT_VERIFY |
Release (verify) the report |
MED_LIS:LAB_ORDERS:RESULT_AMEND |
Correct a result that has already been released |
Four eyes: you cannot release your own result
Whoever entered a value may not be the person who releases it — for every test, not just critical ones. If you try, the release is refused and the bench view tells you a second qualified user is needed. This holds even if you hold both permissions. Results that arrived automatically from an analyzer are exempt (there is no person to be independent of), so a technician can verify machine results normally.
If your lab uses custom roles, an administrator must grant the three permissions above after this release — only the built-in roles pick them up automatically.
Correcting a released result (amendment)¶
A verified result is never edited in place. Use Amend on the result line:
- The form shows the currently released value and who released it.
- Enter the corrected value and a reason (required, at least 10 characters). It is recorded permanently and shown to clinicians.
- The correction is not live yet — the analyte moves to Amended — awaiting re-verification and must be released by a different user, exactly like a first result.
Once re-released, every view of that result — the bench, the lab report, the patient chart and the patient's own online report — shows it marked Amended, with the original value beside it and the amendment history (who, when, why). If the corrected value crosses a critical threshold, the panic alert fires again; if a critical result is corrected down to normal, a withdrawal alert is raised so anyone who acted on the original is told. The patient is texted again, and the message says the report was updated, not that it is ready.
Critical results are visible on the worklist
An order holding a panic value now carries a red Critical badge on the orders list, and one holding any other out-of-range value carries an amber Abnormal badge — you no longer have to open each order to find out. Qualitative results are flagged too: a Positive / Reactive / Detected reading on a test with no numeric range (serology, microbiology) is marked Abnormal rather than left blank. A free-text narrative (e.g. a culture description) is never auto-called — the technologist's remarks stand on their own.
Getting back to the patient without re-searching
The patient name is a link to the chart on the orders list and on the result-entry screen, and both carry Patient chart and Encounter buttons. From a patient's chart, the Diagnostics card links straight to the report for any resulted/verified order. From an OPD/IPD encounter, a Diagnostics panel offers Order labs / Order imaging and lists that encounter's existing orders — so ordering and reading results never needs a trip back to the menu.
Screenshot: Lab result entry — TODO
Priority-first worklist & auto-billing
The lab and radiology worklists sort STAT above Urgent above Routine (then by order time), so urgent tests surface at the top without filtering. Placing a lab/imaging order auto-raises the patient charge for the test/procedure fee (once per test — no double-billing on edits), and the nightly billing batch bundles the day's unbilled charges into a draft invoice per patient.
Turnaround time (TAT) & SLA¶
Each order is timed from specimen collection to final report (Verified) and measured against its priority's SLA target — STAT 60 min, Urgent 4 h, Routine 24 h. The lab worklist shows a TAT badge (green within target, red on breach), and a breached STAT order raises an alert so the delay is investigated. The lab home board carries a TAT breaches today KPI.
"View your report online" (public QR)¶
A verified report can be retrieved by the patient with no login — the model used by walk‑in patients. When a report is verified it gets an unguessable access code, printed as a QR on the patient's invoice/receipt (and shown on the staff order screen). The patient scans it, enters their date of birth as a second factor, and sees only that report. Access is rate‑limited (locks after repeated wrong dates), expires after 90 days, and every view is logged.
Catalogue, analyzers & QC¶
- Tests (
/medical/lab/tests) — define tests: code, LOINC, section, specimen type, unit, reference & critical ranges, price, turnaround time. - Analyzers (
/medical/lab/analyzers) — register instruments and their integration mode (Manual / LIS Interface / Bidirectional; HL7/ASTM). - Quality Control (
/medical/lab/qc) — record QC runs by control level; the system computes a z‑score and flags In Control / Warning (1‑2s) / Out of Control (1‑3s) per Westgard rules.
Consumables (reagents, kits, films, USG paper)¶
Medical → Lab → Consumables (/medical/lab/consumables) tracks diagnostic consumables — reagents,
kits, chemicals, X‑ray film, USG paper — for both Lab and Radiology, separately from pharmacy drug
stock. Define the consumable (category, department, unit, reorder level), then receive lots (lot
number, quantity, expiry) and consume against them.
- Stock view (
/medical/lab/consumables/stock) shows on‑hand vs reorder level flagged OK / LOW / OUT, plus near‑expiry lots; downloadable as CSV. - A daily sweep raises Low stock, Out of stock and Near‑expiry alerts into Clinical Alerts (idempotent per consumable/lot), so reagents and film are reordered before they run out.
Specimen labels¶
Specimen Labels (/medical/lab/specimen-labels) — print QR/barcode labels carrying the accession
number for collection → receipt → result traceability.
Blood bank¶
Blood Units (/medical/lab/blood-units) — register donor units (number, group, component, expiry,
volume) and move them through custody: Pass/Fail screening, Reserve (cross‑match to a patient),
Issue (transfuse), or Discard.
Verify before release
Results aren't visible on the report until Verified, and verified results lock from editing — the second check is a different person (see Four eyes), and a released value can only be changed through the auditable amendment path. The public QR link only ever exposes a verified report.