|
PACS System 0.1.0
PACS DICOM system library
|
Print Management SCP service. More...
#include <print_scp.h>


Public Member Functions | |
| print_scp (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct Print SCP with optional logger. | |
| ~print_scp () override=default | |
| void | set_session_handler (print_session_handler handler) |
| Set handler for film session creation. | |
| void | set_print_handler (print_action_handler handler) |
| Set handler for print action (film box print) | |
| void | set_printer_status_handler (printer_status_handler handler) |
| Set handler for printer status query. | |
| std::vector< std::string > | supported_sop_classes () const override |
| Get supported SOP Class UIDs. | |
| network::Result< std::monostate > | handle_message (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) override |
| Handle an incoming DIMSE-N message. | |
| std::string_view | service_name () const noexcept override |
| Get the service name. | |
| 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 |
Public Member Functions inherited from kcenon::pacs::services::scp_service | |
| scp_service (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct SCP service with optional logger. | |
| virtual | ~scp_service ()=default |
| scp_service (const scp_service &)=delete | |
| scp_service & | operator= (const scp_service &)=delete |
| scp_service (scp_service &&)=default | |
| scp_service & | operator= (scp_service &&)=default |
| void | set_logger (std::shared_ptr< di::ILogger > logger) |
| Set the logger instance. | |
| const std::shared_ptr< di::ILogger > & | logger () const noexcept |
| Get the current logger instance. | |
| bool | supports_sop_class (std::string_view sop_class_uid) const |
| Check if this service supports a specific SOP Class. | |
Private Member Functions | |
| network::Result< std::monostate > | handle_n_create (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | handle_n_set (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | handle_n_get (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | handle_n_action (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | handle_n_delete (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | create_film_session (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | create_film_box (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| network::Result< std::monostate > | send_response (network::association &assoc, uint8_t context_id, network::dimse::command_field response_type, uint16_t message_id, std::string_view sop_class_uid, const std::string &sop_instance_uid, network::dimse::status_code status) |
| auto | generate_uid () -> std::string |
Private Attributes | |
| print_session_handler | session_handler_ |
| print_action_handler | print_handler_ |
| printer_status_handler | printer_status_handler_ |
| std::unordered_map< std::string, film_session > | sessions_ |
| Active film sessions indexed by SOP Instance UID. | |
| std::unordered_map< std::string, film_box > | film_boxes_ |
| Active film boxes indexed by SOP Instance UID. | |
| std::unordered_map< std::string, image_box > | image_boxes_ |
| Active image boxes indexed by SOP Instance UID. | |
| std::mutex | mutex_ |
| Mutex for state management. | |
| std::atomic< uint32_t > | uid_counter_ {0} |
| UID generation 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} |
Additional Inherited Members | |
Protected Attributes inherited from kcenon::pacs::services::scp_service | |
| std::shared_ptr< di::ILogger > | logger_ |
| Logger instance for service logging. | |
Print Management SCP service.
Handles DICOM print requests for Film Session, Film Box, Image Box, and Printer SOP Classes.
Definition at line 239 of file print_scp.h.
|
explicit |
Construct Print SCP with optional logger.
| logger | Logger instance for service logging |
Definition at line 27 of file print_scp.cpp.
|
overridedefault |
|
nodiscardprivate |
Definition at line 580 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_instance_uid(), kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_grayscale_image_box_sop_class_uid, kcenon::pacs::services::film_box::data, kcenon::pacs::network::dimse::dimse_message::dataset(), kcenon::pacs::services::image_box::film_box_uid, film_boxes_, film_boxes_created_, kcenon::pacs::services::film_box::film_orientation, kcenon::pacs::services::print_tags::film_orientation, kcenon::pacs::services::film_box::film_session_uid, kcenon::pacs::services::film_box::film_size_id, kcenon::pacs::services::print_tags::film_size_id, generate_uid(), kcenon::pacs::core::dicom_dataset::get_or_create_sequence(), kcenon::pacs::network::dimse::dimse_message::has_dataset(), kcenon::pacs::services::film_box::image_box_uids, image_boxes_, kcenon::pacs::services::film_box::image_display_format, kcenon::pacs::services::print_tags::image_display_format, kcenon::pacs::services::image_box::image_position, kcenon::pacs::network::dimse::dimse_message::message_id(), mutex_, kcenon::pacs::services::print_tags::referenced_image_box_sequence, kcenon::pacs::core::tags::referenced_sop_class_uid, kcenon::pacs::core::tags::referenced_sop_instance_uid, kcenon::pacs::network::association::send_dimse(), sessions_, kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::services::film_box::sop_instance_uid, and kcenon::pacs::services::image_box::sop_instance_uid.
Referenced by handle_n_create().


|
nodiscardprivate |
Definition at line 515 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_instance_uid(), kcenon::pacs::services::basic_film_session_sop_class_uid, kcenon::pacs::services::film_session::data, kcenon::pacs::network::dimse::dimse_message::dataset(), kcenon::pacs::services::film_session::film_destination, kcenon::pacs::services::print_tags::film_destination, generate_uid(), kcenon::pacs::network::dimse::dimse_message::has_dataset(), kcenon::pacs::services::film_session::medium_type, kcenon::pacs::services::print_tags::medium_type, kcenon::pacs::network::dimse::dimse_message::message_id(), mutex_, kcenon::pacs::services::film_session::number_of_copies, kcenon::pacs::services::print_tags::number_of_copies, kcenon::pacs::services::film_session::print_priority, kcenon::pacs::services::print_tags::print_priority, send_response(), session_handler_, sessions_, sessions_created_, and kcenon::pacs::services::film_session::sop_instance_uid.
Referenced by handle_n_create().


|
nodiscardnoexcept |
Definition at line 100 of file print_scp.cpp.
References film_boxes_created_.
|
nodiscardprivate |
Definition at line 706 of file print_scp.cpp.
Referenced by create_film_box(), and create_film_session().

|
nodiscardoverridevirtual |
Handle an incoming DIMSE-N message.
Routes N-CREATE, N-SET, N-GET, N-ACTION, N-DELETE to appropriate handlers based on the affected SOP class.
Implements kcenon::pacs::services::scp_service.
Definition at line 62 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::command(), handle_n_action(), handle_n_create(), handle_n_delete(), handle_n_get(), handle_n_set(), kcenon::pacs::pacs_void_error(), kcenon::pacs::error_codes::print_unexpected_command, and kcenon::pacs::services::to_string().

|
nodiscardprivate |
Definition at line 356 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::action_type_id(), kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::network::dimse::dimse_message::affected_sop_instance_uid(), kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, film_boxes_, kcenon::pacs::network::dimse::dimse_message::message_id(), mutex_, print_handler_, prints_executed_, kcenon::pacs::network::association::send_dimse(), send_response(), and sessions_.
Referenced by handle_message().


|
nodiscardprivate |
Definition at line 128 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, create_film_box(), create_film_session(), kcenon::pacs::network::dimse::dimse_message::message_id(), and send_response().
Referenced by handle_message().


|
nodiscardprivate |
Definition at line 435 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::network::dimse::dimse_message::affected_sop_instance_uid(), kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, film_boxes_, image_boxes_, kcenon::pacs::network::dimse::dimse_message::message_id(), mutex_, send_response(), and sessions_.
Referenced by handle_message().


|
nodiscardprivate |
Definition at line 288 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::network::dimse::dimse_message::affected_sop_instance_uid(), kcenon::pacs::network::dimse::dimse_message::command_set(), kcenon::pacs::network::dimse::dimse_message::message_id(), kcenon::pacs::services::print_tags::printer_name, printer_queries_, kcenon::pacs::services::printer_sop_class_uid, printer_status_handler_, kcenon::pacs::services::print_tags::printer_status_info, kcenon::pacs::services::print_tags::printer_status_tag, kcenon::pacs::network::association::send_dimse(), send_response(), kcenon::pacs::core::dicom_dataset::set_string(), and kcenon::pacs::services::to_string().
Referenced by handle_message().


|
nodiscardprivate |
Definition at line 154 of file print_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::network::dimse::dimse_message::affected_sop_instance_uid(), kcenon::pacs::services::basic_color_image_box_sop_class_uid, kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, kcenon::pacs::services::basic_grayscale_image_box_sop_class_uid, kcenon::pacs::network::dimse::dimse_message::command_set(), kcenon::pacs::network::dimse::dimse_message::dataset(), film_boxes_, kcenon::pacs::services::print_tags::film_orientation, kcenon::pacs::services::print_tags::film_size_id, kcenon::pacs::network::dimse::dimse_message::has_dataset(), image_boxes_, kcenon::pacs::services::print_tags::image_display_format, images_set_, kcenon::pacs::services::print_tags::medium_type, kcenon::pacs::network::dimse::dimse_message::message_id(), mutex_, kcenon::pacs::services::print_tags::number_of_copies, kcenon::pacs::services::print_tags::print_priority, send_response(), and sessions_.
Referenced by handle_message().


|
nodiscardnoexcept |
Definition at line 104 of file print_scp.cpp.
References images_set_.
|
nodiscardnoexcept |
Definition at line 112 of file print_scp.cpp.
References printer_queries_.
|
nodiscardnoexcept |
Definition at line 108 of file print_scp.cpp.
References prints_executed_.
|
noexcept |
Definition at line 116 of file print_scp.cpp.
References film_boxes_created_, images_set_, printer_queries_, prints_executed_, and sessions_created_.
|
nodiscardprivate |
Definition at line 679 of file print_scp.cpp.
References kcenon::pacs::network::association::send_dimse().
Referenced by create_film_session(), handle_n_action(), handle_n_create(), handle_n_delete(), handle_n_get(), and handle_n_set().


|
nodiscardoverridevirtualnoexcept |
Get the service name.
Implements kcenon::pacs::services::scp_service.
Definition at line 88 of file print_scp.cpp.
|
nodiscardnoexcept |
Definition at line 96 of file print_scp.cpp.
References sessions_created_.
| void kcenon::pacs::services::print_scp::set_print_handler | ( | print_action_handler | handler | ) |
Set handler for print action (film box print)
Definition at line 38 of file print_scp.cpp.
References print_handler_.
| void kcenon::pacs::services::print_scp::set_printer_status_handler | ( | printer_status_handler | handler | ) |
Set handler for printer status query.
Definition at line 42 of file print_scp.cpp.
References printer_status_handler_.
| void kcenon::pacs::services::print_scp::set_session_handler | ( | print_session_handler | handler | ) |
Set handler for film session creation.
Definition at line 34 of file print_scp.cpp.
References session_handler_.
|
nodiscardoverridevirtual |
Get supported SOP Class UIDs.
Implements kcenon::pacs::services::scp_service.
Definition at line 50 of file print_scp.cpp.
References kcenon::pacs::services::basic_color_image_box_sop_class_uid, kcenon::pacs::services::basic_color_print_meta_sop_class_uid, kcenon::pacs::services::basic_film_box_sop_class_uid, kcenon::pacs::services::basic_film_session_sop_class_uid, kcenon::pacs::services::basic_grayscale_image_box_sop_class_uid, kcenon::pacs::services::basic_grayscale_print_meta_sop_class_uid, and kcenon::pacs::services::printer_sop_class_uid.
|
private |
Active film boxes indexed by SOP Instance UID.
Definition at line 388 of file print_scp.h.
Referenced by create_film_box(), handle_n_action(), handle_n_delete(), and handle_n_set().
|
private |
Definition at line 401 of file print_scp.h.
Referenced by create_film_box(), film_boxes_created(), and reset_statistics().
|
private |
Active image boxes indexed by SOP Instance UID.
Definition at line 391 of file print_scp.h.
Referenced by create_film_box(), handle_n_delete(), and handle_n_set().
|
private |
Definition at line 402 of file print_scp.h.
Referenced by handle_n_set(), images_set(), and reset_statistics().
|
mutableprivate |
Mutex for state management.
Definition at line 394 of file print_scp.h.
Referenced by create_film_box(), create_film_session(), handle_n_action(), handle_n_delete(), and handle_n_set().
|
private |
Definition at line 381 of file print_scp.h.
Referenced by handle_n_action(), and set_print_handler().
|
private |
Definition at line 404 of file print_scp.h.
Referenced by handle_n_get(), printer_queries(), and reset_statistics().
|
private |
Definition at line 382 of file print_scp.h.
Referenced by handle_n_get(), and set_printer_status_handler().
|
private |
Definition at line 403 of file print_scp.h.
Referenced by handle_n_action(), prints_executed(), and reset_statistics().
|
private |
Definition at line 380 of file print_scp.h.
Referenced by create_film_session(), and set_session_handler().
|
private |
Active film sessions indexed by SOP Instance UID.
Definition at line 385 of file print_scp.h.
Referenced by create_film_box(), create_film_session(), handle_n_action(), handle_n_delete(), and handle_n_set().
|
private |
Statistics.
Definition at line 400 of file print_scp.h.
Referenced by create_film_session(), reset_statistics(), and sessions_created().
|
private |