PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::storage::storage_interface Class Referenceabstract

#include <storage_interface.h>

Inheritance diagram for kcenon::pacs::storage::storage_interface:
Inheritance graph
Collaboration diagram for kcenon::pacs::storage::storage_interface:
Collaboration graph

Public Member Functions

virtual ~storage_interface ()=default
 Virtual destructor for proper polymorphic destruction.
 
virtual auto store (const core::dicom_dataset &dataset) -> VoidResult=0
 Store a DICOM dataset.
 
virtual auto retrieve (std::string_view sop_instance_uid) -> Result< core::dicom_dataset >=0
 Retrieve a DICOM dataset by SOP Instance UID.
 
virtual auto remove (std::string_view sop_instance_uid) -> VoidResult=0
 Remove a DICOM dataset by SOP Instance UID.
 
virtual auto exists (std::string_view sop_instance_uid) const -> bool=0
 Check if a DICOM instance exists.
 
virtual auto find (const core::dicom_dataset &query) -> Result< std::vector< core::dicom_dataset > >=0
 Find DICOM datasets matching query criteria.
 
virtual auto store_batch (const std::vector< core::dicom_dataset > &datasets) -> VoidResult
 Store multiple DICOM datasets in a single operation.
 
virtual auto retrieve_batch (const std::vector< std::string > &sop_instance_uids) -> Result< std::vector< core::dicom_dataset > >
 Retrieve multiple DICOM datasets by their SOP Instance UIDs.
 
virtual auto get_statistics () const -> storage_statistics=0
 Get storage statistics.
 
virtual auto verify_integrity () -> VoidResult=0
 Verify storage integrity.
 

Protected Member Functions

 storage_interface ()=default
 Protected default constructor for derived classes.
 
 storage_interface (const storage_interface &)=delete
 Non-copyable.
 
storage_interfaceoperator= (const storage_interface &)=delete
 
 storage_interface (storage_interface &&)=default
 Movable.
 
storage_interfaceoperator= (storage_interface &&)=default
 

Detailed Description

Definition at line 93 of file storage_interface.h.

Constructor & Destructor Documentation

◆ ~storage_interface()

virtual kcenon::pacs::storage::storage_interface::~storage_interface ( )
virtualdefault

Virtual destructor for proper polymorphic destruction.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ storage_interface() [1/3]

kcenon::pacs::storage::storage_interface::storage_interface ( )
protecteddefault

Protected default constructor for derived classes.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ storage_interface() [2/3]

kcenon::pacs::storage::storage_interface::storage_interface ( const storage_interface & )
protecteddelete

Non-copyable.

◆ storage_interface() [3/3]

kcenon::pacs::storage::storage_interface::storage_interface ( storage_interface && )
protecteddefault

Movable.

Member Function Documentation

◆ exists()

virtual auto kcenon::pacs::storage::storage_interface::exists ( std::string_view sop_instance_uid) const -> bool
nodiscardpure virtual

Check if a DICOM instance exists.

Parameters
sop_instance_uidThe unique identifier to check
Returns
true if the instance exists, false otherwise

Implemented in kcenon::pacs::di::test::MockStorage, kcenon::pacs::storage::azure_blob_storage, kcenon::pacs::storage::file_storage, kcenon::pacs::storage::hsm_storage, and kcenon::pacs::storage::s3_storage.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ find()

virtual auto kcenon::pacs::storage::storage_interface::find ( const core::dicom_dataset & query) -> Result< std::vector< core::dicom_dataset > >
nodiscardpure virtual

Find DICOM datasets matching query criteria.

Performs a search using DICOM C-FIND semantics. The query dataset contains the search criteria where empty values act as wildcards.

Parameters
queryThe query dataset containing search criteria
Returns
Result containing matching datasets or error information
Note
Supports standard DICOM wildcard matching (* and ?)

Implemented in kcenon::pacs::di::test::MockStorage, kcenon::pacs::storage::azure_blob_storage, kcenon::pacs::storage::file_storage, kcenon::pacs::storage::hsm_storage, and kcenon::pacs::storage::s3_storage.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ get_statistics()

virtual auto kcenon::pacs::storage::storage_interface::get_statistics ( ) const -> storage_statistics
nodiscardpure virtual

◆ operator=() [1/2]

storage_interface & kcenon::pacs::storage::storage_interface::operator= ( const storage_interface & )
protecteddelete

◆ operator=() [2/2]

storage_interface & kcenon::pacs::storage::storage_interface::operator= ( storage_interface && )
protecteddefault

◆ remove()

virtual auto kcenon::pacs::storage::storage_interface::remove ( std::string_view sop_instance_uid) -> VoidResult
nodiscardpure virtual

Remove a DICOM dataset by SOP Instance UID.

Parameters
sop_instance_uidThe unique identifier for the instance to remove
Returns
VoidResult Success or error information
Note
Removing a non-existent instance is not considered an error

Implemented in kcenon::pacs::di::test::MockStorage, kcenon::pacs::storage::azure_blob_storage, kcenon::pacs::storage::file_storage, kcenon::pacs::storage::hsm_storage, and kcenon::pacs::storage::s3_storage.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ retrieve()

virtual auto kcenon::pacs::storage::storage_interface::retrieve ( std::string_view sop_instance_uid) -> Result< core::dicom_dataset >
nodiscardpure virtual

Retrieve a DICOM dataset by SOP Instance UID.

Parameters
sop_instance_uidThe unique identifier for the instance
Returns
Result containing the dataset or error information

Implemented in kcenon::pacs::di::test::MockStorage, kcenon::pacs::storage::azure_blob_storage, kcenon::pacs::storage::file_storage, kcenon::pacs::storage::hsm_storage, and kcenon::pacs::storage::s3_storage.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ retrieve_batch()

auto kcenon::pacs::storage::storage_interface::retrieve_batch ( const std::vector< std::string > & sop_instance_uids) -> Result<std::vector<core::dicom_dataset>>
nodiscardvirtual

Retrieve multiple DICOM datasets by their SOP Instance UIDs.

Default implementation calls retrieve() for each UID. Concrete implementations may override for better performance.

Parameters
sop_instance_uidsThe collection of UIDs to retrieve
Returns
Result containing found datasets or error information
Note
Missing instances are silently skipped in the result
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

Definition at line 33 of file storage_interface.cpp.

35 {
36 std::vector<core::dicom_dataset> results;
37 results.reserve(sop_instance_uids.size());
38
39 for (const auto& uid : sop_instance_uids) {
40 auto result = retrieve(uid);
41 if (result.is_ok()) {
42 results.push_back(std::move(result.value()));
43 }
44 // Silently skip missing instances as per interface contract
45 }
46
47 return results;
48}
virtual auto retrieve(std::string_view sop_instance_uid) -> Result< core::dicom_dataset >=0
Retrieve a DICOM dataset by SOP Instance UID.
std::string_view uid

References uid.

◆ store()

virtual auto kcenon::pacs::storage::storage_interface::store ( const core::dicom_dataset & dataset) -> VoidResult
nodiscardpure virtual

Store a DICOM dataset.

Stores the dataset using its SOP Instance UID as the key. If a dataset with the same UID already exists, it will be replaced.

Parameters
datasetThe DICOM dataset to store
Returns
VoidResult Success or error information
Note
The dataset must contain a valid SOP Instance UID (0008,0018)

Implemented in kcenon::pacs::di::test::MockStorage, kcenon::pacs::storage::azure_blob_storage, kcenon::pacs::storage::file_storage, kcenon::pacs::storage::hsm_storage, and kcenon::pacs::storage::s3_storage.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

◆ store_batch()

auto kcenon::pacs::storage::storage_interface::store_batch ( const std::vector< core::dicom_dataset > & datasets) -> VoidResult
nodiscardvirtual

Store multiple DICOM datasets in a single operation.

Default implementation calls store() for each dataset. Concrete implementations may override for better performance.

Parameters
datasetsThe collection of datasets to store
Returns
VoidResult Success or error information
Note
On error, some datasets may have been stored
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

Definition at line 22 of file storage_interface.cpp.

23 {
24 for (const auto& dataset : datasets) {
25 auto result = store(dataset);
26 if (result.is_err()) {
27 return result;
28 }
29 }
30 return ok();
31}
virtual auto store(const core::dicom_dataset &dataset) -> VoidResult=0
Store a DICOM dataset.

◆ verify_integrity()

virtual auto kcenon::pacs::storage::storage_interface::verify_integrity ( ) -> VoidResult
nodiscardpure virtual

Verify storage integrity.

Performs a consistency check on the storage backend. The specific checks depend on the implementation.

Returns
VoidResult Success if integrity is verified, error otherwise

Implemented in kcenon::pacs::di::test::MockStorage, kcenon::pacs::storage::azure_blob_storage, kcenon::pacs::storage::file_storage, kcenon::pacs::storage::hsm_storage, and kcenon::pacs::storage::s3_storage.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/storage/storage_interface.h.

The documentation for this class was generated from the following files: