Features
The pipeline
flowchart LR
A["EHR/Lab"] -- "HL7v2" --> B["Interface Engine"]
B -- "raw message" --> C["Transformation Engine"]
C -- "transformed message(s)" --> D["FHIR store"]
D -- "events" --> E["Subscribers"]
HL7 v2 messages arrive at the Interface Engine over MLLP (or REST or
a file drop, depending on the source). The Interface Engine hands
the raw message off to the Transformation Engine, which applies
vendor-aware StructureMaps via Matchbox's $transform
to produce one or more FHIR resources. Those resources are written
to a HAPI FHIR R4 store. Anything new or changed in the store
triggers FHIR Subscriptions whose criteria match — REST-hook,
WebSocket, or email — and downstream subscribers receive the
delivery. Every step emits structured logs, OpenTelemetry spans,
and Prometheus counters; failures land in a DLQ with full context
for replay.
Admin UI
-
Dashboard
Live health: throughput, error rate, DLQ size, latency, subscription delivery success.
-
Interfaces
Each inbound channel (MLLP listener, FHIR poller, file drop) with status, last message, error counts. Drill into a channel to see its config and per-channel security.
-
Messages
Searchable inbound log. Filter by facility, message type, status. Open a message to see the raw v2, the mapped FHIR Bundle, and every step's timing.
-
Subscriptions
All registered FHIR Subscriptions, their criteria, channel type (rest-hook, websocket, email), delivery history, and last error.
-
Translation Engine
Inspect loaded StructureMaps. Test-run a map against a paste-in message and see the resulting FHIR resources without touching production.
-
DLQ
Dead-letter queue with the failure reason, retry-count, and original payload. Replay one, replay many, or annotate as won't-fix.
-
Audit
FHIR AuditEvent log with vendor-aware enrichments. Filter by agent, patient, time window. Export bundles for compliance reporting.
-
Settings
Tenants, OIDC config, channel security, US Core validation toggle, telemetry opt-in. Everything that's a knob, in one place.
Screenshots are captured from the live admin UI at https://subscription-service-ui.bzonfhir.com. Click a thumbnail to enlarge; click Try this page live to open the real running app in a new tab.
Vendor profiles
Vendor profiles allow us to provide a configuration that works with a specific vendor (and version from that vendor) of their EHR in the standard implementation for that system. If you have a standard implementation this should work out of the box. If not, then you will need to do some slight tweaking to adjust your configuration. This can likely be done either in your interface engine, or by making changes to our translation layer. If you need help with these changes, we are here to help you with that.
Observability
- Prometheus —
/metricsexposes per-channel ingest, transform latency histograms, subscription delivery counters, DLQ depth. - JSON logs to stdout/stderr with correlated message-id fields, ready for any log aggregator.
- OpenTelemetry traces — every message gets a span tree from MLLP receive through subscription fire.
- FHIR AuditEvent — vendor-aware audit records persisted in HAPI, queryable via the admin API.
Auth
Bring your own auth: Auth0, Okta, Azure AD, or any compliant IdP.
Multi-tenancy is a configuration toggle. Each tenant gets its own FHIR partition, its own channel security policies, and its own subscription set. One binary, one admin console, many facilities.
Deployment
We support multiple deployment options: docker, kubernetes on prem, kubernetes in a cloud, you host or we do. We have example docker-compose, helm charts, and terraform to help you with your own hosting and our engineers can help you set up your instance as well.
See it for real
The fastest way to evaluate is to click through the live admin console. Every page above has a working demo a click away.