hl7 0.1.2

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

HL7® and FHIR® are registered trademarks of HL7. We are requesting permission to use it here. Use of the trademarks does not constitute endorsement of this library by 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