1use std::path::PathBuf;
4use std::time::Duration;
5
6use signinum_j2k::J2kLosslessSamples;
7
8use crate::{
9 CodecValidation, DicomExportOptions, EncodeBackendPreference, MetadataSource, TransferSyntax,
10 WsiDicomError,
11};
12
13#[derive(Debug, Clone, PartialEq)]
15pub struct DicomExportRequest {
16 pub source_path: PathBuf,
17 pub output_dir: PathBuf,
18 pub options: DicomExportOptions,
19 pub metadata: MetadataSource,
20 pub level_filter: Option<u32>,
21}
22
23impl DicomExportRequest {
24 pub fn new(
25 source_path: PathBuf,
26 output_dir: PathBuf,
27 options: DicomExportOptions,
28 ) -> Result<Self, WsiDicomError> {
29 options.validate()?;
30 Ok(Self {
31 source_path,
32 output_dir,
33 options,
34 metadata: MetadataSource::ResearchPlaceholder,
35 level_filter: None,
36 })
37 }
38
39 pub fn validate(&self) -> Result<(), WsiDicomError> {
40 self.options.validate()
41 }
42}
43
44#[derive(Debug, Clone, Copy)]
46pub struct DicomJ2kFrameEncodeRequest<'a> {
47 pub samples: J2kLosslessSamples<'a>,
48 pub transfer_syntax: TransferSyntax,
49 pub encode_backend: EncodeBackendPreference,
50 pub codec_validation: CodecValidation,
51}
52
53#[derive(Debug, Clone, PartialEq)]
54pub struct DicomRouteProfileRequest {
55 pub source_path: PathBuf,
56 pub options: DicomExportOptions,
57 pub level: u32,
58 pub max_frames: u64,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq)]
63pub struct DefaultTransferSyntaxRequest {
64 pub source_path: PathBuf,
65 pub tile_size: u32,
66 pub level_filter: Option<u32>,
67 pub max_levels: Option<u32>,
68}
69
70#[derive(Debug, Clone, PartialEq)]
71pub struct DicomRouteCoverageRequest {
72 pub source_path: PathBuf,
73 pub options: DicomExportOptions,
74 pub max_frames_per_level: u64,
75 pub max_levels: Option<u32>,
76 pub max_level_elapsed: Option<Duration>,
77 pub progress: Option<DicomRouteCoverageProgress>,
78}
79
80#[derive(Debug, Clone, Copy, PartialEq, Eq)]
81pub enum DicomRouteCoverageProgress {
82 Stderr,
83}
84
85#[derive(Debug, Clone, PartialEq)]
86pub struct DicomRouteCorpusCoverageRequest {
87 pub source_root: PathBuf,
88 pub options: DicomExportOptions,
89 pub max_frames_per_level: u64,
90 pub max_levels: Option<u32>,
91 pub max_level_elapsed: Option<Duration>,
92 pub progress: Option<DicomRouteCorpusCoverageProgress>,
93}
94
95#[derive(Debug, Clone, Copy, PartialEq, Eq)]
96pub enum DicomRouteCorpusCoverageProgress {
97 Stderr,
98}