79 [[nodiscard]]
static auto open(
const std::filesystem::path& path)
87 [[nodiscard]]
static auto from_bytes(std::span<const uint8_t> data)
121 [[nodiscard]]
auto save(
const std::filesystem::path& path)
const
122 -> kcenon::pacs::VoidResult;
128 [[nodiscard]]
auto to_bytes()
const -> std::vector<uint8_t>;
227 std::span<const uint8_t> data,
size_t& bytes_read)
246 -> std::vector<uint8_t>;
255 std::span<const uint8_t> data,
size_t& bytes_read)
267 std::span<const uint8_t> data,
size_t& bytes_read)
277 std::span<const uint8_t> data,
size_t& bytes_read)
286 -> std::vector<uint8_t>;
294 -> std::vector<uint8_t>;
304 std::span<const uint8_t> data,
305 const encoding::transfer_syntax&
ts,
317 const encoding::transfer_syntax&
ts)
318 -> std::vector<uint8_t>;
329 std::span<const uint8_t> data,
size_t& bytes_read,
330 bool explicit_vr,
bool big_endian)
339 std::span<const uint8_t> data)
340 -> std::vector<std::vector<uint8_t>>;
350 "1.2.826.0.1.3680043.8.1055.1";
dicom_file(const dicom_file &)=default
Copy constructor.
auto save(const std::filesystem::path &path) const -> kcenon::pacs::VoidResult
Save the DICOM file to disk.
dicom_file(dicom_file &&) noexcept=default
Move constructor.
static auto decode_explicit_vr_be(std::span< const uint8_t > data, size_t &bytes_read) -> kcenon::pacs::Result< dicom_dataset >
Decode a dataset from Explicit VR Big Endian format.
auto dataset() const noexcept -> const dicom_dataset &
Get read-only access to the main dataset.
static auto open(const std::filesystem::path &path) -> kcenon::pacs::Result< dicom_file >
Open and read a DICOM file from disk.
static auto from_bytes(std::span< const uint8_t > data) -> kcenon::pacs::Result< dicom_file >
Parse a DICOM file from raw bytes.
static auto encode_dataset(const dicom_dataset &dataset, const encoding::transfer_syntax &ts) -> std::vector< uint8_t >
Encode a dataset based on its Transfer Syntax.
static auto encode_implicit_vr_le(const dicom_dataset &dataset) -> std::vector< uint8_t >
Encode a dataset using Implicit VR Little Endian.
static auto decode_implicit_vr_le(std::span< const uint8_t > data, size_t &bytes_read) -> kcenon::pacs::Result< dicom_dataset >
Decode a dataset from Implicit VR Little Endian format.
static auto encode_explicit_vr_le(const dicom_dataset &dataset) -> std::vector< uint8_t >
Encode a dataset using Explicit VR Little Endian.
static auto parse_encapsulated_frames(std::span< const uint8_t > data) -> std::vector< std::vector< uint8_t > >
Parse encapsulated pixel data frames.
static constexpr size_t kPreambleSize
Preamble size.
dicom_dataset meta_info_
File Meta Information (Group 0002)
auto sop_instance_uid() const -> std::string
Get the SOP Instance UID.
static constexpr std::string_view kImplementationVersionName
Implementation Version Name.
auto to_bytes() const -> std::vector< uint8_t >
Encode the DICOM file to raw bytes.
static auto decode_explicit_vr_le(std::span< const uint8_t > data, size_t &bytes_read) -> kcenon::pacs::Result< dicom_dataset >
Decode a dataset from Explicit VR Little Endian format.
auto transfer_syntax() const -> encoding::transfer_syntax
Get the Transfer Syntax of this file.
static auto encode_explicit_vr_be(const dicom_dataset &dataset) -> std::vector< uint8_t >
Encode a dataset using Explicit VR Big Endian.
auto sop_class_uid() const -> std::string
Get the SOP Class UID.
static auto decode_dataset(std::span< const uint8_t > data, const encoding::transfer_syntax &ts, size_t &bytes_read) -> kcenon::pacs::Result< dicom_dataset >
Decode a dataset based on its Transfer Syntax.
static constexpr std::string_view kImplementationClassUid
Implementation Class UID for this library.
static auto parse_undefined_length_sequence(std::span< const uint8_t > data, size_t &bytes_read, bool explicit_vr, bool big_endian) -> kcenon::pacs::Result< std::vector< dicom_dataset > >
Parse a sequence with undefined length.
static constexpr uint8_t kDicmPrefix[4]
DICOM magic bytes.
static auto generate_meta_information(const dicom_dataset &dataset, const encoding::transfer_syntax &ts) -> dicom_dataset
Generate File Meta Information for a dataset.
dicom_file()=default
Default constructor - creates an empty file.
dicom_dataset dataset_
Main dataset (encoded per Transfer Syntax)
static auto create(dicom_dataset dataset, const encoding::transfer_syntax &ts) -> dicom_file
Create a new DICOM file from a dataset.
static auto parse_meta_information(std::span< const uint8_t > data, size_t &bytes_read) -> kcenon::pacs::Result< dicom_dataset >
Parse file meta information from raw data.
auto meta_information() const noexcept -> const dicom_dataset &
Get read-only access to the File Meta Information.
Represents a DICOM Transfer Syntax.
DICOM Dataset - ordered collection of Data Elements.
Compile-time constants for commonly used DICOM tags.
Result<T> type aliases and helpers for PACS system.