HL7® implementation using Rust
A Cargo workspace: parse, navigate, validate, modify, and render Health Level Seven (HL7) messages in Rust. One crate per layer, one module per standard.
HL7®, and FHIR® are the registered trademarks of Health Level Seven International and their use of these trademarks does not constitute an endorsement by HL7.
This project uses the HL7® name in its package names, its organization name, and its domain, which is beyond fair use; we are requesting permission from HL7® for ways forward. The written-permission request was sent on 2026-08-25; the reply is pending.
This is organized by standard: one module per release family, so a "message", a "segment", or a "code" in one standard is never confused with the same word in another.
hl7 this crate: re-exports one module per standard
|
+-- hl7::v2 = hl7-2 HL7 v2, releases 2.1-2.9 — parse, navigate,
| validate, modify, and render, in three modes:
| generic, schema-based, and struct-based
+-- hl7::v3 = hl7-3 HL7 v3 — RIM backbone classes, coded values, the
three-level message envelope: a foundation, not
a full implementation
hl7::v2 and hl7::v3 are both here today. Room is left for hl7::fhir
as that standard gets implemented, its own crate underneath, re-exported
here the same way.
Install
Depend on hl7-2 (or
hl7-3) directly
instead if you specifically want one standard with no umbrella indirection —
this crate is nothing but thin re-exports (pub use hl7_2 as v2;,
pub use hl7_3 as v3;) plus room for future standards.
Use
use v2;
let message = parse?;
assert_eq!;
See hl7-2's README for the
full tour of what hl7::v2 can do, and its
spec/index.md
for the normative specification.
See also
hl7-2— the HL7 v2 implementation this crate re-exportshl7-2-derive— the derive macros behind thederivefeaturehl7-2-mllp— MLLP: sending and receiving HL7 v2 messages over TCPhl7-2-from-er7-into-json,-into-xml,hl7-2-from-json-into-er7,hl7-2-from-xml-into-er7— format conversions
License
MIT OR Apache-2.0 OR BSD-3-Clause OR GPL-2.0-only OR GPL-3.0-only