Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | Related Pages

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 29 Apr 2005 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.4.2