VaxLink: streamlining vaccine workflows with barcodes
Table of Contents
Delivering quality, attentive service in an immunization clinic requires seamless workflows, but documentation remains a persistent bottleneck. While every vaccine vial features a standardized barcode rich with product and expiry data, clinical systems often lack complete integration. Even with partial support like selecting a lot number from a predefined list, immunizers must still visually decode labels, manually transcribe complex alphanumeric strings, and verify expiration dates by hand, shifting their focus away from the client.
Manual transcription inevitably degrades data quality. A single transposed digit in a lot number necessitates downstream reconciliation, while an inaccurately recorded expiry date introduces genuine clinical risk. Across the thousands of weekly vaccination encounters happening Canada-wide, these small transcription tasks add up to lost time and more opportunities for error.
To mitigate these challenges, we built VaxLink, an lightweight browser extension that automates vaccine barcode capture directly into existing clinical workflows. VaxLink leverages the Public Health Agency of Canada’s National Vaccine Catalogue, for its comprehensive registry of vaccines and lot numbers, enabling VaxLink to verify and enrich scanned vaccine information with an authoritative open data source.
Point-of-care use #
VaxLink is used within Panorama or another supported web-based electronic medical record (EMR) system, on pages where vaccine information is entered. It runs in a compatible web browser with the VaxLink extension installed. For routine use, a high-resolution USB barcode scanner is recommended, although barcodes can also be entered manually for testing.
- Vaccine barcode is scanned or transcribed
- VaxLink decodes the scan result and extracts vaccine information (product, lot number, expiry date, serial number)
- Vaccine information is validated agaisnt the National Vaccine Catalog
- Vaccine expiry status is computed and displayed
- VaxLink fills target fields in supported web UIs as either a one-button click, or automatically if auto-mode is enabled

Privacy #
VaxLink performs all its operations locally. On first use, it downloads and caches the NVC database, then refreshes that cache automatically when needed. Outside of that update process, it can operate without internet access, and scan data is not transmitted to any external service.
Bulk and inventory workflows #
The barcode workflow also supports tasks beyond single-client charting. In inventory mode, staff can scan multiple vials in sequence and generate a manifest that records product, lot, and expiry details together. In practice, that can function as a packing list for a mobile clinic or as a record for preparing a vaccine order for a community provider office.
The scan list becomes a simple inventory record that teams can use to quickly confirm what was packed, transferred, or prepared.
Adoption considerations #
Because VaxLink interacts with existing web interfaces, it does not support every EMR out of the box. Each implementation needs to be tested against the specific views, fields, and workflows used in practice. Barcode scans are also not always clean, so unmatched or ambiguous results still require review before information is written to the chart. Staff remain responsible for confirming what will be recorded. Within those limits, the approach can be extended to other web-based charting environments where barcode data is present but not fully integrated into the record.
Final notes #
The core idea of VaxLink is simple: stop making people type vaccine data that’s already on a label. Let people do the work that actually needs human attention.
VaxLink improves existing workflows rather than replace them. In immunization settings, it reduces repetitive data entry, surfaces expiry concerns earlier, and supports related inventory tasks while keeping staff in control of what is written to the record. Currently VaxLink is in private beta, but if your team is working through similar documentation challenges, and you’d like to give it a try, please reach out.