13#ifndef PACS_INTEGRATION_TESTS_TEST_DATA_GENERATOR_HPP
14#define PACS_INTEGRATION_TESTS_TEST_DATA_GENERATOR_HPP
61 [[nodiscard]] std::vector<core::dicom_dataset>
139 uint32_t frames = 30,
140 const std::string& study_uid =
"");
149 uint32_t frames = 60,
150 const std::string& study_uid =
"");
159 uint32_t frames = 100,
160 const std::string& study_uid =
"");
169 uint32_t frames = 50,
170 const std::string& study_uid =
"");
187 const std::string& patient_id,
188 const std::vector<std::string>& modalities = {
"CT",
"MR",
"XA"});
197 const std::string& patient_id =
"",
198 const std::string& modality =
"CT");
235 const std::string& creator_id =
"TEST PRIVATE CREATOR");
258 const std::string& root =
"1.2.826.0.1.3680043.9.9999");
278 const std::string& patient_name,
279 const std::string& patient_id,
280 const std::string& birth_date =
"19800101",
281 const std::string& sex =
"M");
288 const std::string& study_uid,
289 const std::string& accession_number,
290 const std::string& study_id,
291 const std::string& description);
298 const std::string& series_uid,
299 const std::string& modality,
300 const std::string& series_number,
301 const std::string& description);
310 uint16_t bits_allocated,
311 uint16_t bits_stored,
312 uint16_t samples_per_pixel = 1,
313 const std::string& photometric =
"MONOCHROME2");
322 uint16_t bits_allocated,
323 uint16_t samples_per_pixel = 1,
324 uint16_t fill_value = 512);
333 uint16_t bits_allocated,
335 uint16_t samples_per_pixel = 1);
Comprehensive DICOM test data generator.
static void add_series_module(core::dicom_dataset &ds, const std::string &series_uid, const std::string &modality, const std::string &series_number, const std::string &description)
Add common series module attributes.
static core::dicom_dataset us_cine(uint32_t frames=60, const std::string &study_uid="")
Generate a multi-frame US cine dataset.
static core::dicom_dataset invalid(invalid_dataset_type type)
Generate an intentionally invalid dataset.
static std::string generate_uid(const std::string &root="1.2.826.0.1.3680043.9.9999")
Generate a unique UID for testing.
static void add_multiframe_pixel_data(core::dicom_dataset &ds, uint16_t rows, uint16_t columns, uint16_t bits_allocated, uint32_t num_frames, uint16_t samples_per_pixel=1)
Generate pixel data for multi-frame image.
static core::dicom_dataset large(size_t target_size_mb)
Generate a large dataset for stress testing.
static void add_study_module(core::dicom_dataset &ds, const std::string &study_uid, const std::string &accession_number, const std::string &study_id, const std::string &description)
Add common study module attributes.
static core::dicom_dataset worklist(const std::string &patient_id="", const std::string &modality="CT")
Generate a worklist item dataset.
static core::dicom_dataset mr(const std::string &study_uid="")
Generate an MR Image dataset.
static core::dicom_dataset enhanced_ct(uint32_t frames=100, const std::string &study_uid="")
Generate an Enhanced CT multi-frame dataset.
static multi_modal_study patient_journey(const std::string &patient_id, const std::vector< std::string > &modalities={"CT", "MR", "XA"})
Generate a complete multi-modal patient study.
static void add_pixel_data(core::dicom_dataset &ds, uint16_t rows, uint16_t columns, uint16_t bits_allocated, uint16_t samples_per_pixel=1, uint16_t fill_value=512)
Generate pixel data for single-frame image.
static core::dicom_dataset unicode()
Generate a dataset with Unicode patient names.
static core::dicom_dataset ct(const std::string &study_uid="")
Generate a CT Image dataset.
static void add_image_pixel_module(core::dicom_dataset &ds, uint16_t rows, uint16_t columns, uint16_t bits_allocated, uint16_t bits_stored, uint16_t samples_per_pixel=1, const std::string &photometric="MONOCHROME2")
Add common image pixel module attributes.
static core::dicom_dataset enhanced_mr(uint32_t frames=50, const std::string &study_uid="")
Generate an Enhanced MR multi-frame dataset.
static core::dicom_dataset us(const std::string &study_uid="")
Generate a single-frame US Image dataset.
static core::dicom_dataset xa(const std::string &study_uid="")
Generate a single-frame XA Image dataset.
static core::dicom_dataset with_private_tags(const std::string &creator_id="TEST PRIVATE CREATOR")
Generate a dataset with private tags.
static void add_patient_module(core::dicom_dataset &ds, const std::string &patient_name, const std::string &patient_id, const std::string &birth_date="19800101", const std::string &sex="M")
Add common patient module attributes.
static std::string current_time()
Get current time in DICOM TM format (HHMMSS)
static std::string current_date()
Get current date in DICOM DA format (YYYYMMDD)
static core::dicom_dataset xa_cine(uint32_t frames=30, const std::string &study_uid="")
Generate a multi-frame XA cine dataset.
DICOM Dataset - ordered collection of Data Elements.
Compile-time constants for commonly used DICOM tags.
invalid_dataset_type
Types of invalid datasets for error testing.
@ missing_patient_id
Missing Patient ID.
@ missing_sop_class_uid
Missing SOP Class UID.
@ oversized_value
Value exceeds VR length limit.
@ missing_study_instance_uid
Missing Study Instance UID.
@ invalid_vr
Invalid Value Representation.
@ missing_sop_instance_uid
Missing SOP Instance UID.
@ corrupted_pixel_data
Corrupted pixel data.
Represents a complete patient study with multiple modalities.
std::vector< core::dicom_dataset > get_by_modality(const std::string &modality) const
Get datasets filtered by modality.
std::string patient_id
Patient identifier.
std::vector< core::dicom_dataset > datasets
All datasets in study.
size_t series_count() const
Get total number of series in study.
std::string study_uid
Study Instance UID.
std::string patient_name
Patient name.
Ultrasound Image Storage SOP Classes.
X-Ray Angiographic (XA) Image Storage SOP Classes.