hl7 0.1.1

HL7 for Rust: parse, navigate, validate, modify, and render Health Level Seven (HL7) messages. HL7 v2 (releases 2.1-2.9) lives in `hl7::v2`; the HL7 v3 RIM and message envelope in `hl7::v3`; room for `hl7::fhir` as that standard is implemented.
Documentation

HL7

Health Level Seven (HL7) for Rust, 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

Today that's just hl7::v2. Room is left for hl7::v3 and hl7::fhir as those standards get implemented, each its own crate underneath, re-exported here the same way.

Install

cargo add hl7
cargo add hl7 --features derive   # pulls in hl7-2's derive macros

Depend on hl7-2 directly instead if you specifically want v2 with no umbrella indirection — this crate is nothing but a thin re-export (pub use hl7_2 as v2;) plus room for future standards.

Use

use hl7::v2;

let message = v2::parse("MSH|^~\\&|LAB||EPIC||20240101||ORU^R01|1|P|2.5\r\
                          PID|1||241900||SMITH^JOHN")?;
assert_eq!(message.get("PID-5.1")?.as_deref(), Some("SMITH"));

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

License

MIT OR Apache-2.0 OR BSD-3-Clause OR GPL-2.0-only OR GPL-3.0-only