dicom_ul/lib.rs
1//! This crates contains the types and methods needed to interact
2//! with DICOM nodes through the upper layer protocol.
3//!
4//! This crate can be used as a base
5//! for finite-state machines and higher-level helpers,
6//! enabling the creation of concrete service class users (SCUs)
7//! and service class providers (SCPs).
8//!
9//! - The [`address`] module
10//! provides an abstraction for working with compound addresses
11//! referring to application entities in a network.
12//! - The [`pdu`] module
13//! provides data structures representing _protocol data units_,
14//! which are passed around as part of the DICOM network communication support.
15//! - The [`association`] module
16//! comprises abstractions for establishing and negotiating associations
17//! between application entities,
18//! via the upper layer protocol by TCP.
19//!
20//! DICOM Associations on top of TLS is also supported,
21//! thus offering a Secure Transport Connection.
22//! TLS capabilities are provided by one of the backends
23//! supported by [Rustls](::rustls),
24//! which includes client authentication if desired.
25//!
26//! ## Features
27//!
28//! * `async`: Enables a fully asynchronous implementation of the upper layer protocol.
29//! See [`ClientAssociationOptions`] and [`ServerAssociationOptions`] for details
30//! * `sync-tls` (or `tls`): Enables TLS support for synchronous associations.
31//! * `async-tls`: Enables TLS support for asynchronous associations.
32//! Implies `async` and `sync-tls`.
33//! * `full`: Enables all capabilities: `async-tls`
34
35pub mod address;
36pub mod association;
37pub mod pdu;
38pub mod prelude;
39
40/// The current implementation class UID generically referring to DICOM-rs.
41///
42/// Automatically generated as per the standard, part 5, section B.2.
43///
44/// This UID may change in future versions,
45/// even between patch versions.
46pub const IMPLEMENTATION_CLASS_UID: &str = "2.25.175220362680028036156011002668768058626";
47
48/// The current implementation version name generically referring to DICOM-rs.
49///
50/// This name may change in future versions,
51/// even between patch versions.
52pub const IMPLEMENTATION_VERSION_NAME: &str = "DICOM-rs 0.10.0";
53
54// re-exports
55
56pub use address::{AeAddr, FullAeAddr};
57pub use association::client::{ClientAssociation, ClientAssociationOptions};
58pub use association::server::{ServerAssociation, ServerAssociationOptions};
59pub use pdu::Pdu;
60pub use pdu::read_pdu;
61pub use pdu::write_pdu;