dcmsr/include/dsrtypes.h

00001 /* 00002 * 00003 * Copyright (C) 2000-2004, 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: DSRTypes 00024 * 00025 * Last Update: $Author: joergr $ 00026 * Update Date: $Date: 2004/01/20 15:35:54 $ 00027 * CVS/RCS Revision: $Revision: 1.41 $ 00028 * Status: $State: Exp $ 00029 * 00030 * CVS/RCS Log at end of file 00031 * 00032 */ 00033 00034 00035 #ifndef DSRTYPES_H 00036 #define DSRTYPES_H 00037 00038 #include "osconfig.h" /* make sure OS specific configuration is included first */ 00039 00040 #include "dctk.h" 00041 00042 #include "ofstream.h" 00043 #include "oftypes.h" 00044 #include "ofcond.h" 00045 00046 00047 /*---------------------* 00048 * macro definitions * 00049 *---------------------*/ 00050 00051 // private coding scheme designator used for internal codes 00052 #define OFFIS_CODING_SCHEME_DESIGNATOR "99_OFFIS_DCMTK" 00053 // name of the private coding scheme 00054 #define OFFIS_CODING_SCHEME_NAME "OFFIS DCMTK Coding Scheme" 00055 // organization responsible for the private coding scheme 00056 #define OFFIS_RESPONSIBLE_ORGANIZATION "Kuratorium OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany" 00057 00058 // protocol, hostname and CGI script name used for HTML hyperlinks to composite objects 00059 #define HTML_HYPERLINK_PREFIX_FOR_CGI "http://localhost/dicom.cgi" 00060 // URL of the DICOM toolkit DCMTK 00061 #define DCMTK_INTERNET_URL "http://dicom.offis.de/dcmtk" 00062 00063 // XML namespace URI for dcmsr module 00064 #define DCMSR_XML_NAMESPACE_URI "http://dicom.offis.de/dcmsr" 00065 // XML Schema file for dcmsr module 00066 #define DCMSR_XML_XSD_FILE "dsr2xml.xsd" 00067 // XML Schema Instance URI 00068 #define XML_SCHEMA_INSTANCE_URI "http://www.w3.org/2001/XMLSchema-instance" 00069 00070 00071 /*------------------------* 00072 * forward declarations * 00073 *------------------------*/ 00074 00075 class DSRXMLCursor; 00076 class DSRXMLDocument; 00077 class DSRDocumentTreeNode; 00078 class DSRIODConstraintChecker; 00079 00080 00081 /*-----------------------* 00082 * contant definitions * 00083 *-----------------------*/ 00084 00090 00092 extern const OFCondition SR_EC_UnknownDocumentType; 00093 00095 extern const OFCondition SR_EC_InvalidDocument; 00096 00098 extern const OFCondition SR_EC_InvalidDocumentTree; 00099 00101 extern const OFCondition SR_EC_MandatoryAttributeMissing; 00102 00104 extern const OFCondition SR_EC_InvalidValue; 00105 00107 extern const OFCondition SR_EC_UnsupportedValue; 00108 00110 extern const OFCondition SR_EC_UnknownValueType; 00111 00113 extern const OFCondition SR_EC_UnknownRelationshipType; 00114 00116 extern const OFCondition SR_EC_InvalidByValueRelationship; 00117 00119 extern const OFCondition SR_EC_InvalidByReferenceRelationship; 00120 00122 extern const OFCondition SR_EC_SOPInstanceNotFound; 00123 00125 extern const OFCondition SR_EC_DifferentSOPClassesForAnInstance; 00126 00128 extern const OFCondition SR_EC_CodingSchemeNotFound; 00129 00131 extern const OFCondition SR_EC_CorruptedXMLStructure; 00133 00134 00135 /*---------------------* 00136 * class declaration * 00137 *---------------------*/ 00138 00144 class DSRTypes 00145 { 00146 00147 public: 00148 00149 // --- constant declarations --- 00150 00156 00158 static const size_t RF_readDigitalSignatures; 00159 00161 static const size_t RF_ignoreRelationshipConstraints; 00162 00164 static const size_t RF_ignoreContentItemErrors; 00165 00167 static const size_t RF_skipInvalidContentItems; 00168 00170 static const size_t RF_verboseDebugMode; 00171 00173 static const size_t RF_showCurrentlyProcessedItem; 00175 00176 00183 00185 static const size_t HF_neverExpandChildrenInline; 00186 00188 static const size_t HF_renderInlineCodes; 00189 00191 static const size_t HF_renderConceptNameCodes; 00192 00194 static const size_t HF_renderNumericUnitCodes; 00195 00197 static const size_t HF_useCodeMeaningAsUnit; 00198 00200 static const size_t HF_renderPatientTitle; 00201 00203 static const size_t HF_renderNoDocumentHeader; 00204 00206 static const size_t HF_renderDcmtkFootnote; 00207 00209 static const size_t HF_renderFullData; 00210 00212 static const size_t HF_copyStyleSheetContent; 00213 00215 static const size_t HF_version32Compatibility; 00216 00218 static const size_t HF_addDocumentTypeReference; 00219 00221 static const size_t HF_renderItemsSeparately; 00222 00224 static const size_t HF_renderItemInline; 00225 00227 static const size_t HF_currentlyInsideAnnex; 00228 00230 static const size_t HF_createFootnoteReferences; 00231 00233 static const size_t HF_convertNonASCIICharacters; 00234 00236 static const size_t HF_renderAllCodes; 00237 00239 static const size_t HF_internalUseOnly; 00241 00242 00248 00250 static const size_t XF_writeEmptyTags; 00251 00253 static const size_t XF_writeTemplateIdentification; 00254 00256 static const size_t XF_alwaysWriteItemIdentifier; 00257 00259 static const size_t XF_codeComponentsAsAttribute; 00260 00262 static const size_t XF_relationshipTypeAsAttribute; 00263 00265 static const size_t XF_valueTypeAsAttribute; 00266 00268 static const size_t XF_useDcmsrNamespace; 00269 00271 static const size_t XF_addSchemaReference; 00272 00274 static const size_t XF_validateSchema; 00275 00277 static const size_t XF_enableLibxmlErrorOutput; 00278 00280 static const size_t XF_encodeEverythingAsAttribute; 00282 00283 00289 00291 static const size_t PF_printItemPosition; 00292 00294 static const size_t PF_shortenLongItemValues; 00295 00297 static const size_t PF_printSOPInstanceUID; 00298 00300 static const size_t PF_printConceptNameCodes; 00301 00303 static const size_t PF_printNoDocumentHeader; 00304 00306 static const size_t PF_printTemplateIdentification; 00307 00309 static const size_t PF_printAllCodes; 00311 00312 00313 // --- type definitions --- 00314 00317 enum E_DocumentType 00318 { 00320 DT_invalid, 00322 DT_unknown = DT_invalid, 00324 DT_BasicTextSR, 00326 DT_EnhancedSR, 00328 DT_ComprehensiveSR, 00330 DT_KeyObjectDoc, 00332 DT_MammographyCadSR, 00334 DT_ChestCadSR, 00336 DT_ProcedureLog, 00338 DT_last = DT_ProcedureLog 00339 }; 00340 00343 enum E_RelationshipType 00344 { 00346 RT_invalid, 00348 RT_unknown = RT_invalid, 00350 RT_isRoot, 00352 RT_contains, 00354 RT_hasObsContext, 00356 RT_hasAcqContext, 00358 RT_hasConceptMod, 00360 RT_hasProperties, 00362 RT_inferredFrom, 00364 RT_selectedFrom, 00366 RT_last = RT_selectedFrom 00367 }; 00368 00371 enum E_ValueType 00372 { 00374 VT_invalid, 00376 VT_unknown = VT_invalid, 00378 VT_Text, 00380 VT_Code, 00382 VT_Num, 00384 VT_DateTime, 00386 VT_Date, 00388 VT_Time, 00390 VT_UIDRef, 00392 VT_PName, 00394 VT_SCoord, 00396 VT_TCoord, 00398 VT_Composite, 00400 VT_Image, 00402 VT_Waveform, 00404 VT_Container, 00406 VT_byReference, 00408 VT_last = VT_byReference 00409 }; 00410 00413 enum E_GraphicType 00414 { 00416 GT_invalid, 00418 GT_unknown = GT_invalid, 00420 GT_Point, 00422 GT_Multipoint, 00424 GT_Polyline, 00426 GT_Circle, 00428 GT_Ellipse, 00430 GT_last = GT_Ellipse 00431 }; 00432 00435 enum E_TemporalRangeType 00436 { 00438 TRT_invalid, 00440 TRT_unknown = TRT_invalid, 00442 TRT_Point, 00444 TRT_Multipoint, 00446 TRT_Segment, 00448 TRT_Multisegment, 00450 TRT_Begin, 00452 TRT_End, 00454 TRT_last = TRT_End 00455 }; 00456 00459 enum E_ContinuityOfContent 00460 { 00462 COC_invalid, 00464 COC_Separate, 00466 COC_Continuous, 00468 COC_last = COC_Continuous 00469 }; 00470 00473 enum E_CompletionFlag 00474 { 00476 CF_invalid, 00478 CF_Partial, 00480 CF_Complete, 00482 CF_last = CF_Complete 00483 }; 00484 00487 enum E_VerificationFlag 00488 { 00490 VF_invalid, 00492 VF_Unverified, 00494 VF_Verified, 00496 VF_last = VF_Verified 00497 }; 00498 00501 enum E_CharacterSet 00502 { 00504 CS_invalid, 00506 CS_unknown = CS_invalid, 00508 CS_ASCII, 00510 CS_Latin1, 00512 CS_Latin2, 00514 CS_Latin3, 00516 CS_Latin4, 00518 CS_Latin5, 00520 CS_Cyrillic, 00522 CS_Arabic, 00524 CS_Greek, 00526 CS_Hebrew, 00528 CS_Thai, 00530 CS_Japanese, 00532 CS_last = CS_Japanese 00533 }; 00534 00537 enum E_AddMode 00538 { 00540 AM_afterCurrent, 00542 AM_beforeCurrent, 00544 AM_belowCurrent 00545 }; 00546 00547 00548 // --- conversion functions --- 00549 00554 static const char *documentTypeToSOPClassUID(const E_DocumentType documentType); 00555 00560 static const char *documentTypeToModality(const E_DocumentType documentType); 00561 00567 static const char *documentTypeToReadableName(const E_DocumentType documentType); 00568 00575 static const char *documentTypeToDocumentTitle(const E_DocumentType documentType, 00576 OFString &documentTitle); 00577 00582 static const char *relationshipTypeToDefinedTerm(const E_RelationshipType relationshipType); 00583 00589 static const char *relationshipTypeToReadableName(const E_RelationshipType relationshipType); 00590 00595 static const char *valueTypeToDefinedTerm(const E_ValueType valueType); 00596 00601 static const char *valueTypeToXMLTagName(const E_ValueType valueType); 00602 00608 static const char *valueTypeToReadableName(const E_ValueType valueType); 00609 00614 static const char *graphicTypeToEnumeratedValue(const E_GraphicType graphicType); 00615 00621 static const char *graphicTypeToReadableName(const E_GraphicType graphicType); 00622 00627 static const char *temporalRangeTypeToEnumeratedValue(const E_TemporalRangeType temporalRangeType); 00628 00634 static const char *temporalRangeTypeToReadableName(const E_TemporalRangeType temporalRangeType); 00635 00640 static const char *continuityOfContentToEnumeratedValue(const E_ContinuityOfContent continuityOfContent); 00641 00646 static const char *completionFlagToEnumeratedValue(const E_CompletionFlag completionFlag); 00647 00652 static const char *verificationFlagToEnumeratedValue(const E_VerificationFlag verificationFlag); 00653 00658 static const char *characterSetToDefinedTerm(const E_CharacterSet characterSet); 00659 00665 static const char *characterSetToHTMLName(const E_CharacterSet characterSet); 00666 00672 static const char *characterSetToXMLName(const E_CharacterSet characterSet); 00673 00678 static E_DocumentType sopClassUIDToDocumentType(const OFString &sopClassUID); 00679 00684 static E_RelationshipType definedTermToRelationshipType(const OFString &definedTerm); 00685 00690 static E_ValueType definedTermToValueType(const OFString &definedTerm); 00691 00696 static E_ValueType xmlTagNameToValueType(const OFString &xmlTagName); 00697 00702 static E_GraphicType enumeratedValueToGraphicType(const OFString &enumeratedValue); 00703 00708 static E_TemporalRangeType enumeratedValueToTemporalRangeType(const OFString &enumeratedValue); 00709 00714 static E_ContinuityOfContent enumeratedValueToContinuityOfContent(const OFString &enumeratedValue); 00715 00720 static E_CompletionFlag enumeratedValueToCompletionFlag(const OFString &enumeratedValue); 00721 00726 static E_VerificationFlag enumeratedValueToVerificationFlag(const OFString &enumeratedValue); 00727 00732 static E_CharacterSet definedTermToCharacterSet(const OFString &definedTerm); 00733 00734 00735 // --- misc helper functions --- 00736 00743 static OFBool isDocumentTypeSupported(const E_DocumentType documentType); 00744 00750 static const OFString &currentDate(OFString &dateString); 00751 00758 static const OFString &currentTime(OFString &timeString); 00759 00768 static const OFString &currentDateTime(OFString &dateTimeString); 00769 00776 static const OFString &dicomToReadableDate(const OFString &dicomDate, 00777 OFString &readableDate); 00778 00786 static const OFString &dicomToReadableTime(const OFString &dicomTime, 00787 OFString &readableTime); 00788 00796 static const OFString &dicomToReadableDateTime(const OFString &dicomDateTime, 00797 OFString &readableDateTime); 00798 00808 static const OFString &dicomToReadablePersonName(const OFString &dicomPersonName, 00809 OFString &readablePersonName); 00810 00822 static const OFString &dicomToXMLPersonName(const OFString &dicomPersonName, 00823 OFString &xmlPersonName, 00824 const OFBool writeEmptyValue = OFFalse); 00825 00831 static const char *numberToString(const size_t number, 00832 char *stringValue); 00833 00838 static size_t stringToNumber(const char *stringValue); 00839 00847 static const OFString &convertToPrintString(const OFString &sourceString, 00848 OFString &printString); 00849 00867 static const OFString &convertToMarkupString(const OFString &sourceString, 00868 OFString &markupString, 00869 const OFBool convertNonASCII = OFFalse, 00870 const OFBool newlineAllowed = OFFalse, 00871 const OFBool xmlMode = OFFalse); 00872 00881 static OFBool checkForValidUIDFormat(const OFString &stringValue); 00882 00888 static DSRIODConstraintChecker *createIODConstraintChecker(const E_DocumentType documentType); 00889 00897 static DSRDocumentTreeNode *createDocumentTreeNode(const E_RelationshipType relationshipType, 00898 const E_ValueType valueType); 00899 00900 00901 // --- DICOM data structure access functions --- 00902 00910 static OFCondition addElementToDataset(OFCondition &result, 00911 DcmItem &dataset, 00912 DcmElement *delem); 00913 00919 static void removeAttributeFromSequence(DcmSequenceOfItems &sequence, 00920 const DcmTagKey &tagKey); 00921 00929 static OFCondition getElementFromDataset(DcmItem &dataset, 00930 DcmElement &delem); 00931 00941 static OFCondition getSequenceFromDataset(DcmItem &dataset, 00942 DcmSequenceOfItems &dseq); 00943 00948 static const char *getStringValueFromElement(const DcmElement &delem); 00949 00955 static const OFString &getStringValueFromElement(const DcmElement &delem, 00956 OFString &stringValue); 00957 00963 static const OFString &getPrintStringFromElement(const DcmElement &delem, 00964 OFString &stringValue); 00965 00972 static const OFString &getMarkupStringFromElement(const DcmElement &delem, 00973 OFString &stringValue, 00974 const OFBool convertNonASCII = OFFalse); 00975 00984 static OFCondition getStringValueFromDataset(DcmItem &dataset, 00985 const DcmTagKey &tagKey, 00986 OFString &stringValue); 00987 00996 static OFCondition putStringValueToDataset(DcmItem &dataset, 00997 const DcmTag &tag, 00998 const OFString &stringValue, 00999 const OFBool allowEmpty = OFTrue); 01000 01013 static OFBool checkElementValue(DcmElement &delem, 01014 const OFString &vm, 01015 const OFString &type, 01016 OFConsole *stream = NULL, 01017 const OFCondition &searchCond = EC_Normal, 01018 const char *moduleName = NULL); 01019 01033 static OFCondition getAndCheckElementFromDataset(DcmItem &dataset, 01034 DcmElement &delem, 01035 const OFString &vm, 01036 const OFString &type, 01037 OFConsole *stream = NULL, 01038 const char *moduleName = NULL); 01039 01055 static OFCondition getAndCheckStringValueFromDataset(DcmItem &dataset, 01056 const DcmTagKey &tagKey, 01057 OFString &stringValue, 01058 const OFString &vm, 01059 const OFString &type, 01060 OFConsole *stream = NULL, 01061 const char *moduleName = NULL); 01062 01063 // --- output functions --- 01064 01069 static void printMessage(OFConsole *stream, 01070 const char *message); 01071 01077 static void printWarningMessage(OFConsole *stream, 01078 const char *message); 01079 01085 static void printErrorMessage(OFConsole *stream, 01086 const char *message); 01087 01095 static void printInvalidContentItemMessage(OFConsole *stream, 01096 const char *action, 01097 const DSRDocumentTreeNode *node, 01098 const char *location = NULL); 01099 01108 static void printContentItemErrorMessage(OFConsole *stream, 01109 const char *action, 01110 const OFCondition &result, 01111 const DSRDocumentTreeNode *node, 01112 const char *location = NULL); 01113 01120 static void printUnknownValueWarningMessage(OFConsole *stream, 01121 const char *valueName, 01122 const char *readValue = NULL, 01123 const char *action = "Reading"); 01124 01133 static OFBool writeStringValueToXML(ostream &stream, 01134 const OFString &stringValue, 01135 const OFString &tagName, 01136 const OFBool writeEmptyValue = OFFalse); 01137 01147 static OFBool writeStringFromElementToXML(ostream &stream, 01148 DcmElement &delem, 01149 const OFString &tagName, 01150 const OFBool writeEmptyValue = OFFalse); 01151 01162 static size_t createHTMLAnnexEntry(ostream &docStream, 01163 ostream &annexStream, 01164 const OFString &referenceText, 01165 size_t &annexNumber); 01166 01176 static size_t createHTMLFootnote(ostream &docStream, 01177 ostream &footnoteStream, 01178 size_t &footnoteNumber, 01179 const size_t nodeID); 01180 01188 static OFCondition appendStream(ostream &mainStream, 01189 OFOStringStream &tempStream, 01190 const char *heading = NULL); 01191 }; 01192 01193 01194 #endif 01195 01196 01197 /* 01198 * CVS/RCS Log: 01199 * $Log: dsrtypes.h,v $ 01200 * Revision 1.41 2004/01/20 15:35:54 joergr 01201 * Added new command line option which allows to write the item identifier "id" 01202 * (XML attribute) even if it is not required (because the item is not referenced 01203 * by any other item). Useful for debugging purposes. 01204 * 01205 * Revision 1.40 2004/01/05 14:36:02 joergr 01206 * Removed acknowledgements with e-mail addresses from CVS log. 01207 * 01208 * Revision 1.39 2003/12/01 15:46:18 joergr 01209 * Changed XML encoding of by-reference relationships if flag 01210 * XF_valueTypeAsAttribute is set. 01211 * 01212 * Revision 1.38 2003/10/30 17:51:00 joergr 01213 * Added new command line options which allow to print/write the template 01214 * identification of a content item. 01215 * 01216 * Revision 1.37 2003/10/09 12:53:12 joergr 01217 * Added support for Procedure Log. 01218 * 01219 * Revision 1.36 2003/10/06 09:52:58 joergr 01220 * Added new flag which allows to ignore content item errors when reading an SR 01221 * document (e.g. missing value type specific attributes). 01222 * 01223 * Revision 1.35 2003/09/15 14:18:54 joergr 01224 * Introduced new class to facilitate checking of SR IOD relationship content 01225 * constraints. Replaced old implementation distributed over numerous classes. 01226 * 01227 * Revision 1.34 2003/09/10 13:16:13 joergr 01228 * Replaced PrivateCodingSchemeUID by new CodingSchemeIdenticationSequence as 01229 * required by CP 324. 01230 * 01231 * Revision 1.33 2003/08/07 17:31:00 joergr 01232 * Removed libxml dependency from header files. Simplifies linking (MSVC). 01233 * 01234 * Revision 1.32 2003/08/07 13:05:26 joergr 01235 * Added readXML functionality. Added support for Chest CAD SR. 01236 * Added new option --add-schema-reference to command line tool dsr2xml. 01237 * Renamed parameters/variables "string" to avoid name clash with STL class. 01238 * 01239 * Revision 1.31 2003/04/17 18:57:38 joergr 01240 * Replace LF and CR by 
 and 
 in XML mode instead of ¶ (para). 01241 * 01242 * Revision 1.30 2003/04/01 14:59:13 joergr 01243 * Added support for XML namespaces. 01244 * 01245 * Revision 1.29 2002/08/02 12:38:32 joergr 01246 * Enhanced debug output of dcmsr::read() routines (e.g. add position string 01247 * of invalid content items to error messages). 01248 * 01249 * Revision 1.28 2002/07/22 14:21:20 joergr 01250 * Added new print flag to suppress the output of general document information. 01251 * 01252 * Revision 1.27 2002/05/14 08:14:51 joergr 01253 * Updated comments. 01254 * 01255 * Revision 1.26 2002/05/07 12:49:32 joergr 01256 * Added support for the Current Requested Procedure Evidence Sequence and the 01257 * Pertinent Other Evidence Sequence to the dcmsr module. 01258 * 01259 * Revision 1.25 2002/05/02 14:08:23 joergr 01260 * Added support for standard and non-standard string streams (which one is 01261 * supported is detected automatically via the configure mechanism). 01262 * 01263 * Revision 1.24 2002/04/16 13:50:52 joergr 01264 * Added configurable support for C++ ANSI standard includes (e.g. streams). 01265 * 01266 * Revision 1.23 2002/04/11 13:02:35 joergr 01267 * Corrected typo and/or enhanced documentation. 01268 * 01269 * Revision 1.22 2001/11/09 16:10:54 joergr 01270 * Added preliminary support for Mammography CAD SR. 01271 * 01272 * Revision 1.21 2001/10/10 15:28:04 joergr 01273 * Changed parameter DcmTagKey to DcmTag in DcmItem::putAndInsert... methods 01274 * to support elements which are not in the data dictionary (e.g. private 01275 * extensions). 01276 * 01277 * Revision 1.20 2001/10/02 12:05:46 joergr 01278 * Adapted module "dcmsr" to the new class OFCondition. Introduced module 01279 * specific error codes. 01280 * 01281 * Revision 1.19 2001/10/01 15:06:54 joergr 01282 * Introduced new general purpose functions to get/set person names, date, time 01283 * and date/time. 01284 * 01285 * Revision 1.18 2001/09/26 13:04:14 meichel 01286 * Adapted dcmsr to class OFCondition 01287 * 01288 * Revision 1.17 2001/06/20 15:03:00 joergr 01289 * Added minimal support for new SOP class Key Object Selection Document 01290 * (suppl. 59). 01291 * Added new debugging features (additional flags) to examine "corrupted" SR 01292 * documents. 01293 * 01294 * Revision 1.16 2001/04/03 08:24:00 joergr 01295 * Added new command line option: ignore relationship content constraints 01296 * specified for each SR document class. 01297 * 01298 * Revision 1.15 2001/02/13 16:36:05 joergr 01299 * Allow newline characters (encoded as ¶) in XML documents. 01300 * 01301 * Revision 1.14 2001/02/02 14:37:33 joergr 01302 * Added new option to dsr2xml allowing to specify whether value and/or 01303 * relationship type are to be encoded as XML attributes or elements. 01304 * 01305 * Revision 1.13 2001/01/25 11:47:43 joergr 01306 * Always remove signature sequences from certain dataset sequences (e.g. 01307 * VerifyingObserver or PredecessorDocuments). 01308 * 01309 * Revision 1.12 2001/01/18 15:52:11 joergr 01310 * Encode PN components in separate XML tags. 01311 * 01312 * Revision 1.11 2000/12/08 13:45:17 joergr 01313 * Removed optional fractional second part from time value. 01314 * 01315 * Revision 1.10 2000/11/09 20:32:08 joergr 01316 * Added support for non-ASCII characters in HTML 3.2 (use numeric value). 01317 * 01318 * Revision 1.9 2000/11/09 11:31:46 joergr 01319 * Reordered renderHTML flags (internal flags to the end). 01320 * 01321 * Revision 1.8 2000/11/07 18:14:05 joergr 01322 * Added new command line option allowing to choose code value or meaning to be 01323 * rendered as the numeric measurement unit. 01324 * Enhanced rendered HTML output of date, time, datetime and pname. 01325 * 01326 * Revision 1.7 2000/11/06 11:21:04 joergr 01327 * Changes structure of HTML hyperlinks to composite objects (now using pseudo 01328 * CGI script). 01329 * 01330 * Revision 1.6 2000/11/01 16:18:34 joergr 01331 * Added support for conversion to XML. 01332 * Added support for Cascading Style Sheet (CSS) used optionally for HTML 01333 * rendering. 01334 * Enhanced support for specific character sets. 01335 * 01336 * Revision 1.5 2000/10/26 14:22:09 joergr 01337 * Added support for "Comprehensive SR". 01338 * Added support for TCOORD content item. 01339 * Added new flag specifying whether to add a "dcmtk" footnote to the rendered 01340 * HTML document or not. 01341 * Added check routine for valid UID strings. 01342 * 01343 * Revision 1.4 2000/10/18 17:10:25 joergr 01344 * Added new method allowing to get and check string values from dataset. 01345 * 01346 * Revision 1.3 2000/10/16 16:31:09 joergr 01347 * Updated comments. 01348 * 01349 * Revision 1.2 2000/10/16 11:52:58 joergr 01350 * Added new options: number nested items instead of indenting them, print SOP 01351 * instance UID of referenced composite objects. 01352 * 01353 * Revision 1.1 2000/10/13 07:49:35 joergr 01354 * Added new module 'dcmsr' providing access to DICOM structured reporting 01355 * documents (supplement 23). Doc++ documentation not yet completed. 01356 * 01357 * 01358 */


Generated on 4 Nov 2004 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.3.8