BridgeLab
v2.0.0 · Open Core · MIT

HL7/FHIR made simple.

A modern message editor for healthcare integration. Handles 10 MB messages with base64 payloads, speaks MLLP and HTTP in both directions, validates against the HL7 standard and runs on every desktop you use.

  • < 2sopen a 10 MB message
  • < 300 MBparser RAM on a 10 MB message
  • 5UI languages (EN/IT/FR/ES/DE)

Built for the work integration teams actually do

Large-message ready

SIMD-accelerated streaming parser. Open multi-megabyte ORU^R01 messages with base64 attachments in under two seconds. Long fields are folded into a chip in the editor while the text stays whole: you never scroll through 10 MB of base64, and nothing is cut.

Client & listener, bidirectional

Send via MLLP / HTTP / HTTPS, listen on any port with auto-ACK and a live inbox. Filter the inbox and the send history by ACK outcome — AA, AE, AR, no ACK, failed — with a live count on each, so twelve rejections out of 300 stand out at a glance. Connection profiles are saved per-protocol. Everything works offline against your own test servers.

Validation & FHIRPath

Structural, field-level and data-type validation out of the box, plus FHIR conformance against the StructureDefinitions of the built-in R4 core and any FHIR package you install on top — cardinality, element types, choice elements, unknown elements, Bundle references. A FHIRPath 2.0 evaluator that passes 91% of the official HL7 test suite. Your own rules drop in as declarative JSON plugin packs — no recompile, no code execution.

PHI anonymization

89 built-in PHI fields across PID/PV1/MRG/NK1/GT1/IN1/IN2, NTE comments and free-text OBX results, with sensitivity-aware masking. Extend the catalogue with regional PHI via plugin packs. Structure is preserved so anonymized messages remain valid.

Field Inspector

Select any field in the editor or the tree and open the inspector (ⓘ or View → Field Inspector) to see the HL7 schema-derived name, type, cardinality, length limits and current value. Coded values are explained inline from the 394 HL7 value tables that ship with the app (M — Male), in the tree, on hover and in auto-completion. Schema-aware tree optionally shows every possible field, not just the populated ones.

i18n + cross-platform

UI in English, Italian, French, Spanish and German. Native installers for Windows (NSIS + MSI), macOS (DMG) and Linux (.deb, .rpm, AppImage) — with .hl7 file association (not for the AppImage, which cannot register one) and a language selector.

XSD schema export

Generate a standards-compliant XSD for any HL7 v2 message type in one click. Drop it into Astraia, BizTalk, XMLSpy or any XML-based pipeline that expects a hand-authored schema. Four common messages in v2.5 are free; the full catalogue and other versions come with Pro.

Why a new HL7 editor in 2026?

Integration engineers choose between free tools maintained on and off, per-seat subscriptions, and enterprise products sold on quotation. BridgeLab targets the middle: a free core you can use for real work, and a Pro seat at a published price.

Tool FHIR Platforms XSD export List price Latest release
BridgeLab Yes — edit, validate, FHIRPath Windows, macOS, Linux Yes Free core · Pro €249 / seat / year 2.0.0 — Sep 2026
HL7 Soup Yes Windows (web edition: macOS, Linux) Not advertised From $40 / user / month 4.0 — May 2026
7Edit Not advertised Windows No (XML export) $99 Viewer · $249 Professional, per seat 2.7.2
HL7Spy Viewer Windows Not advertised Quote on request v26.2
HL7 Inspector No Java (Windows, macOS, Linux) No Free (GPL) 2.7.4 (source tag) — Dec 2021
HAPI TestPanel No Java (Windows, macOS, Linux) No Free (MPL / GPL) HAPI 2.6.0 — Feb 2025

Figures taken from the vendors’ public websites on 30 September 2026 (HL7 Soup, 7Edit, HL7Spy, HL7 Inspector and its source repository, HAPI); prices are list prices as published there, excluding VAT. “Not advertised” means the vendor’s site does not mention the feature. Product names are trademarks of their respective owners and are used only to identify the products. Tell us at info@techemv.it if something is out of date.

Plugin packs

Your rules — dropped in as JSON.

Every hospital has custom ADT quirks, Z-segments, regional PHI fields. BridgeLab reads declarative JSON packs from a user folder and merges them into the validator and the anonymizer. No code execution, no sandbox surprises.

  • Six check types: not_empty, regex, one_of, max_length, min_length, contains
  • Component-level narrowing via the component field
  • FHIR rule packs too: a FHIRPath invariant, or a selector plus a check
  • Extra PHI fields with sensitivity-aware masking
  • Reload from Settings → Plugins, no restart needed
  • Per-pack enable/disable, persisted across sessions

The whole mechanism is in every tier. Community keeps up to 3 packs active at once; Pro and Enterprise have no cap. Packs beyond the cap are never deleted — they wait for a free slot.

Read the plugin docs →
"rule_id": "ACME-PID-001",
"severity": "error",
"segment": "PID",
"field": 3,
"check": { "type": "not_empty" },
"message": "PID-3 must be populated"

Download

Pick your platform. Installers show the license (MIT, and the BUSL 1.1 of the pro/ directories) and, on Windows, a language selector. Starts with a 14-day Pro trial; the free tier stays usable for real work forever.

macOS note: current builds are not yet notarized with Apple, so Gatekeeper may report the app as damaged on first launch. Fix: open Terminal and run xattr -cr /Applications/BridgeLab.app, or allow it via System Settings → Privacy & Security → “Open Anyway”. Notarized builds are coming soon.

Prefer the terminal? brew tap, winget and an AUR package are on the roadmap. For now, grab the binary or build from source.

Pricing

Free core for real work, forever. Pro and Enterprise are annual subscriptions per seat — one seat covers two activations (desktop + laptop). Renewing keeps your activation code: paste it again and you are done.

Community
€0
MIT core, free for commercial use
  • HL7 v2 + FHIR editing & validation
  • MLLP send, unauthenticated HTTP GET
  • PHI detection, community XSD set
  • All plugin pack types, 3 active at once; 10 saved test cases
Download
Enterprise
€499
per year / seat
  • Everything in Pro
  • SOAP 1.1/1.2 client with WS-Security (WSDL import coming soon)
  • Priority support
  • Multi-seat: −10% from 3, −15% from 5
  • PO / wire-transfer invoicing
Buy now Prefer an invoice? Request a quote

Launch offer — €50 off the first year of Pro, on licenses bought by 31 December 2026. The checkout window applies it automatically; if a checkout page does not show it, enter the code LAUNCH199. Business customers can enter their VAT ID at checkout (reverse charge).

Prices exclude VAT. Quotes are answered within one business day; you receive an activation code by e-mail — paste it into BridgeLab’s License dialog and the seat activates online.

Frequently asked

Is the core really free for commercial use?

Yes. The core is MIT-licensed and stays fully usable for production integration work. Pro unlocks advanced features — MLLP listener, PHI masking and batch tools, FHIRPath, the full XSD catalogue, unlimited saved test cases — and Enterprise adds the SOAP 1.1/1.2 client with WS-Security and priority support, but nothing that blocks day-to-day HL7 work. The test case library is in every tier, and teams share it as pack files (Export… / Import…) that the free CLI runs in CI.

How much does Pro cost?

Pro is €249 per seat per year (launch offer: €199 for the first year on licenses bought by 31 December 2026). Enterprise is €499/year and adds priority support plus the SOAP 1.1/1.2 client with WS-Security (WSDL import coming soon). One seat covers two activations, e.g. desktop + laptop. Prices exclude VAT; multi-seat discounts from 3 seats.

How does activation and renewal work?

You receive an activation code (BL-PRO-XXXX-XXXX-XXXX) by e-mail. Paste it into the License dialog: the app makes a single HTTPS call, receives a signed license and from then on everything is verified locally — nothing to keep online. At start-up the app re-checks the code in the background about once a week (it keeps working if the server cannot be reached). When you renew, the same code is extended server-side — no new code to distribute: the app picks the new expiry up on its own within two weeks of expiry, or instantly via Update license in the License dialog. Air-gapped machine? Write to info@techemv.it with your Hardware ID for an offline key.

What happens when my subscription expires?

BridgeLab keeps working: it falls back to the Community tier with a renewal banner. Your files, plugins and test cases stay untouched. Renew and re-paste your code to re-enable Pro features on the spot.

Can I point BridgeLab at a real live feed?

That is the primary use case. Start a listener on port 2575 — set to accept other machines, since it listens on this computer only until you say otherwise — send HL7 via MLLP from your feed, see received messages in the inbox and open any of them in a new editor tab. Auto-ACK is configurable per listener.

How do you handle 10 MB messages with base64 PDFs?

The Rust backend uses a streaming zero-copy parser. The editor holds the full text but shows each long field folded, as a chip such as ⟨Base64 · 78.1 KB #1⟩, so Monaco never lays out megabytes of base64. Expand one field from the context menu, or all of them from the status bar; saving always writes the whole text.

Does it work offline?

Fully. Parsing, validation, MLLP and HTTP targeting local hosts, anonymization, export, CLI — none require network access. Activating with an online activation code needs a single HTTPS call; afterwards the license is verified locally via Ed25519 signatures with no license server involved. Fully offline signed keys are available on request for air-gapped sites.

Does BridgeLab connect to the internet?

On its own, in three cases only — and never with message content, file names or host names:

  • License activation. One HTTPS call to license-api.techemv.it when you paste an activation code (and when you deactivate). A license activated online repeats that call in the background at start-up once a week (once a day from 14 days before it expires) to pick up a renewal or a revoked code. Community, trial and offline keys never make it.
  • Telemetry — off unless you turn it on in Settings → Privacy. Then, once a day, usage counters with product name, app version, OS and architecture, language, license tier, days since installation, number of active plugin packs, a timestamp, a random installation ID and — for licenses activated online — the activation code (used to flag revoked licenses) go to license-api.techemv.it; the app shows the exact JSON before you opt in. IT can force it off for every user with BRIDGELAB_DISABLE_TELEMETRY=1 or the same policy.json.
  • New-version check. Once a day at start-up, an anonymous request to api.github.com for the latest release number — nothing is downloaded or installed. The installer (or the app, at first start) asks before it ever runs; switch it off in Settings → Privacy, or for every user of a machine with BRIDGELAB_DISABLE_UPDATE_CHECK=1 or a policy.json.

Everything else goes only where you point it: MLLP, HTTP/FHIR and SOAP to the endpoints you type, and Help → Check for updates when you click it. No crash reporting, no analytics, no fonts or scripts from a CDN. On an air-gapped machine an offline key needs no connection at all.

What about PHI and data residency?

BridgeLab processes every message locally. Nothing leaves your machine unless you explicitly send it via the Communication panel. Session tabs, test cases and the communication history are kept in a local database (on Windows in the roaming %APPDATA%, which travels with roaming profiles). The history keeps the full request and response of the latest 100 exchanges (up to 256 KB each), messages received by the MLLP listener included, so it holds the patient data they carry. Telemetry is off by default and, when enabled in Settings → Privacy, carries usage counters, app version, OS, language, license tier, a random installation ID and, for licenses activated online, the activation code — never message content or patient data. The exact JSON payload can be previewed in the app before opting in; see the privacy policy.

How do plugins work?

Drop a JSON file in <config>/BridgeLab/plugins/validation/, /fhir/ or /anonymization/. The app loads it at startup or on demand via Settings → Plugins. No code runs — plugins are declarative rules. Every tier runs every kind of pack; Community keeps up to 3 active at once, Pro has no cap. See PLUGINS.md.

Which HL7 versions are supported?

v2.1 through v2.7.1 for segment / field schemas (ten versions, 2,320 selectable message structures) plus the 394 HL7 value tables behind the coded fields. Custom (Z-) segments parse, edit and validate cleanly; the Field Inspector shows their fields as not in the HL7 standard, since it reads the built-in definitions only. Plugin packs can add validation rules and PHI fields for them.

Is there a CLI?

Yes — bridgelab-cli validate, info, anonymize, to-json, batch, test (runs the test case packs you export from the app), fhirpath, send (MLLP, fails unless the ACK is AA or CA) and xsd. Free, no licence; reads files or standard input and outputs JSON or JUnit XML so you can wire it into CI. The Linux binary needs glibc 2.34 or newer (Ubuntu 22.04, Debian 12, RHEL 9).