Voquill Lab · Platform

Build with the tools we build with.

Every integration we've shipped was built on the same API, interface engine, and reporting you get with Voquill Lab. Connect what you need, on your own schedule. We're here when you want help, and out of your way when you don't.

  • The same tools we use

    Our apps run on the same API you get. Our interfaces run on the engine you get. Our reports come from the same library.

  • No gatekeepers

    Build, test, and ship your own interfaces and reports. No tickets, no waiting in a queue.

  • Help when you want it

    Our engineers are available for advice and custom development, whenever you'd like a hand.

01Interface engine

The engine behind our integrations.

Every interface we've built for a lab runs on this engine, and you get the same access we do. Messages are decoded into labeled fields, mapped by a short script, and written straight into the case.

Inbound · ORM^O01 Received
MSH|^~\&|PracticeFusion|DRDERM|LAB|VQ|20260627112109||ORM^O01|CTRL123|P|2.5.1PID|1|PA1|||Doe^Jane||19850212|FIN1|1|Medicare|PID1|AetnaORC|NW|ORD555OBR|1|ORD555||6410^PAP TEST^99LABDG1|1|I10||Z01.419^Encounter
Channel script · Starlark Draft v4
order = {
  "external_id": input["ORC-2"],
  "patient": {
    "last_name": input["PID-5-1"],
    "first_name": input["PID-5-2"],
  },
  "clinic": input["MSH-4"],
  "tests": [],
}
for obr in segments("OBR"):
  order["tests"].append({
    "code": obr["4-1"],
    "name": obr["4-2"],
  })
emit_electronic_order(order)
Electronic order ACK AA
ORD555 New
Doe, Jane Matched
DRDERM Valid
Aetna · primary Matched
6410 · Pap test Mapped

Scripted, not hard-coded

Each channel maps messages with a short Starlark script. When a client does something unusual, the fix is a few lines you can write yourself, or we'll write them for you.

Test with real messages

Save sample messages from each client as tests, and run the whole suite against every change in seconds.

See what a message changed

For any inbound message, see the raw payload, the ACK sent back, and every order, encounter, and slide it touched.

Rather not write the script?

Paste a sample message and the built-in assistant does the rest, using the same engine tools our engineers use. It decodes the message, writes the mapping, and proves it with tests.

Prefer a person? Our engineers will happily build and look after your interfaces for you.

Assistant · Interface engine Working
Here's a sample order from Example Dermatology. Map it into a new inbound channel.
  1. inspect_message Decoded 7 segments, 41 fields
  2. get_electronic_order_spec Read the order fields it can fill
  3. set_script Wrote a 14-line mapping
  4. create_test Saved your sample as a test
  5. run_all_tests 3 of 3 tests passing
Done. “Example Dermatology orders” maps patient, insurance, and tests, and all 3 tests pass. Review the diff and publish when you're ready.
02Reporting

Any report, on demand.

Ask for the numbers you need, or start from the reports we've already built, with no IT ticket required. Want something custom? Our team will build it with you.

Know how your lab is really doing, whenever you want to: turnaround, quality, and volume, by client, by pathologist, or across the lab. Every run is saved, so when a client, your board, or an inspector asks, the answer is already on file. Popular reports include:

  • Turnaround within goal
  • QA discrepancies by client
  • Missing ICD-10 codes
  • Cases reopened after sign-out
  • Sign-outs by pathologist
  • Send-out tracking
Reports · New report Example data
Cytology turnaround for Q3: percent of cases signed out within 3 business days, by client.
SELECT c.client_name,
       count(*) AS cases,
       count(*) FILTER (WHERE reporting.business_days(
         c.accessioned_at::date, rv.signed_at::date) <= 3
       ) AS within_goal
FROM reporting.cases c
JOIN reporting.report_versions rv ON rv.case_id = c.id
WHERE c.primary_test_type_family = 'cytology'
  AND rv.signed_at IS NOT NULL
  AND c.accessioned_at BETWEEN '2026-07-01' AND '2026-09-30'
GROUP BY c.client_name
ORDER BY cases DESC;
Cytology turnaround by client · Jul 1 – Sep 30, 2026 · goal 3 business days
Client Cases Within goal % within Avg days
Example Dermatology 1,284 1,263 98.4% 1.4
Sample Women's Health 962 924 96.0% 1.8
Demo Family Practice 611 572 93.6% 2.1
Test Clinic OB/GYN 447 394 88.1% 2.6
All clients 3,304 3,153 95.4% 1.8
4 rows · 0.4s · run by Demo User · version 1 CSV Excel

Custom reports on demand

Ask a question in plain language, or write SQL against documented reporting views. Save it and run it again next month.

Every answer on record

Each run keeps the exact query version, parameters, results, who ran it, and when, so last quarter's numbers never shift.

Build once, run by anyone

Add date, client, or pathologist pickers to any report, so anyone on your team can rerun it without touching SQL.

03API

The API our apps are built on.

Voquill Lab's own apps run on the same documented API you get. If our app can do it, your integration can too, and our engineers are glad to help you build it.

lab tools
100+
event types
58
permissions
185
API coverage 8 areas of the lab
Accessioning & orders AccessionsRequisitionsElectronic orders +15 more
Cases & patients CasesPatientsCase history +10 more
Grossing & histology PartsBlocksSlides +15 more
Testing & send-outs TestsTest typesTest panels +9 more
Reporting & sign-out ReportsReport versionsReport designs +9 more
Interfaces & delivery Interface engineSubscriptionsReport distributions +4 more
Billing & insurance ChargesCharge templatesCPT codes +6 more
Directory & admin ClientsProvidersHospitals +10 more

OpenAPI from the source

The spec is generated from the server itself, so the reference your team signs in to can't drift from what's deployed.

Event subscriptions

Subscribe to any of 58 event types, like case.signed_out, and long-poll for deliveries with retries built in.

Your data, in your tools

Run any saved report through the API and pull the results as JSON, CSV, or Excel, ready for your own dashboards or data warehouse.

04Connected systems

Plugs into the lab you already have.

The systems we connect today, and the tools to connect the next one, yourself or with our help.

Every connection runs through a small device your IT team sets up on your own network. You own both ends, so changing an IP address or a firewall rule never means coordinating with us.

EHR

EHRs & practice systems

HL7 orders in, ORU results out.

IHC

Roche VENTANA

Stain orders and slide status over MLLP.

MDx

Analyzers

ASTM orders and results.

LBL

Barcode printers

Cassette, slide, and requisition labels.

REF

Reference labs

Send-out tests, shipments, and returned results, tracked with the case.

RCM

Eligibility checks

Real-time insurance eligibility.

OUT

Report delivery

EHR, fax, portal, and billing routes.

DIY

Your next system

Anything with an API, a file share, or an HL7 feed. Connect it yourself, or let us build it with you.

05Security & accountability

Secure and accountable, by design.

Interfaces, reporting, and the API are core parts of Voquill Lab, not add-ons. Each one shares the same permissions and the same audit trail as everything else, whether someone uses a page, the API, or an assistant.

Underneath, we handle the fundamentals: every change is scanned before it ships, the platform is independently pen-tested, and assistants never exceed their user's access.

Audit log · Today Example data
What happened across our integrations and reports today?
  1. 8:02 AM Channel “Example Dermatology orders” publishedDemo Analyst Assistant
  2. 9:14 AM Order received on that channelExample Dermatology EHR API
  3. 10:30 AM Report run: Cytology turnaroundDemo Lab Manager Page
  4. 11:05 AM Signed-out cases pulledbilling-sync key API
Demo Analyst published a new channel with the assistant, and its first order arrived an hour later. Demo Lab Manager ran a turnaround report, and the billing-sync key pulled signed-out cases.

Interfaces

Every channel version records who published it, every message shows exactly what it changed, and channel secrets rotate whenever you like.

Reporting

Reports follow the same roles as the rest of the LIS, never change data, and every run is logged with who ran it, when, and how.

API

Keys are tied to a role and shown only once. See when each was last used, and rotate or revoke it in a click.

Build it yourself, or build it with us.

Our engineers are here for advice and custom work whenever you want a hand. You'll never have to wait on us to move forward.

© 2026 Voquill, Inc.