1 /*
2 *
3 * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
4 * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
5 * All rights reserved. See COPYRIGHT file for details.
6 *
7 * Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
8 *
9 * Generated automatically from DICOM PS 3.3-2017e
10 * File created on 2017-12-05 09:30:54
11 *
12 */
13
14
15 #include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first
16
17 #include "dcmtk/dcmrt/seq/drttms9.h"
18
19
20 // --- item class ---
21
Item(const OFBool emptyDefaultItem)22 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem)
23 : EmptyDefaultItem(emptyDefaultItem),
24 DeviceSerialNumber(DCM_DeviceSerialNumber),
25 InstitutionAddress(DCM_InstitutionAddress),
26 InstitutionName(DCM_InstitutionName),
27 InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
28 Manufacturer(DCM_Manufacturer),
29 ManufacturerModelName(DCM_ManufacturerModelName),
30 TreatmentMachineName(DCM_TreatmentMachineName)
31 {
32 }
33
34
Item(const Item & copy)35 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item ©)
36 : EmptyDefaultItem(copy.EmptyDefaultItem),
37 DeviceSerialNumber(copy.DeviceSerialNumber),
38 InstitutionAddress(copy.InstitutionAddress),
39 InstitutionName(copy.InstitutionName),
40 InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
41 Manufacturer(copy.Manufacturer),
42 ManufacturerModelName(copy.ManufacturerModelName),
43 TreatmentMachineName(copy.TreatmentMachineName)
44 {
45 }
46
47
~Item()48 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::~Item()
49 {
50 }
51
52
operator =(const Item & copy)53 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item ©)
54 {
55 if (this != ©)
56 {
57 EmptyDefaultItem = copy.EmptyDefaultItem;
58 DeviceSerialNumber = copy.DeviceSerialNumber;
59 InstitutionAddress = copy.InstitutionAddress;
60 InstitutionName = copy.InstitutionName;
61 InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
62 Manufacturer = copy.Manufacturer;
63 ManufacturerModelName = copy.ManufacturerModelName;
64 TreatmentMachineName = copy.TreatmentMachineName;
65 }
66 return *this;
67 }
68
69
clear()70 void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::clear()
71 {
72 if (!EmptyDefaultItem)
73 {
74 /* clear all DICOM attributes */
75 TreatmentMachineName.clear();
76 Manufacturer.clear();
77 InstitutionName.clear();
78 InstitutionAddress.clear();
79 InstitutionalDepartmentName.clear();
80 ManufacturerModelName.clear();
81 DeviceSerialNumber.clear();
82 }
83 }
84
85
isEmpty()86 OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty()
87 {
88 return TreatmentMachineName.isEmpty() &&
89 Manufacturer.isEmpty() &&
90 InstitutionName.isEmpty() &&
91 InstitutionAddress.isEmpty() &&
92 InstitutionalDepartmentName.isEmpty() &&
93 ManufacturerModelName.isEmpty() &&
94 DeviceSerialNumber.isEmpty();
95 }
96
97
isValid() const98 OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const
99 {
100 return !EmptyDefaultItem;
101 }
102
103
read(DcmItem & item)104 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item)
105 {
106 OFCondition result = EC_IllegalCall;
107 if (!EmptyDefaultItem)
108 {
109 /* re-initialize object */
110 clear();
111 getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence");
112 getAndCheckElementFromDataset(item, Manufacturer, "1", "3", "TreatmentMachineSequence");
113 getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "TreatmentMachineSequence");
114 getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence");
115 getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence");
116 getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "TreatmentMachineSequence");
117 getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "TreatmentMachineSequence");
118 result = EC_Normal;
119 }
120 return result;
121 }
122
123
write(DcmItem & item)124 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item)
125 {
126 OFCondition result = EC_IllegalCall;
127 if (!EmptyDefaultItem)
128 {
129 result = EC_Normal;
130 addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence");
131 addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "3", "TreatmentMachineSequence");
132 addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "TreatmentMachineSequence");
133 addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence");
134 addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence");
135 addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "TreatmentMachineSequence");
136 addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "TreatmentMachineSequence");
137 }
138 return result;
139 }
140
141
getDeviceSerialNumber(OFString & value,const signed long pos) const142 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const
143 {
144 if (EmptyDefaultItem)
145 return EC_IllegalCall;
146 else
147 return getStringValueFromElement(DeviceSerialNumber, value, pos);
148 }
149
150
getInstitutionAddress(OFString & value,const signed long pos) const151 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const
152 {
153 if (EmptyDefaultItem)
154 return EC_IllegalCall;
155 else
156 return getStringValueFromElement(InstitutionAddress, value, pos);
157 }
158
159
getInstitutionName(OFString & value,const signed long pos) const160 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionName(OFString &value, const signed long pos) const
161 {
162 if (EmptyDefaultItem)
163 return EC_IllegalCall;
164 else
165 return getStringValueFromElement(InstitutionName, value, pos);
166 }
167
168
getInstitutionalDepartmentName(OFString & value,const signed long pos) const169 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
170 {
171 if (EmptyDefaultItem)
172 return EC_IllegalCall;
173 else
174 return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
175 }
176
177
getManufacturer(OFString & value,const signed long pos) const178 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturer(OFString &value, const signed long pos) const
179 {
180 if (EmptyDefaultItem)
181 return EC_IllegalCall;
182 else
183 return getStringValueFromElement(Manufacturer, value, pos);
184 }
185
186
getManufacturerModelName(OFString & value,const signed long pos) const187 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const
188 {
189 if (EmptyDefaultItem)
190 return EC_IllegalCall;
191 else
192 return getStringValueFromElement(ManufacturerModelName, value, pos);
193 }
194
195
getTreatmentMachineName(OFString & value,const signed long pos) const196 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const
197 {
198 if (EmptyDefaultItem)
199 return EC_IllegalCall;
200 else
201 return getStringValueFromElement(TreatmentMachineName, value, pos);
202 }
203
204
setDeviceSerialNumber(const OFString & value,const OFBool check)205 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check)
206 {
207 OFCondition result = EC_IllegalCall;
208 if (!EmptyDefaultItem)
209 {
210 result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
211 if (result.good())
212 result = DeviceSerialNumber.putOFStringArray(value);
213 }
214 return result;
215 }
216
217
setInstitutionAddress(const OFString & value,const OFBool check)218 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionAddress(const OFString &value, const OFBool check)
219 {
220 OFCondition result = EC_IllegalCall;
221 if (!EmptyDefaultItem)
222 {
223 result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
224 if (result.good())
225 result = InstitutionAddress.putOFStringArray(value);
226 }
227 return result;
228 }
229
230
setInstitutionName(const OFString & value,const OFBool check)231 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionName(const OFString &value, const OFBool check)
232 {
233 OFCondition result = EC_IllegalCall;
234 if (!EmptyDefaultItem)
235 {
236 result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
237 if (result.good())
238 result = InstitutionName.putOFStringArray(value);
239 }
240 return result;
241 }
242
243
setInstitutionalDepartmentName(const OFString & value,const OFBool check)244 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
245 {
246 OFCondition result = EC_IllegalCall;
247 if (!EmptyDefaultItem)
248 {
249 result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
250 if (result.good())
251 result = InstitutionalDepartmentName.putOFStringArray(value);
252 }
253 return result;
254 }
255
256
setManufacturer(const OFString & value,const OFBool check)257 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturer(const OFString &value, const OFBool check)
258 {
259 OFCondition result = EC_IllegalCall;
260 if (!EmptyDefaultItem)
261 {
262 result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
263 if (result.good())
264 result = Manufacturer.putOFStringArray(value);
265 }
266 return result;
267 }
268
269
setManufacturerModelName(const OFString & value,const OFBool check)270 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturerModelName(const OFString &value, const OFBool check)
271 {
272 OFCondition result = EC_IllegalCall;
273 if (!EmptyDefaultItem)
274 {
275 result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
276 if (result.good())
277 result = ManufacturerModelName.putOFStringArray(value);
278 }
279 return result;
280 }
281
282
setTreatmentMachineName(const OFString & value,const OFBool check)283 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check)
284 {
285 OFCondition result = EC_IllegalCall;
286 if (!EmptyDefaultItem)
287 {
288 result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
289 if (result.good())
290 result = TreatmentMachineName.putOFStringArray(value);
291 }
292 return result;
293 }
294
295
296 // --- sequence class ---
297
DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence)298 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence)
299 : EmptyDefaultSequence(emptyDefaultSequence),
300 SequenceOfItems(),
301 CurrentItem(),
302 EmptyItem(OFTrue /*emptyDefaultItem*/)
303 {
304 CurrentItem = SequenceOfItems.end();
305 }
306
307
DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule & copy)308 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©)
309 : EmptyDefaultSequence(copy.EmptyDefaultSequence),
310 SequenceOfItems(),
311 CurrentItem(),
312 EmptyItem(OFTrue /*emptyDefaultItem*/)
313 {
314 /* create a copy of the internal sequence of items */
315 Item *item = NULL;
316 OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
317 const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
318 while (current != last)
319 {
320 item = new Item(**current);
321 if (item != NULL)
322 {
323 SequenceOfItems.push_back(item);
324 } else {
325 /* memory exhausted, there is nothing we can do about it */
326 break;
327 }
328 ++current;
329 }
330 CurrentItem = SequenceOfItems.begin();
331 }
332
333
operator =(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule & copy)334 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©)
335 {
336 if (this != ©)
337 {
338 clear();
339 EmptyDefaultSequence = copy.EmptyDefaultSequence;
340 /* create a copy of the internal sequence of items */
341 Item *item = NULL;
342 OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
343 const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
344 while (current != last)
345 {
346 item = new Item(**current);
347 if (item != NULL)
348 {
349 SequenceOfItems.push_back(item);
350 } else {
351 /* memory exhausted, there is nothing we can do about it */
352 break;
353 }
354 ++current;
355 }
356 CurrentItem = SequenceOfItems.begin();
357 }
358 return *this;
359 }
360
361
~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule()362 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule()
363 {
364 clear();
365 }
366
367
clear()368 void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::clear()
369 {
370 if (!EmptyDefaultSequence)
371 {
372 CurrentItem = SequenceOfItems.begin();
373 const OFListConstIterator(Item *) last = SequenceOfItems.end();
374 /* delete all items and free memory */
375 while (CurrentItem != last)
376 {
377 delete (*CurrentItem);
378 CurrentItem = SequenceOfItems.erase(CurrentItem);
379 }
380 /* make sure that the list is empty */
381 SequenceOfItems.clear();
382 CurrentItem = SequenceOfItems.end();
383 }
384 }
385
386
isEmpty()387 OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isEmpty()
388 {
389 return SequenceOfItems.empty();
390 }
391
392
isValid() const393 OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isValid() const
394 {
395 return !EmptyDefaultSequence;
396 }
397
398
getNumberOfItems() const399 size_t DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
400 {
401 return SequenceOfItems.size();
402 }
403
404
gotoFirstItem()405 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem()
406 {
407 OFCondition result = EC_IllegalCall;
408 if (!SequenceOfItems.empty())
409 {
410 CurrentItem = SequenceOfItems.begin();
411 result = EC_Normal;
412 }
413 return result;
414 }
415
416
gotoNextItem()417 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoNextItem()
418 {
419 OFCondition result = EC_IllegalCall;
420 if (CurrentItem != SequenceOfItems.end())
421 {
422 ++CurrentItem;
423 result = EC_Normal;
424 }
425 return result;
426 }
427
428
gotoItem(const size_t num,OFListIterator (Item *)& iterator)429 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
430 {
431 OFCondition result = EC_IllegalCall;
432 if (!SequenceOfItems.empty())
433 {
434 size_t idx = num + 1;
435 iterator = SequenceOfItems.begin();
436 const OFListConstIterator(Item *) last = SequenceOfItems.end();
437 while ((--idx > 0) && (iterator != last))
438 ++iterator;
439 /* specified list item found? */
440 if ((idx == 0) && (iterator != last))
441 result = EC_Normal;
442 else
443 result = EC_IllegalParameter;
444 }
445 return result;
446 }
447
448
gotoItem(const size_t num,OFListConstIterator (Item *)& iterator) const449 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
450 {
451 OFCondition result = EC_IllegalCall;
452 if (!SequenceOfItems.empty())
453 {
454 size_t idx = num + 1;
455 iterator = SequenceOfItems.begin();
456 const OFListConstIterator(Item *) last = SequenceOfItems.end();
457 while ((--idx > 0) && (iterator != last))
458 ++iterator;
459 /* specified list item found? */
460 if ((idx == 0) && (iterator != last))
461 result = EC_Normal;
462 else
463 result = EC_IllegalParameter;
464 }
465 return result;
466 }
467
468
gotoItem(const size_t num)469 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
470 {
471 return gotoItem(num, CurrentItem);
472 }
473
474
getCurrentItem(Item * & item) const475 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const
476 {
477 OFCondition result = EC_IllegalCall;
478 if (CurrentItem != SequenceOfItems.end())
479 {
480 item = *CurrentItem;
481 result = EC_Normal;
482 }
483 return result;
484 }
485
486
getCurrentItem()487 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem()
488 {
489 if (CurrentItem != SequenceOfItems.end())
490 return **CurrentItem;
491 else
492 return EmptyItem;
493 }
494
495
getCurrentItem() const496 const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const
497 {
498 if (CurrentItem != SequenceOfItems.end())
499 return **CurrentItem;
500 else
501 return EmptyItem;
502 }
503
504
getItem(const size_t num,Item * & item)505 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
506 {
507 OFListIterator(Item *) iterator;
508 OFCondition result = gotoItem(num, iterator);
509 if (result.good())
510 item = *iterator;
511 return result;
512 }
513
514
getItem(const size_t num)515 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
516 {
517 OFListIterator(Item *) iterator;
518 if (gotoItem(num, iterator).good())
519 return **iterator;
520 else
521 return EmptyItem;
522 }
523
524
getItem(const size_t num) const525 const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
526 {
527 OFListConstIterator(Item *) iterator;
528 if (gotoItem(num, iterator).good())
529 return **iterator;
530 else
531 return EmptyItem;
532 }
533
534
operator [](const size_t num)535 DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
536 {
537 return getItem(num);
538 }
539
540
operator [](const size_t num) const541 const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
542 {
543 return getItem(num);
544 }
545
546
addItem(Item * & item)547 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item)
548 {
549 OFCondition result = EC_IllegalCall;
550 if (!EmptyDefaultSequence)
551 {
552 item = new Item();
553 if (item != NULL)
554 {
555 SequenceOfItems.push_back(item);
556 result = EC_Normal;
557 } else
558 result = EC_MemoryExhausted;
559 }
560 return result;
561 }
562
563
insertItem(const size_t pos,Item * & item)564 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
565 {
566 OFCondition result = EC_IllegalCall;
567 if (!EmptyDefaultSequence)
568 {
569 OFListIterator(Item *) iterator;
570 result = gotoItem(pos, iterator);
571 if (result.good())
572 {
573 item = new Item();
574 if (item != NULL)
575 {
576 SequenceOfItems.insert(iterator, 1, item);
577 result = EC_Normal;
578 } else
579 result = EC_MemoryExhausted;
580 } else
581 result = addItem(item);
582 }
583 return result;
584 }
585
586
removeItem(const size_t pos)587 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
588 {
589 OFCondition result = EC_IllegalCall;
590 if (!EmptyDefaultSequence)
591 {
592 OFListIterator(Item *) iterator;
593 if (gotoItem(pos, iterator).good())
594 {
595 delete *iterator;
596 iterator = SequenceOfItems.erase(iterator);
597 result = EC_Normal;
598 } else
599 result = EC_IllegalParameter;
600 }
601 return result;
602 }
603
604
read(DcmItem & dataset,const OFString & card,const OFString & type,const char * moduleName)605 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset,
606 const OFString &card,
607 const OFString &type,
608 const char *moduleName)
609 {
610 OFCondition result = EC_IllegalCall;
611 if (!EmptyDefaultSequence)
612 {
613 /* re-initialize object */
614 clear();
615 /* retrieve sequence element from dataset */
616 DcmSequenceOfItems *sequence;
617 result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence);
618 if (sequence != NULL)
619 {
620 if (checkElementValue(*sequence, card, type, result, moduleName))
621 {
622 DcmStack stack;
623 OFBool first = OFTrue;
624 /* iterate over all sequence items */
625 while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
626 {
627 DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
628 if (ditem != NULL)
629 {
630 Item *item = new Item();
631 if (item != NULL)
632 {
633 result = item->read(*ditem);
634 if (result.good())
635 {
636 /* append new item to the end of the list */
637 SequenceOfItems.push_back(item);
638 first = OFFalse;
639 }
640 } else
641 result = EC_MemoryExhausted;
642 } else
643 result = EC_CorruptedData;
644 }
645 }
646 } else {
647 DcmSequenceOfItems element(DCM_TreatmentMachineSequence);
648 checkElementValue(element, card, type, result, moduleName);
649 }
650 }
651 return result;
652 }
653
654
write(DcmItem & dataset,const OFString & card,const OFString & type,const char * moduleName)655 OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset,
656 const OFString &card,
657 const OFString &type,
658 const char *moduleName)
659 {
660 OFCondition result = EC_IllegalCall;
661 if (!EmptyDefaultSequence)
662 {
663 result = EC_MemoryExhausted;
664 DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence);
665 if (sequence != NULL)
666 {
667 result = EC_Normal;
668 /* an empty optional sequence is not written */
669 if ((type == "2") || !SequenceOfItems.empty())
670 {
671 OFListIterator(Item *) iterator = SequenceOfItems.begin();
672 const OFListConstIterator(Item *) last = SequenceOfItems.end();
673 /* iterate over all sequence items */
674 while (result.good() && (iterator != last))
675 {
676 DcmItem *item = new DcmItem();
677 if (item != NULL)
678 {
679 /* append new item to the end of the sequence */
680 result = sequence->append(item);
681 if (result.good())
682 {
683 result = (*iterator)->write(*item);
684 ++iterator;
685 } else
686 delete item;
687 } else
688 result = EC_MemoryExhausted;
689 }
690 if (result.good())
691 {
692 /* insert sequence element into the dataset */
693 result = dataset.insert(sequence, OFTrue /*replaceOld*/);
694 }
695 if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
696 checkElementValue(*sequence, card, type, result, moduleName);
697 if (result.good())
698 {
699 /* forget reference to sequence object (avoid deletion below) */
700 sequence = NULL;
701 }
702 }
703 else if (type == "1")
704 {
705 /* empty type 1 sequence not allowed */
706 result = RT_EC_InvalidValue;
707 if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
708 checkElementValue(*sequence, card, type, result, moduleName);
709 }
710 /* delete sequence (if not inserted into the dataset) */
711 delete sequence;
712 }
713 }
714 return result;
715 }
716
717
718 // end of source file
719