Skip to content
LambogeniusDocs

HL7 Edge Gateway

All examples

Complete, runnable sample solutions, from one MLLP route to a three-zone cluster in the cloud.

Runs onWindows · Linux · macOS · DockerFree developer license for test traffic. Production traffic needs a paid license.

Sample solutions you can run

Each example is a folder in github.com/lambogenius/hl7-edge-gateway-examples with:

  • the complete configuration, with comments;
  • a stand-in for every system the gateway talks to, so you need nothing else;
  • test messages;
  • a demo script that runs every step and checks the result.

The pages below go through them step by step.

ExampleWhat it showsRuns on
MEDITECH → REST APIMLLP in, HTTPS REST out with a bearer token. Store-and-forward through an API outage, dead letters, and pass-through.Docker
Partners → MEDITECHHTTPS REST with an API key per partner, and SOAP with basic auth, into MEDITECH over MLLP.Docker
Azure Service BusMEDITECH to a topic with two subscriptions, and a queue to MEDITECH, through outages on both sides.Docker (emulator)
Entra ID and SalesforceOnly callers with an Entra ID token and app role get in; results go to Salesforce with the JWT bearer flow.Docker, your tenant and org
High availabilityThree NATS nodes, two gateways and HAProxy, with node crashes and nothing lost, duplicated or reordered.Docker
On-premises HALinux VMs with systemd, NATS over mutual TLS, and a keepalived virtual IP.VMs
Azure (AKS)Three zones, an internal Azure Load Balancer, Premium SSD, and ACR.Azure
AWS (EKS)Three AZs, an internal NLB with /ready health checks, encrypted gp3, and ECR.AWS
Google Cloud (GKE)A regional cluster, an internal passthrough load balancer, pd-ssd, and Artifact Registry.Google Cloud
One ADT feed, three systemsMEDITECH and a partner clinic into one route; a filtered lab API, a downstream HIS and an SFTP archive, each with its own queue.Docker (0.5.0 or later)
Results to the EHR, alerts by orderPass-through: the lab system waits for the EHR's own ACK; what the EHR accepted is copied to an on-call pager and infection control, picked by segment-group filters.Docker (0.5.0 or later)
One ADT feed, three shapesOne route, three destinations, each with a transform: HL7 with the lab system's own codes, JSON for a patient portal, and de-identified HL7 for a research registry.Docker (0.6.0 or later)
MEDITECH to FHIRADT, orders, results and immunizations into a FHIR R4 server as transactions: one Patient however many messages name it, results corrected in place, MEDITECH's own codes in one file.Docker (0.7.0 or later)
Claims, remittances and eligibilityX12: 837 claims from billing checked and acknowledged (999, TA1), sent to the clearinghouse in the clinic's own envelope; 835 remittances to a revenue API as JSON, from the clearinghouse and from a payer's CAQH CORE server; real-time 270/271 eligibility. Encrypted store, console sign-in and the audit trail.Docker (0.9.2 or later)
HL7 files over SFTPA lab's result files into MEDITECH in order, and MEDITECH's orders out as HL7 batch files; key sign-in and a pinned host key.Docker (0.4.0 or later)

Before you start

  1. 1
    Docker with Compose v2.

    Docker Desktop on Windows or macOS, or Docker Engine on Linux.

  2. 2
    The gateway image and the examples.

    Download the Docker image from lambogenius.com after signing in. Verify it if you like. Then:

    git clone https://github.com/lambogenius/hl7-edge-gateway-examples.git
    cd hl7-edge-gateway-examples
    docker load -i hl7-edge-gateway-0.8.1-docker-image-linux-amd64.tar.gz
  3. 3
    A license.

    A free developer license works for every example, because they all send test messages (MSH-11 T). Put it in each example's .env as LAMBOGENIUS_LICENSE=….

Every example starts the same way: cp .env.example .env, add the license, docker compose up -d, then ./demo.sh (or .\demo.ps1 in Windows PowerShell for the first four). The examples share ports, so run one at a time and finish with docker compose down -v.

The admin console of each example is at http://localhost:8080; sign in with HL7EDGE_ADMIN_TOKEN from .env.