open-hl7 is an open-source, on-demand HL7 integration hub. A vision-capable agent reviews an existing EMR's config screens and sample messages, then synthesizes a working connector on the fly — no per-vendor code. OpenEMR is the first integration.
curl -fsSL https://raw.githubusercontent.com/rollingventures/open-hl7/main/install.sh | sh
Linux & macOS · amd64/arm64 · single static binary
Traditional HL7 integration is a human reading interface PDFs and clicking config screens. open-hl7 turns that perception-and-mapping work over to an agent.
Feed Claude screenshots + sample messages of a target EMR. It proposes a connector, generates a test message, diffs it against the real sample, and self-corrects until it matches.
The hub speaks a neutral canonical model and never imports EMR code. Each system is a declarative ConnectorSpec, not a new codebase.
MLLP server + client with framing and ACK/NAK — the piece most EMR cores lack. ADT today; lab ORM/ORU next.
Every message and its acknowledgement is persisted. Query, review, and (soon) replay — the backbone an interface engine needs.
The agent never auto-deploys. It emits a reviewable spec with a confidence score; you approve before a channel goes live.
A single static Go binary. Run it anywhere, on demand. No black-box engine.
From screenshots to a live channel.
The agent reads screenshots of the target system — config screens, field layouts, a sample message.
It proposes a ConnectorSpec: transport, MSH routing, and a canonical ⇄ HL7 field map.
It renders a message from the proposed map and diffs it against the system's real sample — looping until they match.
You review the spec and confidence report; the hub loads it and runs it as a live channel.
After installing, run the hub and push a patient through it.
open-hl7 -mllp-listen :2575 -http :8088 -dest 127.0.0.1:2576
curl -s localhost:8088/events -H 'content-type: application/json' -d '{
"mrn":"12345","familyName":"Doe","givenName":"Jane",
"birthDate":"19800115","sex":"F","event":"create",
"source":{"emr":"openemr","facility":"CLINIC"}
}'
# -> encodes ADT^A04 over MLLP, records the ACK, archives the message
curl -s localhost:8088/messages | jq .