Skip to main content

wsi_dicom/
lib.rs

1#![deny(unsafe_code)]
2#![warn(missing_docs)]
3
4//! DICOM whole-slide export for `wsi-rs` datasets.
5//!
6//! The crate facade intentionally stays small: public types and functions are
7//! re-exported from focused internal modules, while implementation details live
8//! behind crate-private module boundaries.
9//!
10//! Optional `cuda` and `metal` features enable acceleration plumbing where the
11//! corresponding platform runtime is available. The
12//! `bench-internals` feature exposes unstable helpers for the repository's
13//! benchmark harness only.
14
15mod annotation_export;
16mod api;
17mod application;
18#[cfg(feature = "bench-internals")]
19#[doc(hidden)]
20pub mod bench_support;
21mod calibration;
22mod coordinate;
23mod diagnostics;
24mod encode;
25mod error;
26mod export;
27mod icc;
28mod instance_context;
29mod lossy;
30mod metadata;
31#[cfg(all(feature = "metal", target_os = "macos"))]
32#[allow(unsafe_code)]
33mod metal_interop;
34mod options;
35mod passthrough;
36mod report;
37mod request;
38mod routing;
39mod synthetic_source;
40mod tile;
41#[doc(hidden)]
42pub mod time;
43mod uid;
44mod validation;
45mod writer;
46
47#[cfg(test)]
48mod test_support;
49
50pub use annotation_export::{
51    export_qupath_annotations, AnnotationCoordinateSpace, AnnotationDiagnosticReport,
52    AnnotationExportReport, AnnotationInstanceReport, AnnotationTarget, QuPathAnnotationOptions,
53};
54pub use api::Export;
55pub use application::{
56    run_export_workflow, ExportWorkflowError, ExportWorkflowProgress, ExportWorkflowProgressEvent,
57    ExportWorkflowReport, ExportWorkflowRequest, ExportWorkflowStage, MetadataInput,
58};
59pub use calibration::{
60    create_icc_calibration_bundle, ColorManagement, IccCalibrationRegistry, IccConflictPolicy,
61    IccProfile, ScannerIdentity, ICC_CALIBRATION_REGISTRY_MAX_BYTES, ICC_PROFILE_MAX_BYTES,
62};
63pub use diagnostics::{run_dicom_self_test, SelfTestOptions, SelfTestReport};
64pub use error::Error;
65pub use export::default_transfer_syntax_for_source;
66pub use export::{
67    encode_dicom_j2k_frame, export_dicom, profile_corpus_route_coverage,
68    profile_dicom_route_corpus_coverage, profile_dicom_route_coverage, profile_dicom_routes,
69    profile_slide_route_coverage,
70};
71pub use metadata::{
72    DicomMetadata, MetadataSource, SpecimenIdentifierIssuer, UniversalEntityIdType,
73    METADATA_JSON_MAX_BYTES,
74};
75pub use options::{
76    CodecValidation, EncodeBackendPreference, ExportOptions, ExportPreset, JpegDirectHtj2kProfile,
77    SourcePixelSpacingMm, TransferSyntax, UidPolicy,
78};
79pub use report::{
80    EncodedFrame, ExportMetrics, ExportReport, GpuEncodeMetrics, IccConflictDecision,
81    IccProfileSource, InstanceReport, JpegDirectHtj2kMetrics, RouteCorpusCoverageFailure,
82    RouteCorpusCoverageReport, RouteCounters, RouteCoverageReport, RouteProfileReport,
83    WriteTimings,
84};
85pub use request::{
86    CorpusRouteCoverageRequest, DefaultTransferSyntaxRequest, ExportRequest, FrameSamples,
87    J2kFrameEncodeRequest, RouteCoverageRequest, RouteCoverageTarget, RouteProfileRequest,
88    RouteProgressSink, SlideRouteCoverageRequest,
89};
90pub use validation::{
91    doctor_dicom_environment, validate_dicom_path, DoctorOptions, DoctorReport, DoctorStatus,
92    DoctorTool, ExecutionFailure, ValidationCheck, ValidationExecution, ValidationOptions,
93    ValidationProfile, ValidationReport, ValidationStatus,
94};
95
96pub mod prelude {
97    //! Common imports for applications using `wsi-dicom`.
98
99    pub use crate::{
100        CodecValidation, ColorManagement, DefaultTransferSyntaxRequest, Error, Export,
101        ExportOptions, ExportPreset, ExportReport, ExportRequest, FrameSamples,
102        IccCalibrationRegistry, IccConflictDecision, IccConflictPolicy, IccProfile,
103        IccProfileSource, J2kFrameEncodeRequest, JpegDirectHtj2kProfile, MetadataSource,
104        ScannerIdentity, SourcePixelSpacingMm, SpecimenIdentifierIssuer, TransferSyntax, UidPolicy,
105        UniversalEntityIdType, ValidationOptions,
106    };
107}
108
109pub(crate) const VL_WSI_SOP_CLASS_UID: &str = "1.2.840.10008.5.1.4.1.1.77.1.6";