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;