The laboratory information system
Everything the lab does, in one system
A complete anatomic pathology laboratory information system: it runs the lab from the moment a specimen is received to the signed report and the paid claim. It was built for technical/professional splits and multi-lab networks in the data model itself rather than retrofitted onto a single-lab product, which is the difference that shows up on the day you add your second location.

Two labs, one case
Most laboratory systems assume the lab that grosses the specimen is the lab that signs the report. A great many labs do not work that way. A lean technical-component laboratory grosses and cuts, and a professional-component laboratory in an entirely different organization reads and signs.
That split is first-class here. The PC laboratory sees the case waiting for it before the block has shipped, because the case is pre-created across the organization boundary rather than re-keyed on arrival. The custody trail survives the handoff intact, and neither side inherits the other's patient master — each laboratory owns its own.
The same model carries a network of laboratories under one deployment. Each laboratory's data is isolated in the database itself, with row-level policy keyed on the tenant, rather than by application code remembering to filter. Every case, specimen, and slide is scoped to a physical location, and staff working across sites pick the location they are standing in.

Intake that does not wait
Paperwork and specimens do not arrive together, and a system that insists they do turns a normal Tuesday into a pile of exceptions. Both paths are supported independently: accession the specimen and attach the requisition later, or take the paperwork and wait for the container.
- One screen for the whole requisition — patient, insurance, referring provider, specimen parts, tests, and diagnosis codes in a single pass, rather than a wizard with six steps and a back button.
- Requisition scanning, with the scanned document attached to the case it belongs to.
- Pre-operative and post-operative diagnoses captured distinctly and tagged as such, because they are different assertions.
- Clinical indications carrying their own default diagnosis codes, so coding is not a guess made three days later by someone who was not there.
- Prerequisite rules that stop an invalid order at entry, with a documented override path for the times the rule is wrong.
- Reflex rules that place the follow-on order automatically when the first result warrants it.
- Add-on tests handled as ordinary orders against the existing case. No re-accessioning, no second case, no reconciliation later.
- Copy-to recipients per requisition, and a correction workflow for requisitions already in flight.
- Specimen rejection with coded reasons, so the pattern is visible when one client's containers keep arriving wrong.
Accessioning and the test catalog
Accession numbers generate from per-specialty templates with independent series, so dermatopathology and GI do not share a sequence unless you want them to. Identifier templates are administered in the application rather than configured by us.
The test catalog moves through a lifecycle rather than being edited live: a test is drafted, submitted for director approval, and only then becomes orderable. Every taxonomy behind it — specialties, disciplines, specimen types, diagnosis categories, coding systems — is managed in the same place.
Chain of custody at the item level
Every specimen, cassette, block, and slide is tracked individually, with its own status and its own history. Every scan, move, and handoff writes a custody event, so where a given block was on a given afternoon, and who had it, is a question with an answer rather than a conversation.
- Two levels of location: the operational laboratory location that governs access, and the granular physical position — cabinet, drawer, rack, slot.
- In transit is a real state rather than the absence of a scan.
- Barcode scanning throughout, with keyboard-wedge readers and phone cameras both supported, because the bench and the courier do not carry the same hardware.
- Rack and storage management, with printable rack maps.
- A specimen folder view that gathers everything derived from one specimen in one place.
- Quarantine as a controlled state with a deliberate release step.

Shipping that reconciles to the item
A shipment is built from cases, specimens, blocks, or slides in one flow, and the draft survives being left and returned to. Outbound and inbound are separate purpose-built screens, because packing and receiving are not the same job.
Receipt is confirmed item by item. Not “the box arrived” but “fourteen of these fifteen blocks arrived” — and when the manifest and the box disagree, the discrepancy is captured and worked rather than resolved by email. Courier routes, inter-laboratory transfers, cross-organization transfers for TC/PC work, and packing-slip attachments all sit in the same place, with the custody trail unbroken through every hop.
The patient index, and merges you can undo
Matching runs deterministically first and falls back to weighted fuzzy matching for the near-misses that deterministic rules miss. Every match decision is written as an auditable event rather than silently applied, so the question “why did these two become one patient” is answerable.
A merge is reversible
Merging two patient records requires step-up authentication and writes a full reassignment manifest of everything that moved. That manifest is what makes the merge reversible: an incorrect merge can be unmerged rather than lived with. There are no soft deletes anywhere in the system — records are superseded, never quietly removed.

Provisional patients cover specimens that arrive ahead of demographics, and patient search and import run directly inside intake rather than in a separate screen.
The grossing bench
Gross descriptions are captured as structured data alongside the free text, which is what makes them answerable later. Anatomical sites, organ systems and their qualifiers, procedure types and methods, container types, and fixatives are all taxonomies the laboratory configures rather than fixed lists it works around. Cassettes are generated and labelled from the bench, and gross photographs attach to the part they document.
The histology bench
The processing worklist carries stage-by-stage status, and the whole bench is also available as a board when a queue is easier to see than a list. Stains are ordered individually or in bulk.
Stain rules are the part worth pausing on. The stains a given specimen type, diagnosis, or protocol always needs are ordered automatically by rule rather than remembered, which removes an entire category of “we had to recut because nobody ordered the special”. Blocks, slides, recuts, and block blanks are all tracked, instrument protocols and QC clearances are recorded, and connected instruments report back over webhooks.
Cytology, signed by the person who read it
Cytology runs its own workflow. Where the laboratory permits it and the director has a standing order in place, a cytotechnologist signs out — and the record reflects that a cytotechnologist rather than a pathologist signed, because that distinction matters to an inspector. Cytology QC attestations and cytotechnologist competency attestations are tracked in the same system as the work they govern.
Sign-out, and the controls around it
Cases reach the right pathologist by rule rather than by tradition: routing rules, client routing overrides, and per-client pathologist preferences all feed assignment. Diagnosis entry has autocomplete, reusable templates, and a fast path for the straightforward cases that make up most of the day.
- Synoptic templates, and body-map driven reporting where a diagram is the clearest way to say where something was.
- Slide review with annotations that persist on the case rather than in someone's notes.
- A whole-slide image viewer for digital pathology.
- Cosign as a real assignment with its own sign-off, not a note in a comment field.
- Frozen section as its own workflow, with intraoperative turnaround.
- Critical values with defined thresholds, notification, and documented read-back.
- Case handoff between pathologists, recorded as a handoff.
- Step-up authentication at sign-out.
- Amendments, addenda, and corrections, with director review.
What the viewer does and does not do
The digital pathology viewer displays whole-slide images. It does not interpret them. There is no algorithmic screening, no AI diagnosis, and no automated image interpretation anywhere in this system, and none is planned as part of it. The reading is the pathologist's.
Reporting, shaped per client
Referring practices do not want the same report in the same way, and a laboratory that can only produce one format spends its days on exceptions. Report styles are configurable per laboratory and per client, and client reporting preferences drive both the format and the delivery method for each referring practice.
- On-screen preview that matches the released PDF, so what is approved is what goes out.
- PDF generation as its own service rather than a print dialog.
- Delivery integrations with retry and escalation when a delivery fails, because a failed fax that nobody hears about is a turnaround problem that surfaces as a complaint.
- Print-ready output for the laboratories and clients that still need paper.
- A referring-physician portal: their cases, their results, their shipments, and nothing else.
Send-outs you can actually chase
Send-outs are built rather than emailed, and inquiries are tracked, so which send-out is overdue and who was asked last is visible instead of remembered. Reference laboratories are modelled as real organizations, which means a reference laboratory that later becomes a customer needs no data migration. Send-out billing is treated as its own thing, because it is.
Billing is a rules engine
The billing side is not a bolt-on. Charges are captured against the case with procedure and diagnosis codes linked, and the logic that decides what is billable, at what price, to whom, is a rule set with a visual editor and rule groups — not a spreadsheet maintained by one person who is on holiday.

- Billing profiles per client and fee schedules with line-level detail.
- Payer management with aliases and automated resolution, because inbound payer names are never clean.
- Insurance eligibility checking against the patient's coverage.
- Clearinghouse configuration, claim submission tracking, and remittance advice ingestion posted at the line level.
- Adjustments with an approval queue rather than an honour system.
- Billing holds that stop the money without stopping the medicine — the case proceeds, the charge waits.
- A patient billing inquiry desk, and billing reports over the whole book.
The work between people
Most of what goes wrong in a laboratory is a question that never reached the person who could answer it. Tasks here are typed to the conversations that actually happen: sample flags, send-out requests, case assignment, coding questions, addendum requests, billing holds, specimen holds. They arrive in an inbox and sit on a board, and a hold blocks the one track it applies to rather than freezing the entire case. Screens that need to update as work moves receive updates pushed from the server, and there is operational chat for the rest.
Configured for the bench, not the desk
A shared bench terminal is not a personal laptop, and a system that pretends otherwise produces either a security problem or a queue. Workstations are registered and login is workstation-scoped; staff badge in at the terminal they are standing at. Printers are mapped to workstations, so “print” means the printer three feet away rather than the one in the office. Labels are designed in a template designer that emits ZPL for thermal printers.
Beyond that: organization, location, and physical-location administration; user administration with roles; per-user and per-tenant defaults so each role lands on the screen where it works; and tenant-level settings with a director-approval gate on the ones that are clinically significant.
Built for the director and the inspection
The compliance tooling exists because a laboratory director carries personal responsibility and usually carries it in a spreadsheet.
- A director dashboard, and coverage scheduling for when the director is away.
- Pathologist licensure tracked with expiration visibility, before the lapse rather than after.
- A compliance document library with required sign-offs and overdue review tracking.
- Compliance investigations with a full case file.
- Business associate agreement management with a review workflow and expiration alerts.
- Covered entity and scope modelling.
- Access reviews with recorded attestations.
- Inspection preparation: assembling what an inspector will ask for, before they ask for it.
What we do not claim
This system is designed for HIPAA compliance and built to support CAP and CLIA workflows. That is a statement about how it is built, not a certification. There is no such thing as HIPAA certification, and we make no claim of a completed SOC 2, HITRUST, CAP accreditation of the software, or FDA clearance. Compliance is the laboratory's, and this is tooling for carrying it.
Audit that covers reads
Every state-changing action writes an audit record in FHIR R4 AuditEvent form: who, what, when, where, why, and outcome. So do reads of protected health information, which is the part most systems skip and the part an access review actually needs.
That makes “show me everyone who touched this patient” a query rather than a support ticket. Forensic audit search is a screen in the product.

- Row-level security in the database on every table carrying protected health information.
- Identity backed by a single source of truth for accounts, rather than per-application user lists.
- Step-up authentication on the high-stakes actions: sign-out, amendment, business associate agreement approval, quarantine release, patient merge.
- Authorization decided by a dedicated policy decision point rather than by role checks scattered through application code.
- Protected health information kept out of error-monitoring logs by construction.
- Object lock on the artifacts that matter legally — signed reports, audit exports — and signed URLs for retrieval.
- Secret scanning, static analysis, and dependency scanning in the build.
- Synthetic data only in tests, build logs, and development environments.
Interoperability without a wiki page
- HL7 v2 inbound ingestion producing requisitions, orders, and patient match attempts.
- An audit model aligned to FHIR R4.
- Standards-based coding for procedures and diagnoses, with a generic framework for the coding systems that are neither.
- A generated, versioned API client from an OpenAPI specification, so an integration partner gets a contract rather than documentation.
- Instrument webhooks for connected analyzers and stainers.
- Asynchronous processing behind a message broker for report generation and notifications.
- Attachments on cases, parts, slides, shipments, and requisitions, stored the same way everywhere.
What you can see from the dashboard
An operational dashboard is the landing screen. Laboratory performance analytics cover turnaround time and throughput, alongside a daily case view, case search with real filters, and an activity log across the laboratory. The director, compliance, and billing dashboards sit beside it.
How it runs
A modern web application. No Citrix, no thick client to deploy to every bench, no Windows-only workstation requirement. It runs on managed infrastructure selected to support a HIPAA posture, with managed Postgres and object storage covered by a business associate agreement. Database migrations are reversible and tested in both directions on every change, and the test suite itself is checked by mutation testing.
There is a desktop client where bench hardware integration requires one.
The full capability index
Everything above and a good deal that did not fit, arranged for searching rather than reading.
Multi-tenant platform
- One deployment, one lab or a network
- Database-level tenant isolation
- Multi-location scoping and location picker
- TC/PC split across organizations
- Cross-tenant case pre-creation
- Per-lab patient master
Intake and requisitions
- Single-screen requisition intake
- Paperwork-only and specimen-only paths
- Requisition scanning and attachment
- Pre-op and post-op diagnosis capture
- Clinical indications with default codes
- Prerequisite rules with override path
- Reflex rules
- Add-on tests without re-accessioning
- Copy-to recipients
- Requisition corrections in flight
- Coded specimen rejection reasons
Accessioning
- Per-specialty accession prefixes
- Independent numbering series
- Identifier template administration
- Test catalog with approval lifecycle
Patient and MPI
- Deterministic then weighted matching
- Auditable match events
- Step-up authenticated merges
- Reversible merge with manifest
- Provisional patients
- Patient search and import in intake
- No soft deletes
Custody and tracking
- Specimen, cassette, block, slide tracking
- Custody event on every scan and move
- Operational and physical location
- Cabinet, drawer, rack, slot
- In-transit as a real state
- Barcode scanning, wedge and camera
- Rack management and printable maps
- Specimen folder view
- Quarantine with controlled release
Logistics
- Unified shipment builder with drafts
- Separate outbound and inbound queues
- Item-level receipt confirmation
- Discrepancy capture and resolution
- Courier route management
- Inter-lab and cross-org transfers
- Shipment attachments
Grossing
- Grossing worklist and workspace
- Structured gross plus free text
- Anatomical sites and qualifiers
- Organ system taxonomy
- Procedure types and methods
- Container types and fixatives
- Cassette generation and labelling
- Gross photo capture on the part
Histology
- Stage-by-stage processing worklist
- Individual and bulk stain ordering
- Stain rules and hooks
- Blocks, slides, recuts, block blanks
- Instrument protocols
- Instrument QC clearances
- Instrument webhook events
- Kanban board of the bench
- Worklist audit trail
Cytology
- Dedicated cytology workflow
- Cytotechnologist sign-out where permitted
- Cytology QC attestations
- Cytotech competency attestations
- Director standing orders for scope
Pathologist workflow
- Worklist and case assignment
- Routing rules and client overrides
- Client pathologist preferences
- Diagnosis autocomplete and templates
- Quick diagnosis path
- Synoptic templates
- Body-map reporting
- Slide review with annotations
- Whole-slide image viewer
- Cosign with its own sign-off
- Frozen section workflow
- Critical values and read-back
- Step-up authentication at sign-out
- Amendments with director review
- Case handoffs
Reporting
- Preview matching the released PDF
- PDF generation service
- Report styles per lab and per client
- Client reporting preferences
- Delivery retry and escalation
- Print-ready output
- Referring-physician portal
Send-outs
- Send-out builder
- Reference labs as real organizations
- Inquiry and follow-up tracking
- Distinct send-out billing
Billing
- Billing queue and case workspace
- Charge capture with code linkage
- Rule sets with visual editor
- Rule groups
- Billing profiles per client
- Fee schedules with line detail
- Payer aliases and resolution
- Eligibility checking
- Clearinghouse configuration
- Submission tracking
- Remittance ingestion, line-level
- Adjustments with approval queue
- Billing holds
- Patient inquiry desk
- Billing reports and telemetry
Clients and network
- Client relationships from contract
- Provider affiliations
- Network directory with drill-down
- Sales and stain-volume dashboards
- Pro-forma builder
- Onboarding wizard with invitations
- Party relationships and assets
Inventory
- Consumables across all supply types
- Usage rules tied to lab activity
- Stockout forecasting
- Procurement recommendations
- Receive, consume, adjust
Tasks
- Typed tasks across roles
- Inbox and board views
- Track-scoped holds
- Server-pushed updates on live screens
- Operational chat
Administration
- Organization and location admin
- User administration and roles
- Per-user and per-tenant defaults
- Workstation registration and login
- Badge check-in
- Printer administration and mapping
- Label designer with ZPL output
- Lookup and taxonomy management
- Tenant settings with director gate
- Desktop client for bench hardware
Compliance
- Director dashboard
- Director coverage scheduling
- Licensure expiration tracking
- Document library with sign-offs
- Overdue review tracking
- Compliance investigations
- BAA management and alerts
- Covered entity scope modelling
- Access reviews with attestations
- Inspection preparation
Security and audit
- FHIR R4 AuditEvent records
- Read auditing on PHI
- Forensic audit search
- Row-level security on PHI tables
- Single source of truth for identity
- Step-up auth on high-stakes actions
- Policy decision point authorization
- PHI kept out of error logs
- Object lock on legal artifacts
- Secret, static, dependency scanning
- Synthetic test data only
Interoperability
- HL7 v2 inbound ingestion
- FHIR R4-aligned audit model
- Procedure and diagnosis coding
- Generic coding-system framework
- Versioned OpenAPI client
- Instrument webhooks
- Message-broker async processing
- Attachments across entity types
Analytics
- Operational dashboard
- Turnaround and throughput analytics
- Daily case view
- Case search with filters
- Lab-wide activity log
What this deliberately is not
Naming the edges is faster than discovering them on a demo call.
- Not a patient portal
- Patients get their results from their clinician. This system serves the laboratory and the referring practice.
- Not an EMR
- It serves laboratories, not clinicians' offices. It integrates with the record rather than trying to be it.
- Not a CRM
- Client relationships are modelled from contract-signed forward. The pipeline before that belongs somewhere else.
- Not an image interpreter
- The digital pathology viewer displays slides. No algorithmic screening, no automated interpretation, no AI diagnosis.
There is also no offline courier mobile application today. Courier routes and item-level receipt are built; an offline-capable mobile client for drivers is not, and this page will say so until it is.
The evaluation conversation
A laboratory evaluation is mostly a conversation about what your current system will and will not export, which of your clients need their own report format, and where your custody trail currently goes quiet. That is usually enough to say whether this is a fit.
Which stakeholder is currently asking you for data you cannot easily give them?
That is the useful first conversation, and it is a short one. Bring the laboratories, the practices, and the thing that breaks today.
service@meta.clinic Read the release model first