PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::web Namespace Reference

Namespaces

namespace  auth
 
namespace  dicomweb
 
namespace  endpoints
 
namespace  storage_commitment
 
namespace  wado_uri
 

Classes

struct  api_error
 Standard API error structure. More...
 
struct  frame_info
 Multi-frame information. More...
 
struct  metadata_request
 Parameters for selective metadata retrieval. More...
 
struct  metadata_response
 Response for selective metadata retrieval. More...
 
class  metadata_service
 Service for selective metadata retrieval and series navigation. More...
 
struct  navigation_info
 Navigation info for an instance. More...
 
class  rest_server
 REST API server for PACS administration and monitoring. More...
 
struct  rest_server_config
 Configuration options for the REST server. More...
 
struct  rest_server_context
 Shared context for REST endpoints. More...
 
struct  sorted_instance
 Instance info for series navigation. More...
 
struct  sorted_instances_response
 Response for sorted instances query. More...
 
struct  tag_value
 DICOM tag value in metadata response. More...
 
struct  thumbnail_cache_entry
 Cached thumbnail entry. More...
 
struct  thumbnail_params
 Parameters for thumbnail generation. More...
 
struct  thumbnail_result
 Result type for thumbnail operations. More...
 
class  thumbnail_service
 Thumbnail generation and caching service. More...
 
struct  voi_lut_info
 VOI LUT information from DICOM. More...
 
struct  window_level_preset
 Window/Level preset. More...
 

Enumerations

enum class  metadata_preset {
  image_display , window_level , patient_info , acquisition ,
  positioning , multiframe
}
 Metadata preset types for common use cases. More...
 
enum class  sort_order { position , instance_number , acquisition_time }
 Sort order for series instances. More...
 
enum class  http_status : std::uint16_t {
  ok = 200 , created = 201 , accepted = 202 , no_content = 204 ,
  bad_request = 400 , unauthorized = 401 , forbidden = 403 , not_found = 404 ,
  method_not_allowed = 405 , conflict = 409 , unprocessable_entity = 422 , internal_server_error = 500 ,
  not_implemented = 501 , service_unavailable = 503
}
 Common HTTP status codes. More...
 

Functions

std::string_view preset_to_string (metadata_preset preset)
 Convert preset enum to string.
 
std::optional< metadata_presetpreset_from_string (std::string_view str)
 Parse preset from string.
 
std::string_view sort_order_to_string (sort_order order)
 Convert sort order enum to string.
 
std::optional< sort_ordersort_order_from_string (std::string_view str)
 Parse sort order from string.
 
std::string to_json (const api_error &error)
 Create JSON error response body.
 
std::string make_error_json (std::string_view code, std::string_view message)
 Create JSON error response body with details.
 
std::string make_success_json (std::string_view message="OK")
 Create success response with optional message.
 
std::string json_escape (std::string_view s)
 Escape a string for JSON.
 

Enumeration Type Documentation

◆ http_status

enum class kcenon::pacs::web::http_status : std::uint16_t
strong

Common HTTP status codes.

Enumerator
ok 
created 
accepted 
no_content 
bad_request 
unauthorized 
forbidden 
not_found 
method_not_allowed 
conflict 
unprocessable_entity 
internal_server_error 
not_implemented 
service_unavailable 

Definition at line 30 of file rest_types.h.

◆ metadata_preset

Metadata preset types for common use cases.

Enumerator
image_display 

Rows, Columns, Bits, PhotometricInterpretation.

window_level 

WindowCenter, WindowWidth, Rescale values.

patient_info 

Patient demographics.

acquisition 

KVP, ExposureTime, SliceThickness.

positioning 

ImagePosition, ImageOrientation, PixelSpacing.

multiframe 

NumberOfFrames, FrameTime.

Definition at line 40 of file metadata_service.h.

40 {
43 patient_info,
47};
@ image_display
Rows, Columns, Bits, PhotometricInterpretation.
@ acquisition
KVP, ExposureTime, SliceThickness.
@ positioning
ImagePosition, ImageOrientation, PixelSpacing.
@ multiframe
NumberOfFrames, FrameTime.
@ window_level
WindowCenter, WindowWidth, Rescale values.

◆ sort_order

enum class kcenon::pacs::web::sort_order
strong

Sort order for series instances.

Enumerator
position 

Sort by ImagePositionPatient/SliceLocation.

instance_number 

Sort by InstanceNumber.

acquisition_time 

Sort by AcquisitionTime.

Definition at line 142 of file metadata_service.h.

142 {
143 position,
144 instance_number,
145 acquisition_time
146};
@ position
Sort by ImagePositionPatient/SliceLocation.

Function Documentation

◆ json_escape()

std::string kcenon::pacs::web::json_escape ( std::string_view s)
inlinenodiscard

Escape a string for JSON.

Parameters
sInput string
Returns
JSON-escaped string

Definition at line 101 of file rest_types.h.

101 {
102 std::string result;
103 result.reserve(s.size() + 10);
104 for (char c : s) {
105 switch (c) {
106 case '"':
107 result += "\\\"";
108 break;
109 case '\\':
110 result += "\\\\";
111 break;
112 case '\b':
113 result += "\\b";
114 break;
115 case '\f':
116 result += "\\f";
117 break;
118 case '\n':
119 result += "\\n";
120 break;
121 case '\r':
122 result += "\\r";
123 break;
124 case '\t':
125 result += "\\t";
126 break;
127 default:
128 result += c;
129 break;
130 }
131 }
132 return result;
133}

Referenced by kcenon::pacs::web::dicomweb::dataset_to_dicom_json(), kcenon::pacs::web::dicomweb::instance_record_to_dicom_json(), kcenon::pacs::web::endpoints::register_jobs_endpoints_impl(), kcenon::pacs::web::endpoints::register_key_image_endpoints_impl(), kcenon::pacs::web::endpoints::register_measurement_endpoints_impl(), kcenon::pacs::web::endpoints::register_remote_nodes_endpoints_impl(), kcenon::pacs::web::endpoints::register_viewer_state_endpoints_impl(), kcenon::pacs::web::dicomweb::series_record_to_dicom_json(), kcenon::pacs::web::dicomweb::study_record_to_dicom_json(), and kcenon::pacs::web::storage_commitment::transaction_to_json().

Here is the caller graph for this function:

◆ make_error_json()

std::string kcenon::pacs::web::make_error_json ( std::string_view code,
std::string_view message )
inlinenodiscard

Create JSON error response body with details.

Parameters
codeError code
messageError message
Returns
JSON string

Definition at line 79 of file rest_types.h.

80 {
81 return std::string(R"({"error":{"code":")") + std::string(code) +
82 R"(","message":")" + std::string(message) + R"("}})";
83}
std::string_view code

References code.

Referenced by kcenon::pacs::web::endpoints::register_association_endpoints_impl(), kcenon::pacs::web::endpoints::register_audit_endpoints_impl(), kcenon::pacs::web::endpoints::register_jobs_endpoints_impl(), kcenon::pacs::web::endpoints::register_key_image_endpoints_impl(), kcenon::pacs::web::endpoints::register_measurement_endpoints_impl(), kcenon::pacs::web::endpoints::register_metadata_endpoints_impl(), kcenon::pacs::web::endpoints::register_patient_endpoints_impl(), kcenon::pacs::web::endpoints::register_remote_nodes_endpoints_impl(), kcenon::pacs::web::endpoints::register_routing_endpoints_impl(), kcenon::pacs::web::endpoints::register_security_endpoints_impl(), kcenon::pacs::web::endpoints::register_series_endpoints_impl(), kcenon::pacs::web::endpoints::register_storage_commitment_endpoints_impl(), kcenon::pacs::web::endpoints::register_study_endpoints_impl(), kcenon::pacs::web::endpoints::register_system_endpoints_impl(), kcenon::pacs::web::endpoints::register_thumbnail_endpoints_impl(), kcenon::pacs::web::endpoints::register_viewer_state_endpoints_impl(), kcenon::pacs::web::endpoints::register_wado_uri_endpoints_impl(), kcenon::pacs::web::endpoints::register_worklist_endpoints_impl(), kcenon::pacs::web::auth::oauth2_middleware::set_forbidden(), and kcenon::pacs::web::auth::oauth2_middleware::set_unauthorized().

Here is the caller graph for this function:

◆ make_success_json()

std::string kcenon::pacs::web::make_success_json ( std::string_view message = "OK")
inlinenodiscard

Create success response with optional message.

Parameters
messageOptional message
Returns
JSON string

Definition at line 91 of file rest_types.h.

91 {
92 return std::string(R"({"status":"success","message":")") +
93 std::string(message) + R"("})";
94}

Referenced by kcenon::pacs::web::endpoints::register_security_endpoints_impl(), kcenon::pacs::web::endpoints::register_study_endpoints_impl(), kcenon::pacs::web::endpoints::register_system_endpoints_impl(), kcenon::pacs::web::endpoints::register_thumbnail_endpoints_impl(), and kcenon::pacs::web::endpoints::register_worklist_endpoints_impl().

Here is the caller graph for this function:

◆ preset_from_string()

std::optional< metadata_preset > kcenon::pacs::web::preset_from_string ( std::string_view str)
nodiscard

Parse preset from string.

Definition at line 52 of file metadata_service.cpp.

52 {
53 if (str == "image_display") {
54 return metadata_preset::image_display;
55 }
56 if (str == "window_level") {
57 return metadata_preset::window_level;
58 }
59 if (str == "patient_info") {
60 return metadata_preset::patient_info;
61 }
62 if (str == "acquisition") {
63 return metadata_preset::acquisition;
64 }
65 if (str == "positioning") {
66 return metadata_preset::positioning;
67 }
68 if (str == "multiframe") {
69 return metadata_preset::multiframe;
70 }
71 return std::nullopt;
72}

References acquisition, image_display, multiframe, patient_info, positioning, and window_level.

◆ preset_to_string()

std::string_view kcenon::pacs::web::preset_to_string ( metadata_preset preset)
nodiscard

Convert preset enum to string.

Definition at line 34 of file metadata_service.cpp.

34 {
35 switch (preset) {
36 case metadata_preset::image_display:
37 return "image_display";
38 case metadata_preset::window_level:
39 return "window_level";
40 case metadata_preset::patient_info:
41 return "patient_info";
42 case metadata_preset::acquisition:
43 return "acquisition";
44 case metadata_preset::positioning:
45 return "positioning";
46 case metadata_preset::multiframe:
47 return "multiframe";
48 }
49 return "unknown";
50}

References acquisition, image_display, multiframe, patient_info, positioning, and window_level.

◆ sort_order_from_string()

std::optional< sort_order > kcenon::pacs::web::sort_order_from_string ( std::string_view str)
nodiscard

Parse sort order from string.

Definition at line 86 of file metadata_service.cpp.

86 {
87 if (str == "position") {
88 return sort_order::position;
89 }
90 if (str == "instance_number") {
91 return sort_order::instance_number;
92 }
93 if (str == "acquisition_time") {
94 return sort_order::acquisition_time;
95 }
96 return std::nullopt;
97}

References acquisition_time, instance_number, and position.

Referenced by kcenon::pacs::web::endpoints::register_metadata_endpoints_impl().

Here is the caller graph for this function:

◆ sort_order_to_string()

std::string_view kcenon::pacs::web::sort_order_to_string ( sort_order order)
nodiscard

Convert sort order enum to string.

Definition at line 74 of file metadata_service.cpp.

74 {
75 switch (order) {
76 case sort_order::position:
77 return "position";
78 case sort_order::instance_number:
79 return "instance_number";
80 case sort_order::acquisition_time:
81 return "acquisition_time";
82 }
83 return "unknown";
84}

References acquisition_time, instance_number, and position.

◆ to_json()

std::string kcenon::pacs::web::to_json ( const api_error & error)
inlinenodiscard

Create JSON error response body.

Parameters
errorThe API error
Returns
JSON string

Definition at line 67 of file rest_types.h.

67 {
68 std::string json = R"({"error":{"code":")" + error.code + R"(","message":")" +
69 error.message + R"("})";
70 return json;
71}