00001 /* 00002 * 00003 * Copyright (C) 2000-2005, OFFIS 00004 * 00005 * This software and supporting documentation were developed by 00006 * 00007 * Kuratorium OFFIS e.V. 00008 * Healthcare Information and Communication Systems 00009 * Escherweg 2 00010 * D-26121 Oldenburg, Germany 00011 * 00012 * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY 00013 * REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR 00014 * FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR 00015 * ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND 00016 * PERFORMANCE OF THE SOFTWARE IS WITH THE USER. 00017 * 00018 * Module: dcmsr 00019 * 00020 * Author: Joerg Riesmeier 00021 * 00022 * Purpose: 00023 * classes: DSRWaveformChannelItem, DSRWaveformChannelList 00024 * 00025 * Last Update: $Author: meichel $ 00026 * Update Date: $Date: 2005/12/08 16:05:32 $ 00027 * CVS/RCS Revision: $Revision: 1.12 $ 00028 * Status: $State: Exp $ 00029 * 00030 * CVS/RCS Log at end of file 00031 * 00032 */ 00033 00034 00035 #ifndef DSRWAVCH_H 00036 #define DSRWAVCH_H 00037 00038 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ 00039 00040 #include "dcmtk/dcmsr/dsrtypes.h" 00041 #include "dcmtk/dcmsr/dsrtlist.h" 00042 00043 00044 /*---------------------* 00045 * class declaration * 00046 *---------------------*/ 00047 00050 class DSRWaveformChannelItem 00051 { 00052 public: 00053 00058 DSRWaveformChannelItem(const Uint16 multiplexGroupNumber = 0, 00059 const Uint16 channelNumber = 0) 00060 : MultiplexGroupNumber(multiplexGroupNumber), 00061 ChannelNumber(channelNumber) 00062 { 00063 } 00064 00069 inline OFBool operator==(const DSRWaveformChannelItem &item) const 00070 { 00071 return (item.MultiplexGroupNumber == MultiplexGroupNumber) && (item.ChannelNumber == ChannelNumber); 00072 } 00073 00078 inline OFBool operator!=(const DSRWaveformChannelItem &item) const 00079 { 00080 return (item.MultiplexGroupNumber != MultiplexGroupNumber) || (item.ChannelNumber != ChannelNumber); 00081 } 00082 00087 inline OFBool operator<(const DSRWaveformChannelItem &item) const 00088 { 00089 return (ChannelNumber < item.ChannelNumber) || ((ChannelNumber == item.ChannelNumber) && (MultiplexGroupNumber < item.MultiplexGroupNumber)); 00090 } 00091 00096 inline OFBool operator>(const DSRWaveformChannelItem &item) const 00097 { 00098 return (ChannelNumber > item.ChannelNumber) || ((ChannelNumber == item.ChannelNumber) && (MultiplexGroupNumber > item.MultiplexGroupNumber)); 00099 } 00100 00101 /* copy constructor and assignment operator are defined implicitly */ 00102 00104 Uint16 MultiplexGroupNumber; 00106 Uint16 ChannelNumber; 00107 }; 00108 00109 00112 class DSRWaveformChannelList 00113 : public DSRListOfItems<DSRWaveformChannelItem> 00114 { 00115 00116 public: 00117 00120 DSRWaveformChannelList(); 00121 00125 DSRWaveformChannelList(const DSRWaveformChannelList &lst); 00126 00129 virtual ~DSRWaveformChannelList(); 00130 00135 DSRWaveformChannelList &operator=(const DSRWaveformChannelList &lst); 00136 00145 OFCondition print(ostream &stream, 00146 const size_t flags = 0, 00147 const char pairSeparator = '/', 00148 const char itemSeparator = ',') const; 00149 00155 OFCondition read(DcmItem &dataset, 00156 OFConsole *logStream); 00157 00163 OFCondition write(DcmItem &dataset, 00164 OFConsole *logStream) const; 00165 00171 OFBool isElement(const Uint16 multiplexGroupNumber, 00172 const Uint16 channelNumber) const; 00173 00180 OFCondition getItem(const size_t idx, 00181 Uint16 &multiplexGroupNumber, 00182 Uint16 &channelNumber) const; 00183 00188 void addItem(const Uint16 multiplexGroupNumber, 00189 const Uint16 channelNumber); 00190 00197 OFCondition putString(const char *stringValue); 00198 }; 00199 00200 00201 #endif 00202 00203 00204 /* 00205 * CVS/RCS Log: 00206 * $Log: dsrwavch.h,v $ 00207 * Revision 1.12 2005/12/08 16:05:32 meichel 00208 * Changed include path schema for all DCMTK header files 00209 * 00210 * Revision 1.11 2003/08/07 13:06:29 joergr 00211 * Added new putString() method. 00212 * 00213 * Revision 1.10 2003/06/04 12:33:13 meichel 00214 * Added comparison operators, needed by MSVC5 with STL 00215 * 00216 * Revision 1.9 2003/06/03 10:16:44 meichel 00217 * Renamed local variables to avoid name clashes with STL 00218 * 00219 * Revision 1.8 2001/09/26 13:04:15 meichel 00220 * Adapted dcmsr to class OFCondition 00221 * 00222 * Revision 1.7 2001/05/07 16:13:24 joergr 00223 * Updated CVS header. 00224 * 00225 * Revision 1.6 2001/01/25 11:48:44 joergr 00226 * Corrected typos / enhanced comments. 00227 * 00228 * Revision 1.5 2000/11/06 11:21:26 joergr 00229 * Added parameter to print() method specifying the item separator character. 00230 * 00231 * Revision 1.4 2000/11/01 16:22:57 joergr 00232 * Updated comments/formatting. 00233 * 00234 * Revision 1.3 2000/10/18 17:10:51 joergr 00235 * Added doc++ comments. 00236 * 00237 * Revision 1.2 2000/10/16 11:52:29 joergr 00238 * Added new method checking whether a waveform content item applies to a 00239 * certain channel. 00240 * 00241 * Revision 1.1 2000/10/13 07:49:36 joergr 00242 * Added new module 'dcmsr' providing access to DICOM structured reporting 00243 * documents (supplement 23). Doc++ documentation not yet completed. 00244 * 00245 * 00246 */