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.

    Try this page live →

  • 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.

    Try this page live →

  • 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.

    Try this page live →

  • Subscriptions

    All registered FHIR Subscriptions, their criteria, channel type (rest-hook, websocket, email), delivery history, and last error.

    Try this page live →

  • Translation Engine

    Inspect loaded StructureMaps. Test-run a map against a paste-in message and see the resulting FHIR resources without touching production.

    Try this page live →

  • DLQ

    Dead-letter queue with the failure reason, retry-count, and original payload. Replay one, replay many, or annotate as won't-fix.

    Try this page live →

  • Audit

    FHIR AuditEvent log with vendor-aware enrichments. Filter by agent, patient, time window. Export bundles for compliance reporting.

    Try this page live →

  • Settings

    Tenants, OIDC config, channel security, US Core validation toggle, telemetry opt-in. Everything that's a knob, in one place.

    Try this page live →

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.

Browse the profile catalog →

Observability

  • Prometheus/metrics exposes 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.