PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
dimse_message.h File Reference

DIMSE message encoding and decoding. More...

#include "command_field.h"
#include "status_codes.h"
#include <kcenon/pacs/core/dicom_dataset.h>
#include <kcenon/pacs/core/dicom_tag.h>
#include <kcenon/pacs/core/result.h>
#include <kcenon/pacs/encoding/transfer_syntax.h>
#include <cstdint>
#include <functional>
#include <optional>
#include <span>
#include <string>
#include <string_view>
#include <variant>
#include <vector>
Include dependency graph for dimse_message.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  kcenon::pacs::network::dimse::dimse_message
 

Namespaces

namespace  kcenon
 
namespace  kcenon::pacs
 
namespace  kcenon::pacs::network
 
namespace  kcenon::pacs::network::dimse
 

Typedefs

template<typename T >
using kcenon::pacs::network::dimse::dimse_result = kcenon::pacs::Result<T>
 Result type for DIMSE operations using standardized kcenon::pacs::Result<T>
 

Enumerations

enum class  kcenon::pacs::network::dimse::dimse_error {
  kcenon::pacs::network::dimse::success = 0 , kcenon::pacs::network::dimse::invalid_command_set , kcenon::pacs::network::dimse::missing_required_field , kcenon::pacs::network::dimse::invalid_data_format ,
  kcenon::pacs::network::dimse::encoding_error , kcenon::pacs::network::dimse::decoding_error
}
 Error codes for DIMSE message operations. More...
 

Functions

constexpr std::string_view kcenon::pacs::network::dimse::to_string (dimse_error err) noexcept
 Get error description.
 
auto kcenon::pacs::network::dimse::make_c_echo_rq (uint16_t message_id, std::string_view sop_class_uid="1.2.840.10008.1.1") -> dimse_message
 Create a C-ECHO request message.
 
auto kcenon::pacs::network::dimse::make_c_echo_rsp (uint16_t message_id_responded_to, status_code status=status_success, std::string_view sop_class_uid="1.2.840.10008.1.1") -> dimse_message
 Create a C-ECHO response message.
 
auto kcenon::pacs::network::dimse::make_c_store_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid, uint16_t priority=priority_medium) -> dimse_message
 Create a C-STORE request message.
 
auto kcenon::pacs::network::dimse::make_c_store_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, status_code status=status_success) -> dimse_message
 Create a C-STORE response message.
 
auto kcenon::pacs::network::dimse::make_c_find_rq (uint16_t message_id, std::string_view sop_class_uid, uint16_t priority=priority_medium) -> dimse_message
 Create a C-FIND request message.
 
auto kcenon::pacs::network::dimse::make_c_find_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, status_code status) -> dimse_message
 Create a C-FIND response message.
 
auto kcenon::pacs::network::dimse::make_n_create_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid="") -> dimse_message
 Create an N-CREATE request message.
 
auto kcenon::pacs::network::dimse::make_n_create_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, status_code status=status_success) -> dimse_message
 Create an N-CREATE response message.
 
auto kcenon::pacs::network::dimse::make_n_set_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid) -> dimse_message
 Create an N-SET request message.
 
auto kcenon::pacs::network::dimse::make_n_set_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, status_code status=status_success) -> dimse_message
 Create an N-SET response message.
 
auto kcenon::pacs::network::dimse::make_n_get_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid, const std::vector< core::dicom_tag > &attribute_tags={}) -> dimse_message
 Create an N-GET request message.
 
auto kcenon::pacs::network::dimse::make_n_get_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, status_code status=status_success) -> dimse_message
 Create an N-GET response message.
 
auto kcenon::pacs::network::dimse::make_n_event_report_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid, uint16_t event_type_id) -> dimse_message
 Create an N-EVENT-REPORT request message.
 
auto kcenon::pacs::network::dimse::make_n_event_report_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, uint16_t event_type_id, status_code status=status_success) -> dimse_message
 Create an N-EVENT-REPORT response message.
 
auto kcenon::pacs::network::dimse::make_n_action_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid, uint16_t action_type_id) -> dimse_message
 Create an N-ACTION request message.
 
auto kcenon::pacs::network::dimse::make_n_action_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, uint16_t action_type_id, status_code status=status_success) -> dimse_message
 Create an N-ACTION response message.
 
auto kcenon::pacs::network::dimse::make_n_delete_rq (uint16_t message_id, std::string_view sop_class_uid, std::string_view sop_instance_uid) -> dimse_message
 Create an N-DELETE request message.
 
auto kcenon::pacs::network::dimse::make_n_delete_rsp (uint16_t message_id_responded_to, std::string_view sop_class_uid, std::string_view sop_instance_uid, status_code status=status_success) -> dimse_message
 Create an N-DELETE response message.
 

Variables

DIMSE Command Tags
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_command_group_length {0x0000, 0x0000}
 Command Group Length (0000,0000) - UL.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_affected_sop_class_uid {0x0000, 0x0002}
 Affected SOP Class UID (0000,0002) - UI.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_requested_sop_class_uid {0x0000, 0x0003}
 Requested SOP Class UID (0000,0003) - UI.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_command_field {0x0000, 0x0100}
 Command Field (0000,0100) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_message_id {0x0000, 0x0110}
 Message ID (0000,0110) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_message_id_responded_to {0x0000, 0x0120}
 Message ID Being Responded To (0000,0120) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_move_destination {0x0000, 0x0600}
 Move Destination (0000,0600) - AE.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_priority {0x0000, 0x0700}
 Priority (0000,0700) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_command_data_set_type {0x0000, 0x0800}
 Command Data Set Type (0000,0800) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_status {0x0000, 0x0900}
 Status (0000,0900) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_offending_element {0x0000, 0x0901}
 Offending Element (0000,0901) - AT.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_error_comment {0x0000, 0x0902}
 Error Comment (0000,0902) - LO.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_error_id {0x0000, 0x0903}
 Error ID (0000,0903) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_affected_sop_instance_uid {0x0000, 0x1000}
 Affected SOP Instance UID (0000,1000) - UI.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_requested_sop_instance_uid {0x0000, 0x1001}
 Requested SOP Instance UID (0000,1001) - UI.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_event_type_id {0x0000, 0x1002}
 Event Type ID (0000,1002) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_attribute_identifier_list {0x0000, 0x1005}
 Attribute Identifier List (0000,1005) - AT.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_action_type_id {0x0000, 0x1008}
 Action Type ID (0000,1008) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_number_of_remaining_subops {0x0000, 0x1020}
 Number of Remaining Sub-operations (0000,1020) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_number_of_completed_subops {0x0000, 0x1021}
 Number of Completed Sub-operations (0000,1021) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_number_of_failed_subops {0x0000, 0x1022}
 Number of Failed Sub-operations (0000,1022) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_number_of_warning_subops {0x0000, 0x1023}
 Number of Warning Sub-operations (0000,1023) - US.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_move_originator_aet {0x0000, 0x1030}
 Move Originator Application Entity Title (0000,1030) - AE.
 
constexpr core::dicom_tag kcenon::pacs::network::dimse::tag_move_originator_message_id {0x0000, 0x1031}
 Move Originator Message ID (0000,1031) - US.
 
Command Data Set Type Values
constexpr uint16_t kcenon::pacs::network::dimse::command_data_set_type_null = 0x0101
 Null value indicating no data set present.
 
constexpr uint16_t kcenon::pacs::network::dimse::command_data_set_type_present = 0x0001
 Value indicating data set is present (any value other than 0x0101)
 
Priority Values
constexpr uint16_t kcenon::pacs::network::dimse::priority_low = 0x0002
 Low priority.
 
constexpr uint16_t kcenon::pacs::network::dimse::priority_medium = 0x0000
 Medium priority.
 
constexpr uint16_t kcenon::pacs::network::dimse::priority_high = 0x0001
 High priority.
 

Detailed Description

DIMSE message encoding and decoding.

This file provides the dimse_message class for constructing and parsing DICOM Message Service Element (DIMSE) messages.

See also
DICOM PS3.7 Section 6 - Message Structure
DICOM PS3.7 Section 9 - DIMSE-C Services
DICOM PS3.7 Section 10 - DIMSE-N Services
Author
kcenon
Since
1.0.0

Definition in file dimse_message.h.