00001 /* 00002 * 00003 * Copyright (C) 1993-2001, 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: imagectn 00019 * 00020 * Author: Didier Lemoine 00021 * 00022 * Purpose: private data definitions used to implement the DB Module Module. Prefix: DB_ 00023 * 00024 * Last Update: $Author: meichel $ 00025 * Update Date: $Date: 2001/10/12 12:43:06 $ 00026 * Source File: $Source: /share/dicom/cvs-depot/dcmtk/imagectn/include/dbpriv.h,v $ 00027 * CVS/RCS Revision: $Revision: 1.15 $ 00028 * Status: $State: Exp $ 00029 * 00030 * CVS/RCS Log at end of file 00031 * 00032 */ 00033 00034 #ifndef DATAPRIV_H 00035 #define DATAPRIV_H 00036 00037 #include "osconfig.h" /* make sure OS specific configuration is included first */ 00038 00039 #include "imagedb.h" 00040 #include "dicom.h" 00041 #include "dcdatset.h" 00042 #include "dcuid.h" 00043 #include "dcdeftag.h" 00044 BEGIN_EXTERN_C 00045 #ifdef HAVE_IO_H 00046 #define access my_access // Workaround to make Visual C++ Compiler happy! 00047 #include <io.h> 00048 #undef access 00049 #endif 00050 END_EXTERN_C 00051 00052 #define STORE_SERVICE 1 00053 #define FIND_SERVICE 2 00054 #define MOVE_SERVICE 3 00055 00056 /* 00057 ** Maximum size of things to put in db records. 00058 ** Some values will have vm>1 thus these maximums are 00059 ** intended to leave enough space for most common uses. 00060 */ 00061 #define AE_MAX_LENGTH 128 /* Application Entity */ 00062 #define AS_MAX_LENGTH 32 /* Age String */ 00063 #define AT_MAX_LENGTH 32 /* Attribute Tag */ 00064 #define CS_MAX_LENGTH 128 /* Code String */ 00065 #define DA_MAX_LENGTH 80 /* Date */ 00066 #define DS_MAX_LENGTH 128 /* Decimal String */ 00067 #define DT_MAX_LENGTH 208 /* Date Time */ 00068 #define FL_MAX_LENGTH 32 /* FLoating point single */ 00069 #define FD_MAX_LENGTH 64 /* Floating point Double */ 00070 #define IS_MAX_LENGTH 96 /* Integer String */ 00071 #define LO_MAX_LENGTH 64 /* Long String */ 00072 #define LT_MAX_LENGTH 10240 /* Long Text */ 00073 #define PN_MAX_LENGTH 64 /* Person Name */ 00074 #define SH_MAX_LENGTH 16 /* Short String */ 00075 #define SL_MAX_LENGTH 32 /* Signed Long */ 00076 #define SS_MAX_LENGTH 16 /* Signed Short */ 00077 #define ST_MAX_LENGTH 1024 /* Short Text */ 00078 #define TM_MAX_LENGTH 128 /* Time */ 00079 #define UI_MAX_LENGTH 64 /* Unique Identifier */ 00080 #define UL_MAX_LENGTH 32 /* Unsigned Long */ 00081 #define US_MAX_LENGTH 16 /* Unsigned Short */ 00082 #define CS_LABEL_MAX_LENGTH 16 /* Code String - Presentation Label */ 00083 #define DESCRIPTION_MAX_LENGTH 128 /* Not related to any particular DICOM attribute */ 00084 00085 #define DBC_MAXSTRING 256 00086 00087 #define MAX_MAX_STUDIES DB_UpperMaxStudies 00088 #define MAX_NUMBER_OF_IMAGES 10000 00089 #define SIZEOF_IDXRECORD (sizeof (IdxRecord)) 00090 #define SIZEOF_STUDYDESC (sizeof (StudyDescRecord) * MAX_MAX_STUDIES) 00091 00092 00093 typedef struct DB_SSmallDcmElmt { 00094 char* PValueField ; 00095 Uint32 ValueLength ; 00096 DcmTagKey XTag ; 00097 DB_SSmallDcmElmt(); /* default constructor defined in dbutils.cc */ 00098 00099 private: 00100 /* undefined */ DB_SSmallDcmElmt(const DB_SSmallDcmElmt& copy); 00101 /* undefined */ DB_SSmallDcmElmt& operator=(const DB_SSmallDcmElmt& copy); 00102 } DB_SmallDcmElmt ; 00103 00104 00105 typedef enum { 00106 UNIQUE_KEY, 00107 REQUIRED_KEY, 00108 OPTIONAL_KEY 00109 } DB_KEY_TYPE ; 00110 00111 /* 00112 typedef enum { 00113 DB_CANNOTCREATEHANDLE_CannotAllocate, 00114 DB_CANNOTCREATEHANDLE_CannotOpenIdx, 00115 DB_CANNOTDESTROYHANDLE_CannotCloseIdx, 00116 DB_FIND, 00117 DB_NOTFIND, 00118 DB_INVALIDDATA, 00119 DB_ERROR 00120 } DB_CONDITION ; 00121 */ 00122 00123 typedef enum { 00124 PATIENT_LEVEL, 00125 STUDY_LEVEL, 00126 SERIE_LEVEL, 00127 IMAGE_LEVEL 00128 } DB_LEVEL ; 00129 00130 typedef enum { 00131 PATIENT_ROOT, 00132 STUDY_ROOT, 00133 PATIENT_STUDY 00134 } DB_QUERY_CLASS ; 00135 00136 struct db_ElementList { 00137 DB_SmallDcmElmt elem ; 00138 struct db_ElementList *next ; 00139 00140 db_ElementList(): elem(), next(NULL) {} 00141 private: 00142 /* undefined */ db_ElementList(const db_ElementList& copy); 00143 /* undefined */ db_ElementList& operator=(const db_ElementList& copy); 00144 }; 00145 00146 typedef struct db_ElementList DB_ElementList; 00147 00148 struct db_UidList { 00149 char *patient ; 00150 char *study ; 00151 char *serie ; 00152 char *image ; 00153 struct db_UidList *next ; 00154 }; 00155 00156 typedef struct db_UidList DB_UidList ; 00157 00158 00159 struct db_IntegerList { 00160 int idxCounter ; 00161 struct db_IntegerList *next ; 00162 }; 00163 typedef struct db_IntegerList DB_CounterList ; 00164 00165 00166 typedef enum { 00167 DATE_CLASS, 00168 TIME_CLASS, 00169 UID_CLASS, 00170 STRING_CLASS, 00171 OTHER_CLASS 00172 } DB_KEY_CLASS ; 00173 00174 struct DB_FindAttr { 00175 DcmTagKey tag ; 00176 DB_LEVEL level ; 00177 DB_KEY_TYPE keyAttr ; 00178 DB_KEY_CLASS keyClass ; 00179 00180 /* to passify some C++ compilers */ 00181 DB_FindAttr(const DcmTagKey& t, DB_LEVEL l, DB_KEY_TYPE kt, DB_KEY_CLASS kc) 00182 : tag(t), level(l), keyAttr(kt), keyClass(kc) { } 00183 }; 00184 00185 00186 00187 typedef struct { 00188 int pidx ; 00189 DB_ElementList *findRequestList ; 00190 DB_ElementList *findResponseList ; 00191 DB_LEVEL queryLevel ; 00192 char indexFilename[DBC_MAXSTRING+1] ; 00193 char storageArea[DBC_MAXSTRING+1] ; 00194 long maxBytesPerStudy ; 00195 long maxStudiesAllowed ; 00196 int idxCounter ; 00197 DB_CounterList *moveCounterList ; 00198 int NumberRemainOperations ; 00199 DB_QUERY_CLASS rootLevel ; 00200 DB_UidList *uidList ; 00201 } DB_Private_Handle ; 00202 00203 00204 typedef struct { 00205 char StudyInstanceUID [UI_MAX_LENGTH] ; 00206 long StudySize ; 00207 double LastRecordedDate ; 00208 int NumberofRegistratedImages ; 00209 } StudyDescRecord ; 00210 00211 00212 typedef struct { 00213 int idxCounter ; 00214 double RecordedDate ; 00215 long ImageSize ; 00216 } ImagesofStudyArray ; 00217 00218 00219 /* the following constants define which array element 00220 * of the param[] array in the IdxRecord structure 00221 * is linked to which value field in the IdxRecord. 00222 * numbers must be continuous, starting with 0. 00223 * 00224 * The constant NBPARAMETERS must contain the number 00225 * of array elements to be referenced in param[] 00226 * (= highest index +1) 00227 */ 00228 00229 #define RECORDIDX_PatientsBirthDate 0 00230 #define RECORDIDX_PatientsSex 1 00231 #define RECORDIDX_PatientsName 2 00232 #define RECORDIDX_PatientID 3 00233 #define RECORDIDX_PatientsBirthTime 4 00234 #define RECORDIDX_OtherPatientIDs 5 00235 #define RECORDIDX_OtherPatientNames 6 00236 #define RECORDIDX_EthnicGroup 7 00237 #define RECORDIDX_NumberofPatientRelatedStudies 8 00238 #define RECORDIDX_NumberofPatientRelatedSeries 9 00239 #define RECORDIDX_NumberofPatientRelatedInstances 10 00240 #define RECORDIDX_StudyDate 11 00241 #define RECORDIDX_StudyTime 12 00242 #define RECORDIDX_StudyID 13 00243 #define RECORDIDX_StudyDescription 14 00244 #define RECORDIDX_NameOfPhysiciansReadingStudy 15 00245 #define RECORDIDX_AccessionNumber 16 00246 #define RECORDIDX_ReferringPhysiciansName 17 00247 #define RECORDIDX_ProcedureDescription 18 00248 #define RECORDIDX_AttendingPhysiciansName 19 00249 #define RECORDIDX_StudyInstanceUID 20 00250 #define RECORDIDX_OtherStudyNumbers 21 00251 #define RECORDIDX_AdmittingDiagnosesDescription 22 00252 #define RECORDIDX_PatientsAge 23 00253 #define RECORDIDX_PatientsSize 24 00254 #define RECORDIDX_PatientsWeight 25 00255 #define RECORDIDX_Occupation 26 00256 #define RECORDIDX_NumberofStudyRelatedSeries 27 00257 #define RECORDIDX_NumberofStudyRelatedInstances 28 00258 #define RECORDIDX_SeriesNumber 29 00259 #define RECORDIDX_SeriesInstanceUID 30 00260 #define RECORDIDX_Modality 31 00261 #define RECORDIDX_ImageNumber 32 00262 #define RECORDIDX_SOPInstanceUID 33 00263 #define RECORDIDX_SeriesDate 34 00264 #define RECORDIDX_SeriesTime 35 00265 #define RECORDIDX_SeriesDescription 36 00266 #define RECORDIDX_ProtocolName 37 00267 #define RECORDIDX_OperatorsName 38 00268 #define RECORDIDX_PerformingPhysiciansName 39 00269 #define RECORDIDX_PresentationLabel 40 00270 00271 #define NBPARAMETERS 41 00272 00273 00274 struct IdxRecord { 00275 00276 char filename [DBC_MAXSTRING+1] ; 00277 char SOPClassUID [UI_MAX_LENGTH+1] ; 00278 double RecordedDate ; 00279 int ImageSize ; 00280 00281 DB_SmallDcmElmt param [NBPARAMETERS] ; 00282 00283 char PatientsBirthDate [DA_MAX_LENGTH+1] ; 00284 char PatientsSex [CS_MAX_LENGTH+1] ; 00285 char PatientsName [PN_MAX_LENGTH+1] ; 00286 char PatientID [LO_MAX_LENGTH+1] ; 00287 char PatientsBirthTime [TM_MAX_LENGTH+1] ; 00288 char OtherPatientIDs [LO_MAX_LENGTH+1] ; 00289 char OtherPatientNames [PN_MAX_LENGTH+1] ; 00290 char EthnicGroup [SH_MAX_LENGTH+1] ; 00291 char NumberofPatientRelatedStudies [IS_MAX_LENGTH+1] ; 00292 char NumberofPatientRelatedSeries [IS_MAX_LENGTH+1] ; 00293 char NumberofPatientRelatedInstances [IS_MAX_LENGTH+1] ; 00294 00295 char StudyDate [DA_MAX_LENGTH+1] ; 00296 char StudyTime [TM_MAX_LENGTH+1] ; 00297 char StudyID [CS_MAX_LENGTH+1] ; 00298 char StudyDescription [LO_MAX_LENGTH+1] ; 00299 char NameOfPhysiciansReadingStudy [PN_MAX_LENGTH+1] ; 00300 00301 char AccessionNumber [CS_MAX_LENGTH+1] ; 00302 char ReferringPhysiciansName [PN_MAX_LENGTH+1] ; 00303 char ProcedureDescription [LO_MAX_LENGTH+1] ; 00304 char AttendingPhysiciansName [PN_MAX_LENGTH+1] ; 00305 char StudyInstanceUID [UI_MAX_LENGTH+1] ; 00306 char OtherStudyNumbers [IS_MAX_LENGTH+1] ; 00307 char AdmittingDiagnosesDescription [LO_MAX_LENGTH+1] ; 00308 char PatientsAge [AS_MAX_LENGTH+1] ; 00309 char PatientsSize [DS_MAX_LENGTH+1] ; 00310 char PatientsWeight [DS_MAX_LENGTH+1] ; 00311 char Occupation [SH_MAX_LENGTH+1] ; 00312 char NumberofStudyRelatedSeries [IS_MAX_LENGTH+1] ; 00313 char NumberofStudyRelatedInstances [IS_MAX_LENGTH+1] ; 00314 00315 char SeriesNumber [IS_MAX_LENGTH+1] ; 00316 char SeriesInstanceUID [UI_MAX_LENGTH+1] ; 00317 char Modality [CS_MAX_LENGTH+1] ; 00318 00319 char ImageNumber [IS_MAX_LENGTH+1] ; 00320 char SOPInstanceUID [UI_MAX_LENGTH+1] ; 00321 00322 char SeriesDate [DA_MAX_LENGTH+1] ; 00323 char SeriesTime [TM_MAX_LENGTH+1] ; 00324 char SeriesDescription [LO_MAX_LENGTH+1] ; 00325 char ProtocolName [LO_MAX_LENGTH+1] ; 00326 char OperatorsName [PN_MAX_LENGTH+1] ; 00327 char PerformingPhysiciansName [PN_MAX_LENGTH+1] ; 00328 char PresentationLabel [CS_LABEL_MAX_LENGTH+1] ; 00329 00330 DVIFhierarchyStatus hstat; 00331 00332 // Not related to any particular DICOM attribute ! 00333 char InstanceDescription [DESCRIPTION_MAX_LENGTH+1] ; 00334 00335 IdxRecord(); /* defined in dbutils.cc */ 00336 00337 private: 00338 /* undefined */ IdxRecord(const IdxRecord& copy); 00339 /* undefined */ IdxRecord& operator=(const IdxRecord& copy); 00340 }; 00341 00342 00346 #define PATIENT_LEVEL_STRING "PATIENT" 00347 #define STUDY_LEVEL_STRING "STUDY" 00348 #define SERIE_LEVEL_STRING "SERIES" 00349 #define IMAGE_LEVEL_STRING "IMAGE" 00350 00354 extern void DB_IdxInitRecord (IdxRecord *, int linksOnly) ; 00355 00356 extern OFCondition DB_IdxRead (DB_Private_Handle *phandle, int idx, IdxRecord *idxRec) ; 00357 extern OFCondition DB_IdxAdd (DB_Private_Handle *phandle, int *idx, IdxRecord *idxRec) ; 00358 extern OFCondition DB_IdxRemove (DB_Private_Handle *phandle, int idx); 00359 extern OFCondition DB_StudyDescChange (DB_Private_Handle *phandle, StudyDescRecord *pStudyDesc) ; 00360 extern OFCondition DB_IdxInitLoop (DB_Private_Handle *phandle, int *idx) ; 00361 extern OFCondition DB_IdxGetNext (DB_Private_Handle *phandle, int *idx, IdxRecord *idxRec) ; 00362 00366 extern int DB_debugLevel; 00367 extern void DB_debug(int level, const char* format, ...); 00368 00369 extern int DB_StringUnify(char *, char *) ; 00370 extern OFCondition DB_FreeElementList (DB_ElementList *) ; 00371 extern OFCondition DB_FreeUidList (DB_UidList *) ; 00372 extern int DB_TagSupported (DcmTagKey) ; 00373 extern OFCondition DB_GetUIDTag (DB_LEVEL, DcmTagKey *) ; 00374 extern OFCondition DB_GetTagLevel (DcmTagKey, DB_LEVEL *) ; 00375 extern OFCondition DB_GetTagKeyAttr (DcmTagKey, DB_KEY_TYPE *) ; 00376 extern OFCondition DB_GetTagKeyClass (DcmTagKey, DB_KEY_CLASS *) ; 00377 extern int DB_CharsetInElement (char *charset, DB_SmallDcmElmt *elt) ; 00378 extern void DB_RemoveSpaces (char *string) ; 00379 extern void DB_RemoveEnclosingSpaces (char *string) ; 00380 extern long DB_DateToLong (char *date) ; 00381 extern double DB_TimeToDouble (char *time) ; 00382 extern void DB_DuplicateElement (DB_SmallDcmElmt *src, DB_SmallDcmElmt *dst) ; 00383 extern int DB_MatchDate (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt) ; 00384 extern int DB_MatchTime (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt) ; 00385 extern int DB_MatchUID (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt) ; 00386 extern int DB_MatchStrings (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt) ; 00387 extern int DB_Match (DB_SmallDcmElmt *mod, DB_SmallDcmElmt *elt) ; 00388 extern void DB_MakeResponseList (DB_Private_Handle *phandle, IdxRecord *idxRec) ; 00389 extern OFCondition DB_HierarchicalCompare (DB_Private_Handle *phandle, IdxRecord *idxRec, 00390 DB_LEVEL level, DB_LEVEL infLevel, int *match) ; 00391 extern OFCondition DB_CheckupinStudyDesc(DB_Private_Handle *phandle, StudyDescRecord *pStudyDesc, char *StudyUID, long imageSize) ; 00392 extern int DB_MatchStudyUIDInStudyDesc(StudyDescRecord *pStudyDesc, char *StudyUID, int maxStudiesAllowed) ; 00393 extern OFCondition DB_GetStudyDesc(DB_Private_Handle *phandle, StudyDescRecord *pStudyDesc) ; 00394 extern OFCondition DB_DeleteOldestImages(DB_Private_Handle *phandle, StudyDescRecord *pStudyDesc, int StudyNum, char *StudyUID, long RequiredSize) ; 00395 extern int DB_DeleteOldestStudy(DB_Private_Handle *phandle, StudyDescRecord *pStudyDesc) ; 00396 extern "C" int DB_Compare(const void *e1, const void *e2) ; 00397 00398 extern OFCondition DB_lock(DB_Private_Handle *phandle, OFBool exclusive); 00399 extern OFCondition DB_unlock(DB_Private_Handle *phandle); 00400 00401 extern OFBool DB_doCheckFindIdentifier(); 00402 extern OFBool DB_doCheckMoveIdentifier(); 00403 00404 extern void DB_printDataset(DcmDataset *ds); 00405 00406 #endif 00407 00408 /* 00409 ** CVS Log 00410 ** $Log: dbpriv.h,v $ 00411 ** Revision 1.15 2001/10/12 12:43:06 meichel 00412 ** Adapted imagectn to OFCondition based dcmnet module (supports strict mode). 00413 ** 00414 ** Revision 1.14 2001/06/01 15:51:26 meichel 00415 ** Updated copyright header 00416 ** 00417 ** Revision 1.13 2000/12/15 13:25:14 meichel 00418 ** Declared qsort() and signal() callback functions as extern "C", avoids 00419 ** warnings on Sun C++ 5.x compiler. 00420 ** 00421 ** Revision 1.12 2000/10/16 11:34:48 joergr 00422 ** Replaced presentation description by a more general instance description. 00423 ** 00424 ** Revision 1.11 2000/03/08 16:41:07 meichel 00425 ** Updated copyright header. 00426 ** 00427 ** Revision 1.10 2000/03/06 16:27:55 meichel 00428 ** Added constructor declarations needed by gcc 2.5.8. 00429 ** 00430 ** Revision 1.9 1999/08/31 09:50:01 meichel 00431 ** Introduced default constructors for some imagectn structs 00432 ** in order to passify some compiler warnings. 00433 ** 00434 ** Revision 1.8 1999/07/14 12:03:40 meichel 00435 ** Updated data dictionary for supplement 29, 39, 33_lb, CP packet 4 and 5. 00436 ** Corrected dcmtk applications for changes in attribute name constants. 00437 ** 00438 ** Revision 1.7 1999/06/10 12:12:12 meichel 00439 ** Adapted imagectn to new command line option scheme. 00440 ** Added support for Patient/Study Only Q/R model and C-GET (experimental). 00441 ** 00442 ** Revision 1.6 1999/04/29 15:23:15 joergr 00443 ** Added PresentationLabel to index file. 00444 ** 00445 ** Revision 1.5 1999/04/28 09:21:10 joergr 00446 ** Added item PresentationDescription to index record. 00447 ** 00448 ** Revision 1.4 1999/01/29 12:40:11 meichel 00449 ** Simplified some index file related code in imagectn to ease maintenance. 00450 ** 00451 ** Revision 1.3 1999/01/29 09:54:19 vorwerk 00452 ** Recordsize changed. 00453 ** 00454 ** Revision 1.2 1998/12/22 15:16:29 vorwerk 00455 ** - add elements in IdxRecord 00456 ** char StudyDescription [LO_MAX_LENGTH+1] ; 00457 ** char NameOfPhysiciansReadingStudy [PN_MAX_LENGTH+1] ; 00458 ** char SOPInstanceUID [UI_MAX_LENGTH+1] ; 00459 ** DVIFhierarchyStatus hstat; 00460 ** char SeriesDate [DA_MAX_LENGTH+1] ; 00461 ** char SeriesTime [TM_MAX_LENGTH+1] ; 00462 ** char SeriesDescription [LO_MAX_LENGTH+1] ; 00463 ** char ProtocolName [LO_MAX_LENGTH+1] ; 00464 ** char OperatorsName [PN_MAX_LENGTH+1] ; 00465 ** char PerformingPhysiciansName [PN_MAX_LENGTH+1] ; 00466 ** 00467 ** Revision 1.1 1998/12/22 15:11:27 vorwerk 00468 ** removed from libsrc and added in include 00469 ** 00470 ** Revision 1.8 1997/07/21 08:59:57 andreas 00471 ** - Replace all boolean types (BOOLEAN, CTNBOOLEAN, DICOM_BOOL, BOOL) 00472 ** with one unique boolean type OFBool. 00473 ** 00474 ** Revision 1.7 1997/06/26 12:51:00 andreas 00475 ** - Changed names for enumeration values in DB_KEY_TYPE since the value 00476 ** OPTIONAL was predefined for Windows 95/NT 00477 ** - Include Additional headers (winsock.h, io.h) for Windows NT/95 00478 ** 00479 ** Revision 1.6 1996/05/30 17:45:18 hewett 00480 ** Modified the definition of a static array of structs which was causing 00481 ** some C++ compilers problems. 00482 ** 00483 ** Revision 1.5 1996/05/06 07:39:08 hewett 00484 ** Added explicit initialization (bzero) of idx record. Rearranged 00485 ** size of string attributes in idx record. 00486 ** 00487 ** Revision 1.4 1996/04/29 15:16:05 hewett 00488 ** Removed unused DB_GetUSValue(). 00489 ** 00490 ** Revision 1.3 1996/04/25 16:34:37 hewett 00491 ** Added workaround for gcc 2.5.8 compiler problem. The compiler was 00492 ** complaining that the structs DB_FindAttr and IdxRecord had a bad 00493 ** constructor (they didn't have one!). Conditionally added a constructor. 00494 ** 00495 ** Revision 1.2 1996/04/22 11:21:57 hewett 00496 ** Added declaration of DB_printDataset(). Useful for debugging help. 00497 ** 00498 ** Revision 1.1.1.1 1996/03/28 19:25:00 hewett 00499 ** Oldenburg Image CTN Software ported to use the dcmdata C++ toolkit. 00500 ** 00501 ** 00502 */