|
PACS System 0.1.0
PACS DICOM system library
|
#include <print_scu.h>

Public Member Functions | |
| print_scu (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct Print SCU with default configuration. | |
| print_scu (const print_scu_config &config, std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct Print SCU with custom configuration. | |
| ~print_scu ()=default | |
| print_scu (const print_scu &)=delete | |
| print_scu & | operator= (const print_scu &)=delete |
| print_scu (print_scu &&)=delete | |
| print_scu & | operator= (print_scu &&)=delete |
| network::Result< print_result > | create_film_session (network::association &assoc, const print_session_data &data) |
| Create a new Film Session (N-CREATE) | |
| network::Result< print_result > | delete_film_session (network::association &assoc, std::string_view session_uid) |
| Delete a Film Session (N-DELETE) | |
| network::Result< print_result > | create_film_box (network::association &assoc, const print_film_box_data &data) |
| Create a new Film Box (N-CREATE) | |
| network::Result< print_result > | print_film_box (network::association &assoc, std::string_view film_box_uid) |
| Print a Film Box (N-ACTION) | |
| network::Result< print_result > | delete_film_box (network::association &assoc, std::string_view film_box_uid) |
| Delete a Film Box (N-DELETE) | |
| network::Result< print_result > | set_image_box (network::association &assoc, std::string_view image_box_uid, const print_image_data &data, bool use_color=false) |
| Set Image Box pixel data (N-SET) | |
| network::Result< print_result > | query_printer_status (network::association &assoc) |
| Query printer status (N-GET) | |
| size_t | sessions_created () const noexcept |
| size_t | film_boxes_created () const noexcept |
| size_t | images_set () const noexcept |
| size_t | prints_executed () const noexcept |
| size_t | printer_queries () const noexcept |
| void | reset_statistics () noexcept |
Private Member Functions | |
| std::optional< uint8_t > | find_print_context (network::association &assoc, std::string_view sop_class_uid) const |
| Find an accepted presentation context for a print SOP class. | |
| std::string | generate_uid () const |
| Generate a unique SOP Instance UID. | |
| uint16_t | next_message_id () noexcept |
| Get the next message ID for DIMSE operations. | |
Private Attributes | |
| std::shared_ptr< di::ILogger > | logger_ |
| Logger instance. | |
| print_scu_config | config_ |
| Configuration. | |
| std::atomic< uint16_t > | message_id_counter_ {1} |
| Message ID counter. | |
| std::atomic< size_t > | sessions_created_ {0} |
| Statistics. | |
| std::atomic< size_t > | film_boxes_created_ {0} |
| std::atomic< size_t > | images_set_ {0} |
| std::atomic< size_t > | prints_executed_ {0} |
| std::atomic< size_t > | printer_queries_ {0} |
Definition at line 231 of file print_scu.h.
|
explicit |
Construct Print SCU with default configuration.
| logger | Logger instance for service logging (nullptr uses null_logger) |
Definition at line 143 of file print_scu.cpp.
|
explicit |
Construct Print SCU with custom configuration.
| config | Configuration options |
| logger | Logger instance for service logging (nullptr uses null_logger) |
Definition at line 146 of file print_scu.cpp.
|
default |
|
delete |
|
delete |
|
nodiscard |
Create a new Film Box (N-CREATE)
The SCP will auto-create Image Boxes based on the image display format. Referenced Image Box UIDs are returned in the response dataset.
| assoc | The established association to use |
| data | Film box creation data |
Definition at line 330 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, film_boxes_created_, kcenon::pacs::services::print_film_box_data::film_orientation, kcenon::pacs::services::print_tags::film_orientation, kcenon::pacs::services::print_film_box_data::film_session_uid, kcenon::pacs::services::print_film_box_data::film_size_id, kcenon::pacs::services::print_tags::film_size_id, find_print_context(), kcenon::pacs::core::dicom_dataset::get(), kcenon::pacs::core::dicom_dataset::get_or_create_sequence(), kcenon::pacs::services::print_film_box_data::image_display_format, kcenon::pacs::services::print_tags::image_display_format, kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, kcenon::pacs::services::print_film_box_data::magnification_type, kcenon::pacs::services::print_tags::magnification_type, next_message_id(), kcenon::pacs::pacs_error(), kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::error_codes::print_unexpected_command, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::services::print_tags::referenced_film_session_sequence, kcenon::pacs::core::tags::referenced_sop_class_uid, kcenon::pacs::core::tags::referenced_sop_instance_uid, kcenon::pacs::services::print_result::response_data, kcenon::pacs::network::association::send_dimse(), kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
nodiscard |
Create a new Film Session (N-CREATE)
| assoc | The established association to use |
| data | Film session creation data |
Definition at line 155 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, kcenon::pacs::services::print_scu_config::auto_generate_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, kcenon::pacs::services::print_session_data::film_destination, kcenon::pacs::services::print_tags::film_destination, kcenon::pacs::services::print_session_data::film_session_label, kcenon::pacs::services::print_tags::film_session_label, find_print_context(), generate_uid(), kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, kcenon::pacs::services::print_session_data::medium_type, kcenon::pacs::services::print_tags::medium_type, next_message_id(), kcenon::pacs::services::print_session_data::number_of_copies, kcenon::pacs::services::print_tags::number_of_copies, kcenon::pacs::pacs_error(), kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::services::print_session_data::print_priority, kcenon::pacs::services::print_tags::print_priority, kcenon::pacs::error_codes::print_unexpected_command, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::network::association::send_dimse(), sessions_created_, kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_session_data::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
nodiscard |
Delete a Film Box (N-DELETE)
| assoc | The established association to use |
| film_box_uid | Film Box SOP Instance UID |
Definition at line 516 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, kcenon::pacs::services::basic_film_box_sop_class_uid, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, find_print_context(), kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, next_message_id(), kcenon::pacs::pacs_error(), kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::error_codes::print_unexpected_command, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::network::association::send_dimse(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
nodiscard |
Delete a Film Session (N-DELETE)
Also deletes all associated Film Boxes and Image Boxes on the SCP side.
| assoc | The established association to use |
| session_uid | Film Session SOP Instance UID |
Definition at line 254 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, kcenon::pacs::services::basic_film_session_sop_class_uid, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, find_print_context(), kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, next_message_id(), kcenon::pacs::pacs_error(), kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::error_codes::print_unexpected_command, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::network::association::send_dimse(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
nodiscardnoexcept |
Definition at line 775 of file print_scu.cpp.
References film_boxes_created_.
|
nodiscardprivate |
Find an accepted presentation context for a print SOP class.
Tries the specific SOP class first, then falls back to Meta SOP classes.
Definition at line 803 of file print_scu.cpp.
References kcenon::pacs::network::association::accepted_context_id(), kcenon::pacs::services::basic_color_print_meta_sop_class_uid, and kcenon::pacs::services::basic_grayscale_print_meta_sop_class_uid.
Referenced by create_film_box(), create_film_session(), delete_film_box(), delete_film_session(), print_film_box(), query_printer_status(), and set_image_box().


|
nodiscardprivate |
Generate a unique SOP Instance UID.
Definition at line 823 of file print_scu.cpp.
Referenced by create_film_session().

|
nodiscardnoexcept |
Definition at line 779 of file print_scu.cpp.
References images_set_.
|
nodiscardprivatenoexcept |
Get the next message ID for DIMSE operations.
Definition at line 835 of file print_scu.cpp.
References message_id_counter_.
Referenced by create_film_box(), create_film_session(), delete_film_box(), delete_film_session(), print_film_box(), query_printer_status(), and set_image_box().

|
nodiscard |
Print a Film Box (N-ACTION)
Sends N-ACTION to the SCP to initiate printing of the film box.
| assoc | The established association to use |
| film_box_uid | Film Box SOP Instance UID |
Definition at line 440 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, kcenon::pacs::services::basic_film_box_sop_class_uid, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, find_print_context(), kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, next_message_id(), kcenon::pacs::pacs_error(), kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::error_codes::print_unexpected_command, prints_executed_, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::network::association::send_dimse(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
nodiscardnoexcept |
Definition at line 787 of file print_scu.cpp.
References printer_queries_.
|
nodiscardnoexcept |
Definition at line 783 of file print_scu.cpp.
References prints_executed_.
|
nodiscard |
Query printer status (N-GET)
Sends N-GET to the Printer SOP Class to retrieve printer status. The response_data in print_result contains the printer status dataset.
| assoc | The established association to use |
Definition at line 686 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, find_print_context(), kcenon::pacs::core::dicom_dataset::get(), kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, next_message_id(), kcenon::pacs::pacs_error(), kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::error_codes::print_unexpected_command, printer_queries_, kcenon::pacs::services::printer_sop_class_uid, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::services::print_result::response_data, kcenon::pacs::network::association::send_dimse(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
noexcept |
Definition at line 791 of file print_scu.cpp.
References film_boxes_created_, images_set_, printer_queries_, prints_executed_, and sessions_created_.
|
nodiscardnoexcept |
Definition at line 771 of file print_scu.cpp.
References sessions_created_.
|
nodiscard |
Set Image Box pixel data (N-SET)
Sets the pixel data for an Image Box in the film box. Use Basic Grayscale Image Box SOP Class by default.
| assoc | The established association to use |
| image_box_uid | Image Box SOP Instance UID |
| data | Image data to set |
| use_color | Use Basic Color Image Box instead of Grayscale |
Definition at line 592 of file print_scu.cpp.
References kcenon::pacs::error_codes::association_not_established, kcenon::pacs::services::basic_color_image_box_sop_class_uid, kcenon::pacs::services::basic_grayscale_image_box_sop_class_uid, config_, kcenon::pacs::services::print_result::elapsed, kcenon::pacs::services::print_result::error_comment, find_print_context(), kcenon::pacs::services::print_image_data::image_position, kcenon::pacs::services::print_tags::image_position, images_set_, kcenon::pacs::network::association::is_established(), kcenon::pacs::services::print_result::is_success(), logger_, next_message_id(), kcenon::pacs::pacs_error(), kcenon::pacs::services::print_image_data::pixel_data, kcenon::pacs::error_codes::print_invalid_sop_class, kcenon::pacs::error_codes::print_unexpected_command, kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::network::association::send_dimse(), kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::services::print_result::sop_instance_uid, kcenon::pacs::services::print_result::status, kcenon::pacs::services::print_scu_config::timeout, and kcenon::pacs::services::to_string().

|
private |
Configuration.
Definition at line 412 of file print_scu.h.
Referenced by create_film_box(), create_film_session(), delete_film_box(), delete_film_session(), print_film_box(), query_printer_status(), and set_image_box().
|
private |
Definition at line 419 of file print_scu.h.
Referenced by create_film_box(), film_boxes_created(), and reset_statistics().
|
private |
Definition at line 420 of file print_scu.h.
Referenced by images_set(), reset_statistics(), and set_image_box().
|
private |
Logger instance.
Definition at line 409 of file print_scu.h.
Referenced by create_film_box(), create_film_session(), delete_film_box(), delete_film_session(), print_film_box(), query_printer_status(), and set_image_box().
|
private |
Message ID counter.
Definition at line 415 of file print_scu.h.
Referenced by next_message_id().
|
private |
Definition at line 422 of file print_scu.h.
Referenced by printer_queries(), query_printer_status(), and reset_statistics().
|
private |
Definition at line 421 of file print_scu.h.
Referenced by print_film_box(), prints_executed(), and reset_statistics().
|
private |
Statistics.
Definition at line 418 of file print_scu.h.
Referenced by create_film_session(), reset_statistics(), and sessions_created().