dicom/
lib.rs

1//! # DICOM-rs library
2//!
3//! This crate serves as a mother library for
4//! building DICOM compliant systems.
5//!
6//! This library aggregates the key modules
7//! that you are likely to require when building software using DICOM-rs.
8//! These modules are also available as crates
9//! which can be fetched independently,
10//! in complement or as an alternative to using the `dicom` crate.
11//! When adding a new dependency in the DICOM-rs umbrella,
12//! they will generally have the `dicom-` prefix.
13//! For instance, the module `object`
14//! lives in the crate named [`dicom-object`][1].
15//!
16//! [1]: https://docs.rs/dicom-object
17//!
18//! ## Basic
19//!
20//! - For an idiomatic API to reading and writing DICOM data
21//!   from files or other sources,
22//!   see the [`object`] module.
23//! - To print human readable summaries of a DICOM object,
24//!   see the [`dump`] module.
25//! - The [`pixeldata`] module helps you convert pixel data
26//!   into images or multi-dimensional arrays.
27//! - The [`core`] crate contains most of the data types
28//!   that the other crates rely on,
29//!   including types for DICOM Tags ([`Tag`](dicom_core::Tag)),
30//!   value representations ([`VR`](dicom_core::VR)),
31//!   and in-memory representations of [DICOM values](dicom_core::DicomValue),
32//!   contained in [data elements](dicom_core::DataElement).
33//!   For convenience, the [`dicom_value!`] macro
34//!   has been re-exported here as well.
35//! - The DICOM standard data dictionary is in [`dictionary_std`],
36//!   which not only provides a singleton to a standard DICOM tag index
37//!   that can be queried at run-time,
38//!   it also provides constants for known tags
39//!   in the [`tags`][dictionary_std::tags] module.
40//! - In the event that you need to get
41//!   the global registry of known transfer syntaxes,
42//!   [`transfer_syntax`] a re-export of the `dicom-transfer-syntax-registry` crate.
43//!   Moreover, [inventory-based transfer syntax registry][ts]
44//!   is enabled by default
45//!   (see the link for more information).
46//!
47//! [ts]: dicom_encoding::transfer_syntax
48//!
49//! ## Advanced
50//!
51//! - To write DICOM network application entity software,
52//!   see the [`ul`] module for PDU reading/writing
53//!   and a DICOM association API.
54//! - If you are writing or declaring your own transfer syntax,
55//!   you will need to take the [`encoding`] module
56//!   and build your own [`TransferSyntax`](encoding::TransferSyntax) implementation.
57//! - [`parser`] contains the mid-level abstractions for
58//!   reading and writing DICOM data sets.
59//!   It might only be truly needed if
60//!   the `object` API is unfit or too inefficient for a certain task.
61//!
62//! ## More
63//!
64//! See the [DICOM-rs project repository][2]
65//! for the full list of crates available in the DICOM-rs ecosystem.
66//!
67//! [2]: https://github.com/Enet4/dicom-rs
68pub use dicom_core as core;
69pub use dicom_dictionary_std as dictionary_std;
70pub use dicom_dump as dump;
71pub use dicom_encoding as encoding;
72pub use dicom_object as object;
73pub use dicom_parser as parser;
74#[cfg(feature = "pixeldata")]
75pub use dicom_pixeldata as pixeldata;
76pub use dicom_transfer_syntax_registry as transfer_syntax;
77#[cfg(feature = "ul")]
78pub use dicom_ul as ul;
79
80// re-export dicom_value macro
81pub use dicom_core::dicom_value;