Skip to content

VaxLink

Tests License: MIT

A Chrome extension that parses GS1 vaccine barcodes and auto-fills them into Ontario immunization EMRs (Panorama, InputHealth), plus a Next.js marketing site (apps/web-next). Built by Wellington-Dufferin-Guelph Public Health.

Client-side by design

Scanned barcode data is parsed locally in the browser and never sent to a server VaxLink controls. The only outbound call is fetching the public NVC vaccine metadata bundle. See the Security Policy for the full data-handling model.

What it does

  • Parses GS1 Application Identifiers (01, 10, 17, 21) from scanned barcode strings
  • Looks up vaccine metadata from the NVC FHIR bundle
  • Auto-fills CHR fields — trade name, manufacturer, route, dose, strength, DIN/drug code, lot, expiry
  • Flags expiry state (Expired, Expiring soon, Valid)
  • Supports single, multiple, and inventory scan workflows with CSV export

Get started

  • Architecture


    The three extension execution contexts, key storage schema, and the Panorama autofill sequence.

    Architecture

  • Adding a new EMR


    How the platform registry works and what a new adapter profile needs before it can ship.

    Adding a New EMR

  • Release process


    Alpha vs. prod channels, versioning, and how package-extension.sh stamps channel identity at build time.

    Release Process

  • Roadmap


    The planned platform-registry refactor and the backlog beyond it.

    Roadmap

  • Contributing


    Repository layout, local dev setup, and the rules around Panorama DOM fixtures.

    Contributing

Repository structure

apps/extension/         Chrome extension (Manifest V3), no build step
apps/extension-tests/   Extension test suite (kept out of the packaged zip)
apps/web-next/          Next.js marketing site, deployed to GitHub Pages
scripts/                Shell utilities (packaging, NVC bundle fetch)
skills/                 Claude Code skill definitions for extension workflows
docs/                   This documentation site

License

MIT