PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
query_scu::query_builder Class Reference

#include <query_builder.h>

Collaboration diagram for query_scu::query_builder:
Collaboration graph

Public Types

using query_level = kcenon::pacs::services::query_level
 

Public Member Functions

 query_builder ()=default
 
query_builderlevel (query_level lvl)
 Set the query/retrieve level.
 
query_builderpatient_name (std::string_view name)
 Set patient name search criteria (supports wildcards)
 
query_builderpatient_id (std::string_view id)
 Set patient ID search criteria.
 
query_builderpatient_birth_date (std::string_view date)
 Set patient birth date criteria.
 
query_builderpatient_sex (std::string_view sex)
 Set patient sex criteria.
 
query_builderstudy_date (std::string_view date)
 Set study date criteria (supports ranges)
 
query_builderstudy_time (std::string_view time)
 Set study time criteria.
 
query_builderaccession_number (std::string_view accession)
 Set accession number criteria.
 
query_builderstudy_instance_uid (std::string_view uid)
 Set study instance UID criteria.
 
query_builderstudy_id (std::string_view id)
 Set study ID criteria.
 
query_builderstudy_description (std::string_view desc)
 Set study description criteria.
 
query_buildermodality (std::string_view mod)
 Set modality criteria.
 
query_builderseries_instance_uid (std::string_view uid)
 Set series instance UID criteria.
 
query_builderseries_number (std::string_view num)
 Set series number criteria.
 
query_builderseries_description (std::string_view desc)
 Set series description criteria.
 
query_buildersop_instance_uid (std::string_view uid)
 Set SOP instance UID criteria.
 
query_builderinstance_number (std::string_view num)
 Set instance number criteria.
 
kcenon::pacs::core::dicom_dataset build () const
 Build the query dataset.
 

Private Member Functions

void add_patient_keys (kcenon::pacs::core::dicom_dataset &ds) const
 
void add_study_keys (kcenon::pacs::core::dicom_dataset &ds) const
 
void add_series_keys (kcenon::pacs::core::dicom_dataset &ds) const
 
void add_instance_keys (kcenon::pacs::core::dicom_dataset &ds) const
 

Private Attributes

query_level level_ {query_level::study}
 
std::string patient_name_
 
std::string patient_id_
 
std::string patient_birth_date_
 
std::string patient_sex_
 
std::string study_date_
 
std::string study_time_
 
std::string accession_number_
 
std::string study_instance_uid_
 
std::string study_id_
 
std::string study_description_
 
std::string modality_
 
std::string series_instance_uid_
 
std::string series_number_
 
std::string series_description_
 
std::string sop_instance_uid_
 
std::string instance_number_
 

Detailed Description

Examples
query_scu/main.cpp.

Definition at line 42 of file query_builder.h.

Member Typedef Documentation

◆ query_level

Constructor & Destructor Documentation

◆ query_builder()

query_scu::query_builder::query_builder ( )
default

Member Function Documentation

◆ accession_number()

query_builder & query_scu::query_builder::accession_number ( std::string_view accession)
inline

Set accession number criteria.

Parameters
accessionAccession number pattern
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 124 of file query_builder.h.

124 {
125 accession_number_ = accession;
126 return *this;
127 }

References accession_number_.

◆ add_instance_keys()

void query_scu::query_builder::add_instance_keys ( kcenon::pacs::core::dicom_dataset & ds) const
inlineprivate
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 354 of file query_builder.h.

354 {
355 using namespace kcenon::pacs::core;
356 using namespace kcenon::pacs::encoding;
357
358 // SOP Instance UID - required for Instance level
359 ds.set_string(tags::sop_instance_uid, vr_type::UI, sop_instance_uid_);
360
361 // SOP Class UID (return key)
362 ds.set_string(tags::sop_class_uid, vr_type::UI, "");
363
364 // Instance Number
365 if (!instance_number_.empty()) {
366 ds.set_string(tags::instance_number, vr_type::IS, instance_number_);
367 } else {
368 ds.set_string(tags::instance_number, vr_type::IS, "");
369 }
370 }
void set_string(dicom_tag tag, encoding::vr_type vr, std::string_view value)
Set a string value for the given tag.

References instance_number_, kcenon::pacs::core::dicom_dataset::set_string(), and sop_instance_uid_.

Referenced by build().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_patient_keys()

void query_scu::query_builder::add_patient_keys ( kcenon::pacs::core::dicom_dataset & ds) const
inlineprivate
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 262 of file query_builder.h.

262 {
263 using namespace kcenon::pacs::core;
264 using namespace kcenon::pacs::encoding;
265
266 // Patient Name - always include as return key
267 ds.set_string(tags::patient_name, vr_type::PN, patient_name_);
268
269 // Patient ID
270 ds.set_string(tags::patient_id, vr_type::LO, patient_id_);
271
272 // Patient Birth Date
273 if (!patient_birth_date_.empty()) {
274 ds.set_string(tags::patient_birth_date, vr_type::DA, patient_birth_date_);
275 } else {
276 ds.set_string(tags::patient_birth_date, vr_type::DA, "");
277 }
278
279 // Patient Sex
280 if (!patient_sex_.empty()) {
281 ds.set_string(tags::patient_sex, vr_type::CS, patient_sex_);
282 } else {
283 ds.set_string(tags::patient_sex, vr_type::CS, "");
284 }
285 }

References patient_birth_date_, patient_id_, patient_name_, patient_sex_, and kcenon::pacs::core::dicom_dataset::set_string().

Referenced by build().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_series_keys()

void query_scu::query_builder::add_series_keys ( kcenon::pacs::core::dicom_dataset & ds) const
inlineprivate
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 330 of file query_builder.h.

330 {
331 using namespace kcenon::pacs::core;
332 using namespace kcenon::pacs::encoding;
333
334 // Series Instance UID - required for Series level
335 ds.set_string(tags::series_instance_uid, vr_type::UI, series_instance_uid_);
336
337 // Modality
338 ds.set_string(tags::modality, vr_type::CS, modality_);
339
340 // Series Number
341 if (!series_number_.empty()) {
342 ds.set_string(tags::series_number, vr_type::IS, series_number_);
343 } else {
344 ds.set_string(tags::series_number, vr_type::IS, "");
345 }
346
347 // Series Description
348 ds.set_string(tags::series_description, vr_type::LO, series_description_);
349
350 // Number of Series Related Instances (return key)
351 ds.set_string(tags::number_of_series_related_instances, vr_type::IS, "");
352 }

References modality_, series_description_, series_instance_uid_, series_number_, and kcenon::pacs::core::dicom_dataset::set_string().

Referenced by build().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_study_keys()

void query_scu::query_builder::add_study_keys ( kcenon::pacs::core::dicom_dataset & ds) const
inlineprivate
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 287 of file query_builder.h.

287 {
288 using namespace kcenon::pacs::core;
289 using namespace kcenon::pacs::encoding;
290
291 // Study Instance UID - required for Study level
292 ds.set_string(tags::study_instance_uid, vr_type::UI, study_instance_uid_);
293
294 // Study Date
295 ds.set_string(tags::study_date, vr_type::DA, study_date_);
296
297 // Study Time
298 if (!study_time_.empty()) {
299 ds.set_string(tags::study_time, vr_type::TM, study_time_);
300 } else {
301 ds.set_string(tags::study_time, vr_type::TM, "");
302 }
303
304 // Accession Number
305 ds.set_string(tags::accession_number, vr_type::SH, accession_number_);
306
307 // Study ID
308 if (!study_id_.empty()) {
309 ds.set_string(tags::study_id, vr_type::SH, study_id_);
310 } else {
311 ds.set_string(tags::study_id, vr_type::SH, "");
312 }
313
314 // Study Description
315 ds.set_string(tags::study_description, vr_type::LO, study_description_);
316
317 // Referring Physician's Name (return key)
318 ds.set_string(tags::referring_physician_name, vr_type::PN, "");
319
320 // Number of Study Related Series (return key)
321 ds.set_string(tags::number_of_study_related_series, vr_type::IS, "");
322
323 // Number of Study Related Instances (return key)
324 ds.set_string(tags::number_of_study_related_instances, vr_type::IS, "");
325
326 // Modalities in Study (return key)
327 ds.set_string(tags::modalities_in_study, vr_type::CS, modality_);
328 }

References accession_number_, modality_, kcenon::pacs::core::dicom_dataset::set_string(), study_date_, study_description_, study_id_, study_instance_uid_, and study_time_.

Referenced by build().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build()

kcenon::pacs::core::dicom_dataset query_scu::query_builder::build ( ) const
inlinenodiscard

Build the query dataset.

Returns
Configured DICOM dataset ready for C-FIND
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 226 of file query_builder.h.

226 {
227 using namespace kcenon::pacs::core;
228 using namespace kcenon::pacs::encoding;
229
230 dicom_dataset ds;
231
232 // Set Query/Retrieve Level (required)
233 ds.set_string(tags::query_retrieve_level, vr_type::CS,
235
236 // Add return keys and search criteria based on level
237 switch (level_) {
238 case query_level::patient:
240 break;
241 case query_level::study:
243 add_study_keys(ds);
244 break;
245 case query_level::series:
247 add_study_keys(ds);
248 add_series_keys(ds);
249 break;
250 case query_level::image:
252 add_study_keys(ds);
253 add_series_keys(ds);
255 break;
256 }
257
258 return ds;
259 }
void add_instance_keys(kcenon::pacs::core::dicom_dataset &ds) const
void add_study_keys(kcenon::pacs::core::dicom_dataset &ds) const
void add_series_keys(kcenon::pacs::core::dicom_dataset &ds) const
void add_patient_keys(kcenon::pacs::core::dicom_dataset &ds) const
auto to_string(mpps_status status) -> std::string_view
Convert mpps_status to DICOM string representation.
Definition mpps_scp.h:60

References add_instance_keys(), add_patient_keys(), add_series_keys(), add_study_keys(), level_, and kcenon::pacs::services::to_string().

Here is the call graph for this function:

◆ instance_number()

query_builder & query_scu::query_builder::instance_number ( std::string_view num)
inline

Set instance number criteria.

Parameters
numInstance number
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 213 of file query_builder.h.

213 {
215 return *this;
216 }

References instance_number_.

◆ level()

query_builder & query_scu::query_builder::level ( query_level lvl)
inline

Set the query/retrieve level.

Parameters
lvlThe query level (PATIENT, STUDY, SERIES, IMAGE)
Returns
Reference to this builder for chaining
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 53 of file query_builder.h.

53 {
54 level_ = lvl;
55 return *this;
56 }

References level_.

◆ modality()

query_builder & query_scu::query_builder::modality ( std::string_view mod)
inline

Set modality criteria.

Parameters
modModality code (CT, MR, US, XR, etc.)
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 164 of file query_builder.h.

164 {
165 modality_ = mod;
166 return *this;
167 }

References modality_.

◆ patient_birth_date()

query_builder & query_scu::query_builder::patient_birth_date ( std::string_view date)
inline

Set patient birth date criteria.

Parameters
dateBirth date in DICOM DA format (YYYYMMDD or range)
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 84 of file query_builder.h.

84 {
86 return *this;
87 }

References patient_birth_date_.

◆ patient_id()

query_builder & query_scu::query_builder::patient_id ( std::string_view id)
inline

Set patient ID search criteria.

Parameters
idPatient ID pattern
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 75 of file query_builder.h.

75 {
77 return *this;
78 }
@ id
Implant Displaced (alternate code)

References patient_id_.

◆ patient_name()

query_builder & query_scu::query_builder::patient_name ( std::string_view name)
inline

Set patient name search criteria (supports wildcards)

Parameters
namePatient name pattern (e.g., "DOE^JOHN" or "DOE^*")
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 66 of file query_builder.h.

66 {
68 return *this;
69 }
std::string_view name

References name, and patient_name_.

◆ patient_sex()

query_builder & query_scu::query_builder::patient_sex ( std::string_view sex)
inline

Set patient sex criteria.

Parameters
sexPatient sex (M, F, O)
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 93 of file query_builder.h.

93 {
94 patient_sex_ = sex;
95 return *this;
96 }

References patient_sex_.

◆ series_description()

query_builder & query_scu::query_builder::series_description ( std::string_view desc)
inline

Set series description criteria.

Parameters
descSeries description pattern
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 191 of file query_builder.h.

191 {
192 series_description_ = desc;
193 return *this;
194 }

References series_description_.

◆ series_instance_uid()

query_builder & query_scu::query_builder::series_instance_uid ( std::string_view uid)
inline

Set series instance UID criteria.

Parameters
uidSeries Instance UID
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 173 of file query_builder.h.

173 {
175 return *this;
176 }
std::string_view uid

References series_instance_uid_, and uid.

◆ series_number()

query_builder & query_scu::query_builder::series_number ( std::string_view num)
inline

Set series number criteria.

Parameters
numSeries number
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 182 of file query_builder.h.

182 {
184 return *this;
185 }

References series_number_.

◆ sop_instance_uid()

query_builder & query_scu::query_builder::sop_instance_uid ( std::string_view uid)
inline

Set SOP instance UID criteria.

Parameters
uidSOP Instance UID
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 204 of file query_builder.h.

204 {
206 return *this;
207 }

References sop_instance_uid_, and uid.

◆ study_date()

query_builder & query_scu::query_builder::study_date ( std::string_view date)
inline

Set study date criteria (supports ranges)

Parameters
dateStudy date in DICOM DA format (YYYYMMDD, YYYYMMDD-YYYYMMDD)
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 106 of file query_builder.h.

106 {
108 return *this;
109 }

References study_date_.

◆ study_description()

query_builder & query_scu::query_builder::study_description ( std::string_view desc)
inline

Set study description criteria.

Parameters
descStudy description pattern
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 151 of file query_builder.h.

151 {
152 study_description_ = desc;
153 return *this;
154 }

References study_description_.

◆ study_id()

query_builder & query_scu::query_builder::study_id ( std::string_view id)
inline

Set study ID criteria.

Parameters
idStudy ID pattern
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 142 of file query_builder.h.

142 {
143 study_id_ = id;
144 return *this;
145 }

References study_id_.

◆ study_instance_uid()

query_builder & query_scu::query_builder::study_instance_uid ( std::string_view uid)
inline

Set study instance UID criteria.

Parameters
uidStudy Instance UID
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 133 of file query_builder.h.

133 {
135 return *this;
136 }

References study_instance_uid_, and uid.

◆ study_time()

query_builder & query_scu::query_builder::study_time ( std::string_view time)
inline

Set study time criteria.

Parameters
timeStudy time in DICOM TM format
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h, and query_scu/main.cpp.

Definition at line 115 of file query_builder.h.

115 {
117 return *this;
118 }

References study_time_.

Member Data Documentation

◆ accession_number_

std::string query_scu::query_builder::accession_number_
private

◆ instance_number_

std::string query_scu::query_builder::instance_number_
private

◆ level_

query_level query_scu::query_builder::level_ {query_level::study}
private
Examples
/home/runner/work/pacs_system/pacs_system/examples/query_scu/query_builder.h.

Definition at line 373 of file query_builder.h.

373{query_level::study};

Referenced by build(), and level().

◆ modality_

std::string query_scu::query_builder::modality_
private

◆ patient_birth_date_

std::string query_scu::query_builder::patient_birth_date_
private

◆ patient_id_

std::string query_scu::query_builder::patient_id_
private

◆ patient_name_

std::string query_scu::query_builder::patient_name_
private

◆ patient_sex_

std::string query_scu::query_builder::patient_sex_
private

◆ series_description_

std::string query_scu::query_builder::series_description_
private

◆ series_instance_uid_

std::string query_scu::query_builder::series_instance_uid_
private

◆ series_number_

std::string query_scu::query_builder::series_number_
private

◆ sop_instance_uid_

std::string query_scu::query_builder::sop_instance_uid_
private

◆ study_date_

std::string query_scu::query_builder::study_date_
private

◆ study_description_

std::string query_scu::query_builder::study_description_
private

◆ study_id_

std::string query_scu::query_builder::study_id_
private

◆ study_instance_uid_

std::string query_scu::query_builder::study_instance_uid_
private

◆ study_time_

std::string query_scu::query_builder::study_time_
private

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