/usr/include/dcmtk/dcmiod/iodmacro.h is in libdcmtk-dev 3.6.1~20160216-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 | /*
*
* Copyright (C) 2015, Open Connections GmbH
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation are maintained by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmiod
*
* Author: Michael Onken
*
* Purpose: Collection of classes representing DICOM IOD macros
*
*/
#ifndef IODMACRO_H
#define IODMACRO_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/ofstd/ofvector.h"
#include "dcmtk/ofstd/ofstring.h"
#include "dcmtk/dcmdata/dctk.h" // For VR classes, i.e. DcmCodeString etc.
#include "dcmtk/dcmiod/iodrules.h"
#include "dcmtk/dcmiod/modbase.h"
/** Class representing a Code Sequence Macro
*/
class DCMTK_DCMIOD_EXPORT CodeSequenceMacro : public IODComponent
{
public:
/** Constructor
* @param item The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set for this class. If NULL, the class creates
* one from scratch and adds its values.
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
CodeSequenceMacro(OFshared_ptr<DcmItem> item,
OFshared_ptr<IODRules> rules,
IODComponent* parent = NULL);
/** Constructor
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
CodeSequenceMacro(IODComponent* parent = NULL);
/** Convenience constructor to set initial values
* @param item The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set for this class. If NULL, the class creates
* one from scratch and adds its values.
* @param parent The parent of the IOD component (NULL if none or unknown)
* @param codeValue The code value
* @param codingSchemeDesignator The coding scheme designator
* @param codeMeaning The code meaning
* @param codingSchemeVersion The coding scheme version (might be empty if
* coding scheme is unique)
*/
CodeSequenceMacro(OFshared_ptr<DcmItem> item,
OFshared_ptr<IODRules> rules,
IODComponent* parent,
const OFString& codeValue,
const OFString& codingSchemeDesignator,
const OFString& codeMeaning,
const OFString& codingSchemeVersion = "");
/** Convenience constructor to set initial values
* @param codeValue The code value
* @param codingSchemeDesignator The coding scheme designator
* @param codeMeaning The code meaning
* @param codingSchemeVersion The coding scheme version (might be empty if
* coding scheme is unique)
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
CodeSequenceMacro(const OFString& codeValue,
const OFString& codingSchemeDesignator,
const OFString& codeMeaning,
const OFString& codingSchemeVersion = "",
IODComponent* parent = NULL);
/** Resets rules to their original values
*/
virtual void resetRules();
/** Get name of macro
* @return Name of the component ("CodeSequenceMacro")
*/
virtual OFString getName() const;
/** Virtual Destructor
*/
virtual ~CodeSequenceMacro();
/** Get Code Value
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getCodeValue(OFString &value,
const signed long pos = 0);
/** Get Coding Scheme Designator
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getCodingSchemeDesignator(OFString &value,
const signed long pos = 0);
/** Get Coding Scheme Version
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getCodingSchemeVersion(OFString &value,
const signed long pos = 0);
/** Get Code Meaning
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getCodeMeaning(OFString &value,
const signed long pos = 0);
/** Set Code Value
* @param value The value to set
* @param checkValue If OFTrue, VM and VR of value are checked
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setCodeValue(const OFString &value,
const OFBool checkValue = OFTrue);
/** Set Coding Scheme Designator
* @param value The value to set
* @param checkValue If OFTrue, VM and VR of value are checked
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setCodingSchemeDesignator(const OFString &value,
const OFBool checkValue = OFTrue);
/** Set Coding Scheme Version
* @param value The value to set
* @param checkValue If OFTrue, VM and VR of value are checked
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setCodingSchemeVersion(const OFString &value,
const OFBool checkValue = OFTrue);
/** Set Code Meaning
* @param value The value to set
* @param checkValue If OFTrue, VM and VR of value are checked
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setCodeMeaning(const OFString &value,
const OFBool checkValue = OFTrue);
/** Set all values in this class conveniently
* @param value Code Value to set
* @param scheme Coding Scheme Designator to set
* @param meaning Code Meaning to set
* @param schemeVersion The Coding Scheme Designator version to set
* (optional)
* @param checkValue If OFTrue, VM and VR of values is checked
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition set(const OFString &value,
const OFString &scheme,
const OFString &meaning,
const OFString &schemeVersion = "",
const OFBool checkValue = OFTrue);
};
/** Class implementing the SOP Instance Reference Macro
*/
class DCMTK_DCMIOD_EXPORT SOPInstanceReferenceMacro : public IODComponent
{
public:
/** Constructor
* @param item The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set for this class. If NULL, the class creates
* one from scratch and adds its values.
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
SOPInstanceReferenceMacro(OFshared_ptr<DcmItem> item,
OFshared_ptr<IODRules> rules,
IODComponent* parent = NULL);
/** Constructor
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
SOPInstanceReferenceMacro(IODComponent* parent = NULL);
/** Virtual Destructor
*/
virtual ~SOPInstanceReferenceMacro();
/** Resets rules to their original values
*/
virtual void resetRules();
/** Get name of macro
* @return Name of the module ("SOPInstanceReferenceMacro")
*/
virtual OFString getName() const;
/** Get Referenced SOP Class UID
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getReferencedSOPClassUID(OFString &value,
const signed long pos = 0);
/** Get Referenced SOP Instance UID
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getReferencedSOPInstanceUID(OFString &value,
const signed long pos = 0);
/** Set Referenced SOP Class UID
* @param value The value to set
* @param checkValue If OFTrue, the value is checked regarding VM and VR
* @return EC_Normal, if successful, error otherwise
*/
virtual OFCondition setReferencedSOPClassUID(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Referenced SOP Instance UID
* @param value The value to set
* @param checkValue If OFTrue, the value is checked regarding VM and VR
* @return EC_Normal, if successful, error otherwise
*/
virtual OFCondition setReferencedSOPInstanceUID(const OFString& value,
const OFBool checkValue = OFTrue);
};
/** Class representing the Series and Instance Reference Macro
*/
class DCMTK_DCMIOD_EXPORT IODSeriesAndInstanceReferenceMacro : public IODComponent
{
public:
// Forward declaration
class ReferencedSeriesItem;
/** Constructor
* @param data The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set for this class. If NULL, the class creates
* one from scratch and adds its values.
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
IODSeriesAndInstanceReferenceMacro(OFshared_ptr<DcmItem> data,
OFshared_ptr<IODRules> rules,
IODComponent* parent = NULL);
/** Constructor
* @param parent The parent component of this class (if applicable, might
* be NULL)
*/
IODSeriesAndInstanceReferenceMacro(IODComponent* parent = NULL);
/** Virtual Destructor
*/
virtual ~IODSeriesAndInstanceReferenceMacro();
/** Read Series and Instance Reference Macro from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is deleted before
* reading (default)
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Series and Instance Reference Macro to given item
* @param destination The item to write to
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition write(DcmItem& destination);
/** Get name of module ("SeriesAndInstanceReferenceMacro")
* @return Name of the module ("SeriesAndInstanceReferenceMacro")
*/
virtual OFString getName() const;
/** Resets rules to their original values
*/
virtual void resetRules();
/** Clear (removes) all attributes handled by the modules of this component.
* Rules are not reset.
*/
virtual void clearData();
/** Return reference to list of Referenced Series items
* @return Reference to list of Reference Series Items
*/
OFVector<ReferencedSeriesItem*>& getReferencedSeriesItems();
private:
/// Vector with all items of the Referenced Series Sequence
OFVector<ReferencedSeriesItem*> m_ReferencedSeriesItems;
/// Name of this component ("SeriesAndInstanceReferenceMacro")
static const OFString m_ComponentName;
};
/** Class representing Items from the Referenced Series Sequence:
*
* [Referenced Series Sequence: (SQ, VM 1-n, Type 1C)]
* > Series Instance UID: (UI, 1, 1)
* > Referenced Instance Sequence: (SQ, 1-n, 1)
* >> SOP Instance Reference Macro
*
*/
class DCMTK_DCMIOD_EXPORT IODSeriesAndInstanceReferenceMacro::ReferencedSeriesItem : public IODComponent
{
public:
/** Constructor
* @param item The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set for this class. If NULL, the class creates
* one from scratch and adds its values.
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
ReferencedSeriesItem(OFshared_ptr<DcmItem> item,
OFshared_ptr<IODRules> rules,
IODComponent* parent = NULL);
/** Constructor
* @param parent The parent component of this class (if applicable, might
* be NULL)
*/
ReferencedSeriesItem(IODComponent* parent = NULL);
/** Destructor
*/
virtual ~ReferencedSeriesItem();
/** Clear (removes) all attributes handled by the modules of this component.
* Rules are not reset.
*/
virtual void clearData();
/** Read Referenced Series Sequence item data from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared before reading
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write this Referenced Series Sequence item data to given item
* @param destination The item to write to
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition write(DcmItem& destination);
/** Resets rules to their original values.
*/
virtual void resetRules();
/** Get name of module ("SeriesAndInstanceReferenceMacro")
* @return Name of the module ("SeriesAndInstanceReferenceMacro")
*/
virtual OFString getName() const;
/** Get Series Instance UID
* @param value Reference to variable in which the value should be stored
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getSeriesInstanceUID(OFString &value,
const signed long pos = 0) const;
/** Set Series Instance UID
* @param value Value to be set (single value only) or "" for no value
* @param checkValue Check 'value' for conformance with VR and VM if enabled
* @return status EC_Normal if successful, an error code otherwise
*/
virtual OFCondition setSeriesInstanceUID(const OFString& value,
const OFBool checkValue = OFTrue);
/** Get content of the Referenced Instance Sequence
* @return Reference to the Referenced Instance Sequence content
*/
virtual OFVector<SOPInstanceReferenceMacro*>& getReferencedInstanceItems();
private:
/// The name of this component ("SeriesAndInstanceReferenceMacro")
static const OFString m_ComponentName;
/// Vector containing the data of all items of the Referenced Instance Sequence
OFVector<SOPInstanceReferenceMacro*> m_ReferencedInstanceSequence;
};
/** Class representing the Image SOP Instance Reference Macro
* TODO: Change implementation to use IODComponent class inherited anyway
* from SOPInstanceReferenceMacro
*/
class DCMTK_DCMIOD_EXPORT ImageSOPInstanceReferenceMacro : public SOPInstanceReferenceMacro
{
public:
/** Constructor
*/
ImageSOPInstanceReferenceMacro();
/** Virtual Destructor
*/
virtual ~ImageSOPInstanceReferenceMacro();
/** Comparison operator that compares the normalized value of this object
* with a given object of the same type
* @param rhs The right hand side of the comparison
* @return 0 If the object values are equal.
* -1 if either the value of the first component that does not match
* is lower in the rhs object, or all compared components match
* but the rhs component is shorter. Also returned if rhs cannot be
* casted to DcmAttributeTag.
* 1 if either the value of the first component that does not match
* is greater in the rhs object, or all compared components match
* but the rhs component is longer.
*/
virtual int compare(const IODComponent& rhs) const;
/** Clear data
*/
virtual void clear();
/** Read Image SOP Instance Reference Macro from given item
* @param source The item to read from
* @param clearOldData If OFTrue (default), old data is cleared before reading
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Image SOP Instance Reference Macrom to given item
* @param item The item to write to
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition write(DcmItem& item);
/** Get Referenced Frame Number
* @param values Reference to variable in which the value should be stored
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getReferencedFrameNumber(OFVector<Uint16> &values);
/** Get Referenced Segment Number
* @param values Reference to variable in which the value should be stored
* @return EC_Normal if successful, an error code otherwise
*/
virtual OFCondition getReferencedSegmentNumber(OFVector<Uint16> &values);
/** Set Referenced Frame Number
* @param values The frame numbers that shoule be referenced
* @param checkValue If OFTrue (default) the given values will be checked
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition setReferencedFrameNumber(const OFVector<Uint16>& values,
const OFBool checkValue = OFTrue);
/** Add a Referenced Frame Number
* @param value The frame number to add
* @param checkValue If OFTrue, consistency checks are performed (as possible)
* @return EC_Normal if succesful, error otherwise
*/
virtual OFCondition addReferencedFrameNumber(const Uint16& value,
const OFBool checkValue = OFTrue);
/** Set the Referenced Segment Numbers
* @param values The segment numbers to add
* @param checkValue If OFTrue, consistency checks are performed (as possible)
* @return EC_Normal if succesful, error otherwise
*/
virtual OFCondition setReferencedSegmentNumber(const OFVector<Uint16>& values,
const OFBool checkValue = OFTrue);
/** Add a Referenced Segment Number
* @param value The segment number to add
* @param checkValue If OFTrue, consistency checks are performed (as possible)
* @return EC_Normal if succesful, error otherwise
*/
virtual OFCondition addReferencedSegmentNumber(const Uint16& value,
const OFBool checkValue = OFTrue);
private:
// DICOM attributes.
// The comments for each attribute describe "Name: (VR, VM, Type)".
// See DICOM standard for further reference.
/// Referenced Frame Number: (IS, 1-n, 1C)
DcmIntegerString ReferencedFrameNumber;
/// Referenced Segment Number: (US, 1-n, 1C)
DcmUnsignedShort ReferencedSegmentNumber;
};
/** Class representing an item within the the Primary Anatomic Structure Macro
*/
class DCMTK_DCMIOD_EXPORT PrimaryAnatomicStructureMacroItem
{
public:
/** Constructor
*/
PrimaryAnatomicStructureMacroItem();
/** Copy constructor
* @param rhs The item to copy from
*/
PrimaryAnatomicStructureMacroItem(const PrimaryAnatomicStructureMacroItem& rhs);
/** Virtual destructor
*/
virtual ~PrimaryAnatomicStructureMacroItem();
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Check whether this component's data satisfies the underlying
* rules
* @param quiet If OFTrue, not error / warning messages will be produced.
* Only the returned error code will indicate error or OK. Per
* default, logging output is produced.
* @result EC_Normal if rules are satisfied, error otherwise
*/
virtual OFCondition check(const OFBool quiet = OFFalse);
/** Return the Anatomic Structure Code
* @return Reference to the anatomic structure code
*/
virtual CodeSequenceMacro& getAnatomicStructure();
/** Return the Anatomic Structure Modifier Codes
* @return The Anatomic Structure Modifier Codes
*/
virtual OFVector<CodeSequenceMacro*>& getAnatomicStructureModifier();
/** Reads Primary Anatomic Region Sequence Item from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared first, otherwise it is
* kept where not overwritten
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Anatomic Region Sequence Item to given item
* @param item The item to write to
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition write(DcmItem& item);
/** Assignment operator (performs deep copy)
* @param rhs The item to copy from
* @return result
*/
PrimaryAnatomicStructureMacroItem& operator=(const PrimaryAnatomicStructureMacroItem &rhs);
private:
/// Primary Anatomic Structure Sequence Item
CodeSequenceMacro m_AnatomicStructure;
/// Primary Anatomic Structure Structure Modifier Sequence (SQ, 1-n, 3)
OFVector<CodeSequenceMacro*> m_AnatomicStructureModifier;
};
/** Class representing the Primary Anatomic Structure Macro
*/
class DCMTK_DCMIOD_EXPORT PrimaryAnatomicStructureMacro
{
public:
/** Constructor
*/
PrimaryAnatomicStructureMacro();
/** Copy constructor
* @param rhs The macro to copy from
*/
PrimaryAnatomicStructureMacro(const PrimaryAnatomicStructureMacro& rhs);
/** Virtual destructor
*/
virtual ~PrimaryAnatomicStructureMacro();
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Check whether this component's data satisfies the underlying
* rules
* @param quiet If OFTrue, not error / warning messages will be produced.
* Only the returned error code will indicate error or OK. Per
* default, logging output is produced.
* @result EC_Normal if rules are satisfied, error otherwise
*/
virtual OFCondition check(const OFBool quiet = OFFalse);
/** Return Primary Anatomic Structure items
* @return Reference to items of this macro
*/
virtual OFVector<PrimaryAnatomicStructureMacroItem*>& getPrimaryAnatomicStructure();
/** Reads Primary Anatomic Region Sequence (i.e.\ this macro) from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared first, otherwise it is
* kept where not overwritten
* @return EC_Normal if reading was fine, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Anatomic Region Sequence (i.e.\ this macro) to given item
* @param item The item to write to
* @return EC_Normal if writing was fine, error otherwise
*/
virtual OFCondition write(DcmItem& item);
/** Assignment operator
* @param rhs The macro to copy from
* @result Reference to "this" object
*/
PrimaryAnatomicStructureMacro& operator=(const PrimaryAnatomicStructureMacro &rhs);
private:
/// Primary Anatomic Structure Sequence (SQ, 0-1, 3)
OFVector<PrimaryAnatomicStructureMacroItem*> m_PrimaryAnatomicStructure;
};
/** Class representing the General Anatomy Mandatory or Optional Macro
*/
class DCMTK_DCMIOD_EXPORT GeneralAnatomyMacro
{
public:
/** Constructor
* @param type Type of Anatomic Region Sequence. Permitted values: If 1,
* the class represents the "General Anatomy Mandatory Macro", if
* type 2 then it behaves like the "General Anatomy Required Macro",
* and type 3 like the "General Anatomy Optional Macro". Other values
* are interpreted as type 3 (optional).
*/
GeneralAnatomyMacro(const OFString& type);
/** Copy constructor
* @param rhs The macro to copy from
*/
GeneralAnatomyMacro(const GeneralAnatomyMacro& rhs);
/** Virtual desctructor
*/
virtual ~GeneralAnatomyMacro();
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Check whether this component's data satisfies the underlying
* rules
* @param quiet If OFTrue, not error / warning messages will be produced.
* Only the returned error code will indicate error or OK. Per
* default, logging output is produced (OFFalse).
* @result EC_Normal if rules are satisfied, error otherwise
*/
virtual OFCondition check(const OFBool quiet = OFFalse);
/** Return Anatomic Region
* @return Reference to Anatomic Region Code
*/
virtual CodeSequenceMacro& getAnatomicRegion();
/** Return Anatomic Region Modifier Codes
* @return Reference to Anatomic Region Modifier codes
*/
virtual OFVector<CodeSequenceMacro*>& getAnatomicRegionModifier();
/** Return anatomic structure
* @return Reference to anatomic structure macro
*/
virtual PrimaryAnatomicStructureMacro& getPrimaryAnatomicStructure();
/** Reads Anatomic Region Sequence and Primary Anatomic Structure Macro from
* given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared before reading,
* otherwise it is kept/overwritten.
* @return EC_Normal if no error, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Anatomic Region Sequence and Primary Anatomic Structure Macro to
* given item
* @param item The item to write to
* @return EC_Normal if writing was successful, error otherwise
*/
virtual OFCondition write(DcmItem& item);
/** Assignment operator (performs deep copy)
* @param rhs The macro to copy from
* @return Reference to "this" object
*/
GeneralAnatomyMacro& operator=(const GeneralAnatomyMacro &rhs);
private:
/// Type (1,2,3) of Anatomic Region Sequence.
OFString m_Type; // TODO: Make enum?
/// Anatomic Region Sequence (SQ, 1, 1) (Code Sequence Macro within item of
/// Anatomic Region Sequence))
CodeSequenceMacro m_AnatomicRegion;
/// Anatomic Region Modifier Macro (within item of Anatomic Region Sequence)
OFVector<CodeSequenceMacro*> m_AnatomicRegionModifier;
/// Primary Anatomic Structure Macro (on the same level as Anatomic
/// Region Sequence)
PrimaryAnatomicStructureMacro m_PrimaryAnatomicStructure;
};
/** Class representing the Algorithm Identification Macro
*/
class DCMTK_DCMIOD_EXPORT AlgorithmIdentificationMacro
{
public:
/** Constructor
*/
AlgorithmIdentificationMacro();
/** Virtual destructor
*/
virtual ~AlgorithmIdentificationMacro();
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Perform consistency checks
* @param quiet If OFTrue, not error / warning messages will be produced.
* Only the returned error code will indicate error or OK. Per
* default, logging output is produced (OFFalse).
* @result EC_Normal if rules are satisfied, error otherwise
*/
virtual OFCondition check(const OFBool quiet = OFFalse);
/** Return Algorithm Family Code
* @return Reference to algorithm family code
*/
virtual CodeSequenceMacro& getAlgorithmFamilyCode();
/** Get Algorithm Name Code
* @return Algorithm Name Code
*/
virtual CodeSequenceMacro& getAlgorithmNameCode();
/** Get Algorithm Name
* @param value Reference variable to store the value to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getAlgorithmName(OFString& value,
const signed long pos = 0);
/** Get Algorithm Version
* @param value Reference variable to store the value to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getAlgorithmVersion(OFString& value,
const signed long pos = 0);
/** Get Algorithm Parameters
* @param value Reference variable to store the value to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getAlgorithmParameters(OFString& value,
const signed long pos = 0);
/** Get Algorithm Source
* @param value Reference variable to store the value to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getAlgorithmSource(OFString& value,
const signed long pos = 0);
/** Set Algorithm Name
* @param value The value to be set
* @param checkValue If OFTrue, the given value is checked
* @return EC_Normal, if value could be set, error otherwise
*/
virtual OFCondition setAlgorithmName(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Algorithm Version
* @param value The value to be set
* @param checkValue If OFTrue, the given value is checked
* @return EC_Normal, if value could be set, error otherwise
*/
virtual OFCondition setAlgorithmVersion(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Algorithm Parameters
* @param value The value to be set
* @param checkValue Check 'value'. Not evaluated (here for consistency
* with other setter functions).
* @return EC_Normal, if value could be set, error otherwise
*/
virtual OFCondition setAlgorithmParameters(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Algorithm Source
* @param value The value to be set
* @param checkValue If OFTrue, the given value is checked
* @return EC_Normal, if value could be set, error otherwise
*/
virtual OFCondition setAlgorithmSource(const OFString& value,
const OFBool checkValue = OFTrue);
/** Reads this macro from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared before reading,
* otherwise it is kept/overwritten
* @return EC_Normal if reading was successful, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write this macro to given item
* @param item The item to write to
* @return EC_Normal if writing was succesful, error otherwise
*/
virtual OFCondition write(DcmItem& item);
private:
/// Code Sequence Macro from Algorithm Family Code Sequence (single item),
/// (SQ, VM 1, Type 1)
CodeSequenceMacro m_AlgorithmFamilyCode;
/// Code Sequence Macro from Algorithm Name Code Sequence (single item)
/// (SQ, VM 1, Type 3)
CodeSequenceMacro m_AlgorithmNameCode;
/// Algorithm Name: (LO, VM 1, Typ 1)
DcmLongString m_AlgorithmName;
/// Algorithm Version: (LO, VM 1, Typ 1)
DcmLongString m_AlgorithmVersion;
/// Algorithm Parameters: (LT, VM 1, Typ 3)
DcmLongText m_AlgorithmParameters;
/// Algorithm Source: (LO, VM 1, Typ 3)
DcmLongString m_AlgorithmSource;
};
/** Content Identification Macro
*/
class DCMTK_DCMIOD_EXPORT ContentIdentificationMacro
{
public:
/** Class repsenting an Alternate Content Description item
*/
class DCMTK_DCMIOD_EXPORT AlternateContentDescriptionItem
{
public:
/** Constructor
*/
AlternateContentDescriptionItem();
/** Virtual destructor
*/
virtual ~AlternateContentDescriptionItem();
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Get Content Description
* @param value Reference variable to store the value to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition getContentDescription(OFString& value,
const signed long pos = 0);
/** Get Language Code
* @return Reference to the language code
*/
virtual CodeSequenceMacro& getLanguageCode();
/** Set Content Description
* @param value The value to set
* @param checkValue If OFTrue, consistency check is performed
* @result EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setContentDescription(const OFString& value,
const OFBool checkValue = OFTrue);
/** Read Alternate Content Description Sequence item from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared before reading,
* otherwise it is kept/overwritten
* @result EC_Normal, if reading was successful, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write alternate content description item to given item
* @param item The item to write to
* @result EC_Normal, if writing was successful, error otherwise
*/
virtual OFCondition write(DcmItem& item);
private:
/// Content Desctription: (LO, VM 1, Type 1)
DcmLongString m_ContentDescription;
/// Item of Language Code Sequence: (SQ, VM 1, Type 1)
CodeSequenceMacro m_LanguageCode;
};
/** Constructor
*/
ContentIdentificationMacro();
/** Copy constructor
* @param rhs The macro to copy from (deep copy)
*/
ContentIdentificationMacro(const ContentIdentificationMacro& rhs);
/** Assignment operator (deep copy)
* @param rhs The macro to copy from
* @return Reference to "this" object
*/
ContentIdentificationMacro& operator=(const ContentIdentificationMacro& rhs);
/** Virtual destructor
*/
virtual ~ContentIdentificationMacro();
/** Get rules for this data structure
* @return Reference to the rules
*/
virtual IODRules& getIODRules();
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Resets rules to their original values
*/
virtual void resetRules();
/** Check whether this component's data satisfies the underlying
* rules
* @param quiet If OFTrue, not error / warning messages will be produced.
* Only the returned error code will indicate error or OK. Per
* default, logging output is produced (OFFalse).
* @result EC_Normal if rules are satisfied, error otherwise
*/
virtual OFCondition check(const OFBool quiet = OFFalse);
/** Get Instance Number
* @param value Variable to store the result to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getInstanceNumber(OFString& value,
const signed long pos = 0) const;
/** Get Content Label
* @param value Variable to store the result to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getContentLabel(OFString& value,
const signed long pos = 0) const;
/** Get Content Description
* @param value Variable to store the result to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getContentDescription(OFString& value,
const signed long pos = 0) const;
/** Get Alternate Content Description items
* @return Reference to the items
*/
virtual OFVector<AlternateContentDescriptionItem*>& getAlternateContentDescription();
/** Get Content Creator Name
* @param value Variable to store the result to
* @param pos Index of the value to get (0..vm-1), -1 for all components
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getContentCreatorName(OFString& value,
const signed long pos = 0) const;
/** Get Content Creator Identification Code
* @return Reference to code
*/
virtual CodeSequenceMacro& getContentCreatorIdentificationCode();
/** Set Instance Number
* @param value Value to be set
* @param checkValue If OFTrue, value is checked for validity
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setInstanceNumber(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Content Label
* @param value Value to be set
* @param checkValue If OFTrue, value is checked for validity
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setContentLabel(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Content Description
* @param value Value to be set
* @param checkValue If OFTrue, value is checked for validity
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setContentDescription(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Content Creator Name
* @param value Value to be set
* @param checkValue If OFTrue, value is checked for validity
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setContentCreatorName(const OFString& value,
const OFBool checkValue = OFTrue);
/** Reads Content Identification Macro from given item
* @param source The item to read from
* @param clearOldData If OFTrue, old data is cleared before reading, otherwise
* it is kept/overwritten
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Content Identification Macro to given item
* @param item The item to write to
* @return EC_Normal if successul, error otherwise
*/
virtual OFCondition write(DcmItem& item);
private:
// Instance Number: (IS, VM 1, Type 1)
DcmIntegerString m_InstanceNumber;
/// Content Label: (CS, VM 1, Type 1)
DcmCodeString m_ContentLabel;
/// Content Description: (LO, VM1, Type 1)
DcmLongString m_ContentDescription;
// Alternate Content Description Sequence (VM 1-n, Type 3)
OFVector<AlternateContentDescriptionItem*> m_AlternateContentDescription;
/// Content Creator's Name: (LO, VM 1, Type 2)
DcmPersonName m_ContentCreatorName;
/// Content Creator's Identification Code Sequence
CodeSequenceMacro m_ContentCreatorIdentificationCode;
/// IOD rules for this data structure
IODRules m_IODRules;
};
/** Class representing the HL7 V2 Hierarchic Designator Macro
*/
class HL7HierarchicDesignatorMacro : public IODComponent
{
public:
/** Constructor
* @param item The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set for this class. If NULL, the class creates
* one from scratch and adds its values.
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
HL7HierarchicDesignatorMacro(OFshared_ptr<DcmItem> item,
OFshared_ptr<IODRules> rules,
IODComponent* parent = NULL);
/** Constructor
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
HL7HierarchicDesignatorMacro(IODComponent* parent = NULL);
/** Resets rules to their original values
*/
virtual void resetRules();
/** Get name of macro
* @return Name of the module ("HL7HierarchicDesignatorMacro")
*/
virtual OFString getName() const;
/** Get Local Namespace Entity ID
* @param value Variable to store the result to
* @param pos The index (0..VM) of the value to get
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getLocalNamespaceEntityID(OFString& value,
const signed long pos = 0) const;
/** Get Universal Entity ID
* @param value Variable to store the result to
* @param pos The index (0..VM) of the value to get
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getUniversalEntityID(OFString& value,
const signed long pos = 0) const;
/** Get Universal Entity ID Type
* @param value Variable to store the result to
* @param pos The index (0..VM) of the value to get
* @return EC_Normal if value could be get, error otherwise
*/
virtual OFCondition getUniversalEntityIDType(OFString& value,
const signed long pos = 0) const;
/** Set Local Namespace Entity ID
* @param value Value to be set
* @param checkValue Check 'value'. Not evaluated (here for consistency
* with other setter functions).
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setLocalNamespaceEntityID(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Universal Entity ID
* @param value Value to be set
* @param checkValue Check 'value'. Not evaluated (here for consistency
* with other setter functions).
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setUniversalEntityID(const OFString& value,
const OFBool checkValue = OFTrue);
/** Set Universal Entity ID Type
* @param value Value to be set
* @param checkValue If OFTrue, value is checked for validity
* @return EC_Normal if setting was successful, error otherwise
*/
virtual OFCondition setUniversalEntityIDType(const OFString& value,
const OFBool checkValue = OFTrue);
};
/** Class representing the Mandatory View and Slice Progression Direction Macro
*/
class MandatoryViewAndSliceProgressionDirectionMacro : public IODComponent
{
public:
/** Constructor
* @param item The item to be used for data storage. If NULL, the
* class creates an empty data container.
* @param rules The rule set where this classes rules are added to. If NULL,
* the class creates an empty rule set.
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
MandatoryViewAndSliceProgressionDirectionMacro(OFshared_ptr<DcmItem> item,
OFshared_ptr<IODRules> rules,
IODComponent* parent = NULL);
/** Constructor
* @param parent The parent of the IOD component (NULL if none or unknown)
*/
MandatoryViewAndSliceProgressionDirectionMacro(IODComponent* parent = NULL);
/** Clear (removes) all attributes handled by the modules of this component.
*/
virtual void clearData();
/** Resets rules to their original values
*/
virtual void resetRules();
/** Get name of macro
* @return Name of the module ("MandatoryViewAndSliceProgressionDirectionMacro")
*/
virtual OFString getName() const;
/** Read Mandatory View and Slice Progression Direction Macro from given item
* @param source The item to read from
* @param clearOldData If OFTrue (default), old data is cleared
* before reading
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition read(DcmItem& source,
const OFBool clearOldData = OFTrue);
/** Write Mandatory View and Slice Progression Direction Macro to given item
* @param item The item to write to
* @return EC_Normal if successful, error otherwise
*/
virtual OFCondition write(DcmItem& item);
/** Get View Code
* @return Reference to code
*/
virtual CodeSequenceMacro& getViewCode();
/** Get View Modifier Code
* @return Reference to code
*/
virtual OFVector<CodeSequenceMacro*>& getViewModifierCode();
protected:
/// View Code Sequence (SQ, VM 1, type 1)
CodeSequenceMacro m_ViewCodeSequence;
/// View Modifier Code Sequence (SQ, VM 1-n, type 2C)
OFVector<CodeSequenceMacro*> m_ViewModifierCode;
};
#endif // IODMACRO_H
|