From: Mathieu Malaterre Date: Mon, 7 Nov 2022 15:38:33 +0000 (+0100) Subject: New upstream version 3.6.8~git20221024.b8950f9 X-Git-Tag: archive/raspbian/3.6.9-4+rpi1^2~26^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4d10e36c17d521ff72d9848358f6e321a6c92f86;p=dcmtk.git New upstream version 3.6.8~git20221024.b8950f9 --- diff --git a/dcmdata/data/dicom.dic b/dcmdata/data/dicom.dic index fc0378c7..e8f575f4 100644 --- a/dcmdata/data/dicom.dic +++ b/dcmdata/data/dicom.dic @@ -21,8 +21,8 @@ # DICONDE (Digital Imaging and Communication in Nondestructive Evaluation) and # DICOS (Digital Imaging and Communications in Security) standard. # -# Generated automatically from DICOM PS 3.6-2022c and PS 3.7-2022c. -# File created on 2022-07-25 09:08:29 by J. Riesmeier on thinkpad2. +# Generated automatically from DICOM PS 3.6-2022d and PS 3.7-2022d. +# File created on 2022-10-17 21:01:54 by J. Riesmeier on thinkpad2. # # In addition, the data dictionary entries from the following final text # supplements and correction items (CP) have been incorporated: @@ -246,6 +246,7 @@ (0008,0426) CS InventoryCompletionStatus 1 DICOM (0008,0427) UL NumberOfStudyRecordsInInstance 1 DICOM (0008,0428) UV TotalNumberOfStudyRecords 1 DICOM +(0008,0429) UV MaximumNumberOfRecords 1 DICOM (0008,1010) SH StationName 1 DICOM (0008,1030) LO StudyDescription 1 DICOM (0008,1032) SQ ProcedureCodeSequence 1 DICOM @@ -421,6 +422,7 @@ (0012,0051) ST ClinicalTrialTimePointDescription 1 DICOM (0012,0052) FD LongitudinalTemporalOffsetFromEvent 1 DICOM (0012,0053) CS LongitudinalTemporalEventType 1 DICOM +(0012,0054) SQ ClinicalTrialTimePointTypeCodeSequence 1 DICOM (0012,0060) LO ClinicalTrialCoordinatingCenterName 1 DICOM (0012,0062) CS PatientIdentityRemoved 1 DICOM (0012,0063) LO DeidentificationMethod 1-n DICOM diff --git a/dcmdata/docs/img2dcm.man b/dcmdata/docs/img2dcm.man index 46015349..856c8766 100644 --- a/dcmdata/docs/img2dcm.man +++ b/dcmdata/docs/img2dcm.man @@ -15,12 +15,12 @@ img2dcm [options] imgfile-in... dcmfile-out \section img2dcm_description DESCRIPTION The \b img2dcm tool serves as a conversion tool from a standard image format -like JPEG or BMP to DICOM. Different output SOP Classes can be selected. The -additional information (regarding patients, series, etc.) stored in the DICOM -output file can be extracted from other DICOM files which serve as a "template" -for the resulting DICOM object. \b img2dcm can also be configured to invent -missing DICOM type 1 and type 2 attributes to work even without any template -dataset. +like JPEG (including JPEG-LS) or BMP to DICOM. Different output SOP Classes +can be selected. The additional information (regarding patients, series, etc.) +stored in the DICOM output file can be extracted from other DICOM files which +serve as a "template" for the resulting DICOM object. \b img2dcm can also be +configured to invent missing DICOM type 1 and type 2 attributes to work even +without any template dataset. \section img2dcm_parameters PARAMETERS \verbatim @@ -314,6 +314,7 @@ the specific character set of that template is used for the generated DICOM file If the \e --study-from or \e --series-from options are used additionally, img2dcm will try to convert the character set of these attributes to that of the template, and will report an error if that is not possible. + If the \e --study-from or \e --series-from options are used without a template, the specific character set of this source is used for the generated DICOM file. Any keys specified on the command line with the \e --key option are treated @@ -339,17 +340,24 @@ the actual encoding of the data inside the JPEG file. Therefore, the following Transfer Syntaxes (and their corresponding JPEG encodings) are used by the JPEG plugin: -\li JPEG Coding Process 1 - Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit - SOP Class = 1.2.840.10008.1.2.4.50 + Color and grayscale images are supported. @@ -381,10 +389,57 @@ JFIF information is always removed by \b img2dcm. However, when using this option, the APP2 marker is retained, but \b img2dcm does not create an equivalent ICC Profile (0028,2000) attribute. +\subsubsection img2dcm_jpegls_input_plugin JPEG-LS Input Plugin + +The JPEG-LS plugin has been integrated directly into the main JPEG plugin. +There is no need for the user to explicitly state in advance if input is JPEG +or JPEG-LS. + +For JPEGL-LS, the original JPEG-LS from the source file is not decoded but +extracted and slightly transformed (e. g. APP8 marker is cut off) to allow fast +conversion of even big JPEG-LS files without the need of decoding and +re-encoding. + +The JPEG-LS plugin chooses the necessary output transfer syntax automatically +depending on the actual encoding of the data inside the JPEG-LS file. +Therefore, the following Transfer Syntaxes (and there corresponding JPEG-LS +encodings) are used by the JPEG-LS plugin: + + + +Color and grayscale images are supported. CP-1843 enforce that the value of +Planar Configuration (0028,0006) is irrelevant since the manner of encoding +components is specified in the JPEG-LS bit stream as component, line or sample +interleaved, hence it shall be set to 0. Since no color transformation +specific for JPEG-LS is currently defined in DICOM, it is assumed that the +JPEG-LS stream is encoded in RGB color space. + +For DICOM it is clear that SPIFF header should not be present in the DICOM +object's internal JPEG-LS stream. The plugin will simply rejects any input +JPEG-LS file containing a SPIFF header at marker APP8. + +By default, all APPn markers are cut off from the original JPEG-LS stream. +However, if you want to keep APPn markers (e. g. APP8/HP color transform +information, aka 'mrfx') inside the DICOM stream, the option \e --keep-appn +does the trick. Pay attention that the plugin will check the actual color +transform specified in the APP8/HP marker. Since DICOM does not allow any color +transform to be specified in the APP8 marker, only a value of `0` (no color +transform) is accepted. + \subsubsection img2dcm_bmp_input_plugin BMP Input Plugin \b img2dcm supports BMP as input format. However, so far only the most common -BMP images are supported. In particular, BMP images which use bit fields or +BMP images are supported. In particular, BMP images which use bit fields or run length encoding will be rejected. Such images are uncommon. Input images will either be converted into a DICOM image with RGB color model and a bit depth of 24, or into an image with MONOCHROME2 color model an 8 bits per pixel. @@ -393,19 +448,19 @@ There are no specific options for fine-tuning BMP format conversion. \subsection img2dcm_output_plugins Output Plugins The desired output SOP Class can be selected on the command line. Currently, -export plugins for the Secondary Capture Image SOP class (default, option -\e -sc), the Multiframe Secondary Capture Image SOP classes (option \e -nsc), -Visible Light Photographic Image SOP class (option \e -vl), and the Ophthalmic +export plugins for the Secondary Capture Image SOP Class (default, option +\e -sc), the Multiframe Secondary Capture Image SOP Classes (option \e -nsc), +Visible Light Photographic Image SOP Class (option \e -vl), and the Ophthalmic Photography Image SOP Classes (option \e -oph) are available. Please note that the first one is deprecated according to the DICOM standard but is selected as a default because it is widely supported. Future versions of \b img2dcm might provide further output plugins for other SOP Classes. -For the new Secondary Capture SOP classes, it is not possible to specify which -specific SOP class should be used for output. That is because these new SOP +For the new Secondary Capture SOP Classes, it is not possible to specify which +specific SOP Class should be used for output. That is because these new SOP classes are differentiated from each other by color depth (1/8/16) and the fact whether the image is black/white or color. That is why \b img2dcm decides -during conversion, which output SOP class is suitable for a given source image. +during conversion, which output SOP Class is suitable for a given source image. \section img2dcm_examples EXAMPLES @@ -415,10 +470,10 @@ Here are some examples that show how the \b img2dcm application can be used.
  • img2dcm image.jpg out.dcm -
    Read JPEG file "image.jpg", convert to the old Secondary Capture SOP class +
    Read JPEG file "image.jpg", convert to the old Secondary Capture SOP Class and save the result to DICOM file "out.dcm". This is the easiest way of using \b img2dcm. Any type 1 and type 2 attributes required for writing valid objects -of this SOP class are inserted automatically. +of this SOP Class are inserted automatically.
  • diff --git a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h index 0233938c..b739f0c5 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h +++ b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h @@ -4,7 +4,7 @@ ** ** User: joergr ** Host: thinkpad2 -** Date: 2022-07-25 09:10:37 +** Date: 2022-10-17 21:04:18 ** Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdeftag ** ** From: ../data/dicom.dic @@ -17,12 +17,12 @@ #include "dcmtk/dcmdata/dctagkey.h" -#define DCM_DICT_DEFTAG_BUILD_DATE "2022-07-25 09:10:37" +#define DCM_DICT_DEFTAG_BUILD_DATE "2022-10-17 21:04:18" /* ** Fixed Tags in ascending (gggg,eeee) order. -** Number of entries: 4989 +** Number of entries: 4991 ** Tags with a repeating component (repeating tags) are listed later. */ #define DCM_CommandGroupLength DcmTagKey(0x0000, 0x0000) @@ -259,6 +259,7 @@ #define DCM_InventoryCompletionStatus DcmTagKey(0x0008, 0x0426) #define DCM_NumberOfStudyRecordsInInstance DcmTagKey(0x0008, 0x0427) #define DCM_TotalNumberOfStudyRecords DcmTagKey(0x0008, 0x0428) +#define DCM_MaximumNumberOfRecords DcmTagKey(0x0008, 0x0429) #define DCM_RETIRED_NetworkID DcmTagKey(0x0008, 0x1000) #define DCM_StationName DcmTagKey(0x0008, 0x1010) #define DCM_StudyDescription DcmTagKey(0x0008, 0x1030) @@ -460,6 +461,7 @@ #define DCM_ClinicalTrialTimePointDescription DcmTagKey(0x0012, 0x0051) #define DCM_LongitudinalTemporalOffsetFromEvent DcmTagKey(0x0012, 0x0052) #define DCM_LongitudinalTemporalEventType DcmTagKey(0x0012, 0x0053) +#define DCM_ClinicalTrialTimePointTypeCodeSequence DcmTagKey(0x0012, 0x0054) #define DCM_ClinicalTrialCoordinatingCenterName DcmTagKey(0x0012, 0x0060) #define DCM_PatientIdentityRemoved DcmTagKey(0x0012, 0x0062) #define DCM_DeidentificationMethod DcmTagKey(0x0012, 0x0063) diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2d.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2d.h index db6e4ed1..e612dc75 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2d.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2d.h @@ -30,6 +30,10 @@ class DcmPixelItem; +/** Class implementing the image2dcm engine. Conversion takes place by combining an input plugin + * reading a general purpose image format and output plugins for conversion to specific + * DICOM SOP class(es) + */ class DCMTK_I2D_EXPORT Image2Dcm { @@ -76,6 +80,7 @@ public: size_t frameNumber); /** Update the offset table in the case of an encapsulated image + * @return EC_Normal if offset table could be updated, error code otherwise */ OFCondition updateOffsetTable(); @@ -95,37 +100,31 @@ public: * DICOM object. Only the dataset of the given file is imported. * @param file - [in] The filename of the template file, * which is either in DICOM or XML format. - * @return none */ void setTemplateFile(const OFString& file); /** Sets the format of the template file. * @param isXML - [in] true for XML, false for DICOM format - * @return none */ void setTemplateFileIsXML(OFBool isXML); /** activates or deactivates XML validation * @param enabled - [in] true to enable validation - * @return none */ void setXMLvalidation(OFBool enabled); /** activates or deactivates an XML namespace check * @param enabled - [in] true to enable namespace check - * @return none */ void setXMLnamespaceCheck(OFBool enabled); /** Set file from which patient/study/series data should be imported from. * @param file - [in] The DICOM file to read from - * @return none */ void setSeriesFrom(const OFString& file); /** Set file from which patient/study/series data should be imported from. * @param file - [in] The DICOM file to read from - * @return none */ void setStudyFrom(const OFString& file); @@ -133,14 +132,12 @@ public: * This can either be a the study/series file or the template file * provided. * @param incInstNo - [in] If true, the instance number will be incremented - * @return none */ void setIncrementInstanceNumber(OFBool incInstNo); /** Sets the conversion flags for character set conversion of * the study/series file * @param conversionFlags - [in] conversion flags - * @return none; */ void setConversionFlags(size_t conversionFlags); @@ -153,7 +150,6 @@ public: * permitted to set a value if appropriate, e. g. * "PatientName=Doe^John" would be a valid override * key. - * @return none */ void setOverrideKeys(const OFList& ovkeys); @@ -165,7 +161,6 @@ public: * attributes are inserted automatically with a predefined * value (if possible). An existing empty type 1 attribute is * assigned a value, too. - * @return none */ void setValidityChecking(OFBool doChecks, OFBool insertMissingType2 = OFTrue, @@ -176,7 +171,6 @@ protected: /** Cleans up template for future insertion of pixel data information, ie * generally removes attributes from image pixel module * @param targetDset - [out] The dataset that should be cleaned up - * @return none */ void cleanupTemplate(DcmDataset *targetDset); diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dbmps.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dbmps.h index c551340f..daa6d7ac 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dbmps.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dbmps.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2009-2014, OFFIS e.V. + * Copyright (C) 2009-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -35,7 +35,6 @@ class DCMTK_I2D_EXPORT I2DBmpSource : public I2DImgSource public: /** Constructor, initializes member variables - * @return none */ I2DBmpSource(); @@ -100,7 +99,6 @@ public: } /** Destructor, frees some memory. - * @return none */ virtual ~I2DBmpSource(); @@ -113,7 +111,6 @@ protected: OFCondition openFile(const OFString& filename); /** Closes BMP file. - * @return none */ void closeFile(); diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dimgs.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dimgs.h index 83b3b555..881c8b67 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dimgs.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dimgs.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2007-2014, OFFIS e.V. + * Copyright (C) 2007-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -95,7 +95,6 @@ public: /** Sets the input image file to read. * @param filename - [in] The filename of the image input file - * @return none */ void setImageFile(const OFString& filename) { m_imageFile = filename; }; diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2djpgs.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2djpgs.h index 9dd4bccd..8d15f2bc 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2djpgs.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2djpgs.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2007-2021, OFFIS e.V. + * Copyright (C) 2007-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -116,14 +116,14 @@ struct DCMTK_I2D_EXPORT JPEGFileMapEntry }; /** This is a I2DImgSource implementation that can parse JPEG files and convert - * them into DICOM images. + * them into DICOM images. This includes files using the original JPEG encoding + * (ITU-T Recommendation T.81) and JPEG-LS encoding (ITU-T Recommendation T.87). */ class DCMTK_I2D_EXPORT I2DJpegSource : public I2DImgSource { public: /** Constructor, initializes member variables - * @return none */ I2DJpegSource(); @@ -189,45 +189,43 @@ public: /** Enable/Disable support for Extended Sequential JPEG Coding * @param enabled - [in] OFTrue: support Extended Sequential, * OFFalse: do not support - * @return none */ void setExtSeqSupport(const OFBool enabled); /** Enable/Disable support for Progressive JPEG Coding * @param enabled - [in] OFTrue: support Extended Sequential, * OFFalse: do not support - * @return none */ void setProgrSupport(const OFBool enabled); /** If enabled, conversion will only take place if JFIF data could be found * and evaluated. Many digital cameras do not provide a JFIF header, so this * is disabled by default. + * @param enabled - [in] Set whether we want to insist on JFIF header (OFTrue) + * or not (OFFalse) */ void setInsistOnJFIF(const OFBool enabled); /** If enabled, APPn markers (except JFIF!) are also copied to the output file. * Default: false * @param enabled - [in] OFTrue: copy APPn, OFFalse: cut off APPn info - * @return none */ void setKeepAPPn(const OFBool enabled); /** If enabled, COM marker is also copied to the output file. * Default: true * @param enabled - [in] OFTrue: copy COM, OFFalse: cut off COM segment - * @return none */ void setKeepCOM(const OFBool enabled); /** Returns a string representation of a JPEG marker code. * @param marker - [in] The marker to be converted + * @param isJPEGLS - [in] Denotes whether we are handling JPEG-LS data * @return A string representation of the marker */ - static OFString jpegMarkerToString(const E_JPGMARKER& marker); + static OFString jpegMarkerToString(const E_JPGMARKER& marker, const OFBool isJPEGLS); /** Destructor, frees some memory. - * @return none */ ~I2DJpegSource(); @@ -239,7 +237,6 @@ protected: OFCondition openFile(const OFString& filename); /** Closes JPEG file. - * @return A string representation of the marker */ void closeFile(); @@ -252,7 +249,6 @@ protected: /** Dump the internal JPEG file map to a given stream. The file map * lists JPEG markers and their position in the bitstream found in the JPEG * file - * @return none */ void debugDumpJPEGFileMap() const; @@ -271,6 +267,24 @@ protected: Uint16& samplesPerPixel, Uint16& bitsPerSample); + /** Get image parameters as found at given SOF marker of the JPEG image. + * Used for JPEG-LS codec. + * @param entry - [in] Related SOS marker (E_JPGMARKER_SOS) + * @param nearLossless - [out] Returns whether image is encoded in lossless (0) + * or near-lossless (>0) mode + * @return EC_Normal, if successful, error otherwise + */ + OFCondition getSOSImageParameters(const JPEGFileMapEntry& entry, + Uint8& nearLossless); + + /** Get color transform as found at given APP8 marker of the JPEG image. + * Used for JPEG-LS codec. + * @param entry - [in] Related APP8 marker (E_JPGMARKER_APP8) + * @param xform - [out] Returns the color transform + * @return EC_Normal, if successful, error otherwise + */ + OFCondition getAPP8ImageParameters(const JPEGFileMapEntry& entry, Uint8& xform); + /** Get JPEG parameters as found at given JFIF marker of the JPEG image. * @param entry - [in] This specifies the marker and the byte position of the * JFIF marker @@ -293,9 +307,12 @@ protected: /** Returns if possible the DICOM transfer syntax matching the coding of the * JPEG data. * @param jpegEncoding - [in] Image marker that should be tested + * @param useJPEGLS - [in] Denotes whether we are handling JPEG-LS data + * @param nearLossless - [in] Denotes whether we are handling JPEG-LS data + * in near-lossless mode * @return EC_Normal, marker is supported, error otherwise */ - static E_TransferSyntax associatedTS(const E_JPGMARKER& jpegEncoding); + static E_TransferSyntax associatedTS(const E_JPGMARKER& jpegEncoding, OFBool const useJPEGLS, Uint8 const nearLossless); /** Returns true if marker is one of the RST0 to RST7 markers * @param jpegEncoding - [in] Image marker that should be tested @@ -305,9 +322,10 @@ protected: /** Returns true if marker is one of the SOF0 to SOF15 markers * @param jpegEncoding - [in] Image marker that should be tested + * @param isJPEGLS - [in] Denotes whether we are handling JPEG-LS data * @return OFTrue, if marker is SOF0 to SOF15, OFFalse otherwise */ - static OFBool isSOFMarker(const E_JPGMARKER& jpegEncoding); + static OFBool isSOFMarker(const E_JPGMARKER& jpegEncoding, const OFBool isJPEGLS); /** Extract raw JPEG stream (i.e. without APPn markers) from JPEG file. * @param pixelData - [out] The resulting JPEG stream @@ -349,7 +367,6 @@ protected: inline int read1Byte(Uint8& result); /** Deletes internal JPEG file map and frees memory. - * @return none */ void clearMap(); @@ -384,6 +401,10 @@ protected: /// After reading pixel data, this denotes whether the source /// data is already lossy compressed OFBool m_lossyCompressed; + + /// After reading pixel data, this denotes whether the source + /// data is JPEG-LS (ITU 87) or original JPEG (ITU 81) + OFBool m_isJPEGLS; }; #endif // I2DJPGS_H diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h index 24b9ca08..5fe90279 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h @@ -43,6 +43,7 @@ extern DCMTK_I2D_EXPORT OFLogger DCM_dcmdataLibi2dLogger; class DcmDataset; class DcmTagKey; +/** img2dcm output plugin interface serving as a base class for specific output plugins */ class DCMTK_I2D_EXPORT I2DOutputPlug { @@ -63,7 +64,6 @@ public: /** Virtual function that returns the Storage SOP class UID, the plugin writes. * @param suppSOPs - [out] List containing supported output SOP classes - * @return String containing the Storage SOP class UID */ virtual void supportedSOPClassUIDs(OFList& suppSOPs) = 0; @@ -103,7 +103,6 @@ public: * attributes are inserted automatically with a predefined * value (if possible). An existing empty type 1 attribute is * assigned a value, too. - * @return none */ virtual void setValidityChecking(OFBool doChecks, OFBool insertMissingType2 = OFTrue, @@ -137,7 +136,9 @@ protected: * (if enabled) and default values are inserted. * @param key - [in] The code sequence tag to be checked/inserted * @param targetDset - [in/out] The dataset to search (and insert) in - * @param defaultValue - [in] The default value to set + * @param codeValue - [in] Code Value to be used + * @param codeMeaning - [in] Code Meaning to be used + * @param codingSchemeDesignator - [in] Coding Scheme Designator to be used * @return Error string, which is empty if no error occurs. */ virtual OFString checkAndInventType1CodeSQ( @@ -151,6 +152,7 @@ protected: * If not, the tag is inserted (if enabled) with empty value. * @param key - [in] The tag to be checked/inserted * @param targetDset - [in/out] The dataset to search (and insert) in + * @param defaultValue - [in] The default value to set * @return Error string, which is empty if no error occurs. */ virtual OFString checkAndInventType2Attrib(const DcmTagKey& key, diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplnsc.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplnsc.h index 4b136818..36b321e5 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplnsc.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplnsc.h @@ -25,6 +25,8 @@ #include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/libi2d/i2doutpl.h" + +/** img2dcm output plugin for (enhanced) Secondary Capture Storage SOP Classes */ class DCMTK_I2D_EXPORT I2DOutputPlugNewSC : public I2DOutputPlug { @@ -47,7 +49,6 @@ public: * written by this plugin * @param suppSOPs - [out] List of UIDs representing the supported SOP * classes supported by this plugin. - * @return none */ virtual void supportedSOPClassUIDs(OFList& suppSOPs); diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplop.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplop.h index 2a9a6da9..89802979 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplop.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplop.h @@ -25,6 +25,7 @@ #include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/libi2d/i2doutpl.h" +/** img2dcm output plugin for Ophthalmic Photography Storage SOP Class */ class DCMTK_I2D_EXPORT I2DOutputPlugOphthalmicPhotography : public I2DOutputPlug { @@ -47,7 +48,6 @@ public: * written by this plugin * @param suppSOPs - [out] List of UIDs representing the supported SOP * classes supported by this plugin. - * @return none */ virtual void supportedSOPClassUIDs(OFList& suppSOPs); diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplsc.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplsc.h index f25cc2c0..0a4edf58 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplsc.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplsc.h @@ -25,6 +25,7 @@ #include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/libi2d/i2doutpl.h" +/** img2dcm output plugin for Secondary Capture Storage SOP Class */ class DCMTK_I2D_EXPORT I2DOutputPlugSC : public I2DOutputPlug { @@ -47,7 +48,6 @@ public: * written by this plugin * @param suppSOPs - [out] List of UIDS representing SOP classes supported * by this plugin - * @return none */ virtual void supportedSOPClassUIDs(OFList& suppSOPs); diff --git a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplvlp.h b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplvlp.h index 79981402..4bbf3498 100644 --- a/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplvlp.h +++ b/dcmdata/include/dcmtk/dcmdata/libi2d/i2dplvlp.h @@ -25,6 +25,7 @@ #include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/libi2d/i2doutpl.h" +/** img2dcm output plugin for VL Photographic Image Storage SOP Class */ class DCMTK_I2D_EXPORT I2DOutputPlugVLP : public I2DOutputPlug { @@ -47,7 +48,6 @@ public: * written by this plugin * @param suppSOPs - [out] List of UIDs representing SOP classes supported by * this plugin - * @return A string holding the Storage SOP class written by this plugin */ virtual void supportedSOPClassUIDs(OFList& suppSOPs); diff --git a/dcmdata/libi2d/i2djpgs.cc b/dcmdata/libi2d/i2djpgs.cc index aa44b51e..fb5baa13 100644 --- a/dcmdata/libi2d/i2djpgs.cc +++ b/dcmdata/libi2d/i2djpgs.cc @@ -33,6 +33,7 @@ I2DJpegSource::I2DJpegSource() , m_keepAPPn(OFFalse) , m_keepCOM(OFTrue) , m_lossyCompressed(OFTrue) + , m_isJPEGLS(OFFalse) { DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Plugin instantiated"); } @@ -113,12 +114,64 @@ OFCondition I2DJpegSource::readPixelData(Uint16& rows, return cond; } + // for JPEG-LS retrieve SOS (nearLossless value) + Uint8 nearLossless = 0; + if( m_isJPEGLS ) + { + OFListIterator(JPEGFileMapEntry*) entry = m_jpegFileMap.begin(); + OFListIterator(JPEGFileMapEntry*) entrySos = m_jpegFileMap.end(); + OFListIterator(JPEGFileMapEntry*) entryApp8 = m_jpegFileMap.end(); + while (entry != m_jpegFileMap.end()) + { + if ((*entry)->marker == E_JPGMARKER_SOS) + { + if( entrySos == m_jpegFileMap.end() ) + entrySos = entry; + } + else if ((*entry)->marker == E_JPGMARKER_APP8) + { + if( entryApp8 == m_jpegFileMap.end() ) + entryApp8 = entry; + } + entry++; + } + if (entrySos == m_jpegFileMap.end()) + { + closeFile(); + return makeOFCondition(OFM_dcmdata, 18, OF_error, "No start-of-scan marker found in JPEG-LS file"); + } + cond = getSOSImageParameters(**entrySos, nearLossless); + if (cond.bad()) + { + closeFile(); + return cond; + } + m_lossyCompressed = (nearLossless >= 1 ? OFTrue : OFFalse); + + // APP8 marker was found, check if this is one of the accepted HP transform ones + if (entryApp8 != m_jpegFileMap.end()) + { + Uint8 xform = 0; + cond = getAPP8ImageParameters(**entryApp8, xform); + if (cond.bad()) + { + closeFile(); + return cond; + } + if(xform != 0) + { + closeFile(); + return makeOFCondition(OFM_dcmdata, 18, OF_error, "APP8 marker contained invalid color transform."); + } + } + } + // Check for image data in file (look for SOF marker) E_JPGMARKER jpegEncoding; OFListIterator(JPEGFileMapEntry*) entry = m_jpegFileMap.begin(); while (entry != m_jpegFileMap.end()) { - if (isSOFMarker((*entry)->marker)) + if (isSOFMarker((*entry)->marker, m_isJPEGLS)) { jpegEncoding = OFstatic_cast(E_JPGMARKER, (*entry)->marker); break; @@ -140,7 +193,7 @@ OFCondition I2DJpegSource::readPixelData(Uint16& rows, } // Get transfer syntax associated with the given JPEG encoding - ts = associatedTS(jpegEncoding); + ts = associatedTS(jpegEncoding, m_isJPEGLS, nearLossless); // Extract width, height, samples per pixel, bits per sample Uint16 width, height, spp, bps; @@ -218,7 +271,12 @@ OFCondition I2DJpegSource::readPixelData(Uint16& rows, if (samplesPerPixel == 1) photoMetrInt = "MONOCHROME2"; else if (samplesPerPixel == 3) - photoMetrInt = "YBR_FULL_422"; + { + if (m_isJPEGLS) + photoMetrInt = "RGB"; + else + photoMetrInt = "YBR_FULL_422"; + } else return makeOFCondition(OFM_dcmdata, 18, OF_error, "For JPEG data, Samples per Pixel must be 1 or 3"); // Planar Configuration and Pixel Representation is always 0 for JPEG data @@ -243,7 +301,10 @@ OFCondition I2DJpegSource::getLossyComprInfo(OFBool& srcEncodingLossy, OFString& if (m_lossyCompressed) { srcEncodingLossy = OFTrue; - srcLossyComprMethod = "ISO_10918_1"; // Defined term for JPEG Lossy Compression + if (m_isJPEGLS) + srcLossyComprMethod = "ISO_14495_1"; // Defined term for JPEG-LS Lossy Compression + else + srcLossyComprMethod = "ISO_10918_1"; // Defined term for JPEG Lossy Compression } else { @@ -260,7 +321,7 @@ OFCondition I2DJpegSource::getSOFImageParameters(const JPEGFileMapEntry& entry, Uint16& bitsPerSample) { DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Examining JPEG SOF image parameters"); - if ((entry.marker < E_JPGMARKER_SOF0) || (entry.marker > E_JPGMARKER_SOF15)) + if (!isSOFMarker(entry.marker, m_isJPEGLS)) return EC_IllegalCall; Uint16 length; Uint16 image_height, image_width; @@ -309,6 +370,85 @@ OFCondition I2DJpegSource::getSOFImageParameters(const JPEGFileMapEntry& entry, return EC_Normal; } +OFCondition I2DJpegSource::getSOSImageParameters(const JPEGFileMapEntry& entry, + Uint8& nearLossless) +{ + DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Examining JPEG SOS image parameters"); + if (entry.marker != E_JPGMARKER_SOS) + return EC_IllegalCall; + Uint16 length; + Uint8 component_count_in_scan; + Uint8 near_lossless; + int result; + + // seek to the given SOFn marker + + jpegFile.fseek(entry.bytePos, SEEK_SET); + result = read2Bytes(length); /* usual parameter length count */ + if (result == EOF) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); + + // read values + + result = read1Byte(component_count_in_scan); + if (result == EOF) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); + + jpegFile.fseek(2 * component_count_in_scan, SEEK_CUR); + + result = read1Byte(near_lossless); + if (result == EOF) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); + + nearLossless = near_lossless; + + DCMDATA_LIBI2D_DEBUG("I2DJpegLsSource: Dumping JPEG SOS image parameters:"); + DCMDATA_LIBI2D_DEBUG("I2DJpegLsSource: nComponentsPerScan: " << OFstatic_cast(unsigned int, component_count_in_scan)); + DCMDATA_LIBI2D_DEBUG("I2DJpegLsSource: Near Lossless: " << OFstatic_cast(unsigned int, near_lossless)); + + if (length != OFstatic_cast(unsigned int, 6 + component_count_in_scan * 2)) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Bogus SOS marker length"); + + return EC_Normal; +} + +OFCondition I2DJpegSource::getAPP8ImageParameters(const JPEGFileMapEntry& entry, Uint8& xform) +{ + DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Examining JPEG APP8 parameters"); + if (entry.marker != E_JPGMARKER_APP8) + return EC_IllegalCall; + Uint16 length; + Uint8 mrfx[4]; + int result; + + // seek to the given SOFn marker + + jpegFile.fseek(entry.bytePos, SEEK_SET); + result = read2Bytes(length); /* usual parameter length count */ + if (result == EOF) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); + + if(length != 7) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "APP8 marker found. Only handle 'mrfx'"); + + // read values + for(int i = 0; i < 4; ++i ) + { + result = read1Byte(mrfx[i]); + if (result == EOF) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); + } + + if(memcmp(mrfx,"mrfx", 4) != 0) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "APP8 marker found. Only handle 'mrfx'"); + + result = read1Byte(xform); + if (result == EOF) + return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); + + return EC_Normal; +} + // ignores thumbnail data OFCondition I2DJpegSource::getJFIFImageParameters( const JPEGFileMapEntry& entry, Uint16& jfifVersion, Uint16& pixelAspectH, Uint16& pixelAspectV, Uint16& unit) @@ -564,6 +704,11 @@ OFCondition I2DJpegSource::createJPEGFileMap() // FIXME: reset this to OFFalse after the next marker? lastWasSOSMarker = OFTrue; } + else if (marker == E_JPGMARKER_JPGN7) + { + lastWasSOSMarker = OFTrue; + m_isJPEGLS = OFTrue; + } else if (marker == E_JPGMARKER_EOI) { // End of file reached @@ -583,13 +728,15 @@ OFBool I2DJpegSource::isRSTMarker(const E_JPGMARKER& marker) return ((marker >= E_JPGMARKER_RST0) && (marker <= E_JPGMARKER_RST7)); } -OFBool I2DJpegSource::isSOFMarker(const E_JPGMARKER& marker) +OFBool I2DJpegSource::isSOFMarker(const E_JPGMARKER& marker, const OFBool isJPEGLS) { + if(isJPEGLS) + return marker == E_JPGMARKER_JPGN7; // SOF55 return ((marker >= E_JPGMARKER_SOF0) && (marker <= E_JPGMARKER_SOF15) && (marker != E_JPGMARKER_DHT) && (marker != E_JPGMARKER_DAC)); } -OFString I2DJpegSource::jpegMarkerToString(const E_JPGMARKER& marker) +OFString I2DJpegSource::jpegMarkerToString(const E_JPGMARKER& marker, const OFBool isJPEGLS) { switch (marker) { @@ -685,6 +832,8 @@ OFString I2DJpegSource::jpegMarkerToString(const E_JPGMARKER& marker) } if ((marker >= E_JPGMARKER_JPGN0) && (marker <= E_JPGMARKER_JPGN13)) { + if(marker == E_JPGMARKER_JPGN7 && isJPEGLS) + return "SOF55: Start of Frame (JLS)"; return "JPGn: JPEG extension"; break; } @@ -740,6 +889,8 @@ OFCondition I2DJpegSource::nextMarker(const OFBool& lastWasSOSMarker, E_JPGMARKE Uint8 c; int discarded_bytes = 0; int oneByte; + OFBool isEscapeSequence; // used in the context of JPEG-LS + const OFBool isJPEGLS = m_isJPEGLS; // local context do { @@ -765,7 +916,10 @@ OFCondition I2DJpegSource::nextMarker(const OFBool& lastWasSOSMarker, E_JPGMARKE if (oneByte == EOF) return makeOFCondition(OFM_dcmdata, 18, OF_error, "Premature EOF in JPEG file"); } while (c == 0xFF); - } while (lastWasSOSMarker && c == 0x00); + isEscapeSequence = c == 0x00; + if( isJPEGLS ) + isEscapeSequence = c >= 0x00 && c <= 0x7f; + } while (lastWasSOSMarker && isEscapeSequence); if (discarded_bytes != 0) { @@ -826,51 +980,82 @@ OFCondition I2DJpegSource::isJPEGEncodingSupported(const E_JPGMARKER& jpegEncodi { OFCondition result; DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Checking whether JPEG encoding is supported"); - DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Encoding: " << jpegMarkerToString(jpegEncoding)); - switch (jpegEncoding) + DCMDATA_LIBI2D_DEBUG("I2DJpegSource: Encoding: " << jpegMarkerToString(jpegEncoding, m_isJPEGLS)); + if(m_isJPEGLS) { - case E_JPGMARKER_SOF0: // Baseline - result = EC_Normal; - break; - case E_JPGMARKER_SOF1: // Extended sequential - if (!m_disableExtSeqTs) + switch (jpegEncoding) + { + case E_JPGMARKER_JPGN7: // result = EC_Normal; - else - result - = makeOFCondition(OFM_dcmdata, - 18, - OF_error, - "Unable to convert: Extended sequential JPEG coding found but support disabled"); - break; - case E_JPGMARKER_SOF2: // Progressive - if (!m_disableProgrTs) + break; + // SOF3: Lossless, SOF5-7: Hierarchical (differential), SOF9-15: Arithmetic coding, all other + default: + OFString errMsg("JPEG data with encoding: '"); + errMsg += jpegMarkerToString(jpegEncoding, m_isJPEGLS); + errMsg += "' not supported"; + result = makeOFCondition(OFM_dcmdata, 18, OF_error, errMsg.c_str()); + } + } + else + { + switch (jpegEncoding) + { + case E_JPGMARKER_SOF0: // Baseline result = EC_Normal; - else - result = makeOFCondition( - OFM_dcmdata, 18, OF_error, "Unable to convert: Progressive JPEG coding found but disabled"); - break; - // SOF3: Lossless, SOF5-7: Hierarchical (differential), SOF9-15: Arithmetic coding, all other - default: - OFString errMsg("JPEG data with encoding: '"); - errMsg += jpegMarkerToString(jpegEncoding); - errMsg += "' not supported"; - result = makeOFCondition(OFM_dcmdata, 18, OF_error, errMsg.c_str()); + break; + case E_JPGMARKER_SOF1: // Extended sequential + if (!m_disableExtSeqTs) + result = EC_Normal; + else + result + = makeOFCondition(OFM_dcmdata, + 18, + OF_error, + "Unable to convert: Extended sequential JPEG coding found but support disabled"); + break; + case E_JPGMARKER_SOF2: // Progressive + if (!m_disableProgrTs) + result = EC_Normal; + else + result = makeOFCondition( + OFM_dcmdata, 18, OF_error, "Unable to convert: Progressive JPEG coding found but disabled"); + break; + // SOF3: Lossless, SOF5-7: Hierarchical (differential), SOF9-15: Arithmetic coding, all other + default: + OFString errMsg("JPEG data with encoding: '"); + errMsg += jpegMarkerToString(jpegEncoding, m_isJPEGLS); + errMsg += "' not supported"; + result = makeOFCondition(OFM_dcmdata, 18, OF_error, errMsg.c_str()); + } } return result; } -E_TransferSyntax I2DJpegSource::associatedTS(const E_JPGMARKER& jpegEncoding) +E_TransferSyntax I2DJpegSource::associatedTS(const E_JPGMARKER& jpegEncoding, OFBool const isJPEGLS, Uint8 const nearLossless) { - switch (jpegEncoding) - { - case E_JPGMARKER_SOF0: // Baseline - return EXS_JPEGProcess1; - case E_JPGMARKER_SOF1: // Extended Sequential - return EXS_JPEGProcess2_4; - case E_JPGMARKER_SOF2: // Progressive - return EXS_JPEGProcess10_12; - default: - return EXS_Unknown; + if(isJPEGLS) + { + switch (jpegEncoding) + { + case E_JPGMARKER_JPGN7: // SOF55 + return nearLossless == 0 ? EXS_JPEGLSLossless : EXS_JPEGLSLossy; + default: + return EXS_Unknown; + } + } + else + { + switch (jpegEncoding) + { + case E_JPGMARKER_SOF0: // Baseline + return EXS_JPEGProcess1; + case E_JPGMARKER_SOF1: // Extended Sequential + return EXS_JPEGProcess2_4; + case E_JPGMARKER_SOF2: // Progressive + return EXS_JPEGProcess10_12; + default: + return EXS_Unknown; + } } } @@ -891,7 +1076,7 @@ void I2DJpegSource::debugDumpJPEGFileMap() const << STD_NAMESPACE setfill('0') /* need to cast bytePos to unsigned long to keep VC6 happy */ << OFstatic_cast(unsigned long, (*it)->bytePos) - << " | Marker: " << jpegMarkerToString((*it)->marker)); + << " | Marker: " << jpegMarkerToString((*it)->marker, m_isJPEGLS)); it++; } } diff --git a/dcmdata/libsrc/dcdictbi.cc b/dcmdata/libsrc/dcdictbi.cc index 65c8d3a6..c0c9d554 100644 --- a/dcmdata/libsrc/dcdictbi.cc +++ b/dcmdata/libsrc/dcdictbi.cc @@ -4,7 +4,7 @@ ** ** User: joergr ** Host: thinkpad2 -** Date: 2022-07-25 09:10:38 +** Date: 2022-10-17 21:04:19 ** Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdictbi ** ** From: ../data/dicom.dic @@ -1012,6 +1012,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_UV, "TotalNumberOfStudyRecords", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x0008, 0x0429, 0x0008, 0x0429, + EVR_UV, "MaximumNumberOfRecords", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x0008, 0x1000, 0x0008, 0x1000, EVR_AE, "RETIRED_NetworkID", 1, 1, "DICOM/retired", DcmDictRange_Unspecified, DcmDictRange_Unspecified, @@ -3028,6 +3032,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_CS, "LongitudinalTemporalEventType", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x0012, 0x0054, 0x0012, 0x0054, + EVR_SQ, "ClinicalTrialTimePointTypeCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x0012, 0x0060, 0x0012, 0x0060, EVR_LO, "ClinicalTrialCoordinatingCenterName", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h index f62e4824..b92f7630 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h @@ -5,8 +5,8 @@ * * Header file for class CID100_QuantitativeDiagnosticImagingProcedure * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:32 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:58 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h index ad3de6ef..107ac986 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h @@ -5,8 +5,8 @@ * * Header file for class CID10013_CTAcquisitionType * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:45 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:11 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h index 871c9d13..9abbe5a9 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h @@ -5,8 +5,8 @@ * * Header file for class CID10033_CTReconstructionAlgorithm * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:45 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:12 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h index 1f733d92..4bfb430f 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h @@ -5,8 +5,8 @@ * * Header file for class CID11_AdministrationRoute * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:30 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:56 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h index 64c3980e..317903be 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h @@ -5,8 +5,8 @@ * * Header file for class CID218_QuantitativeImageFeature * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:33 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:59 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h index e72282b3..dabd7625 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h @@ -5,8 +5,8 @@ * * Header file for class CID244_Laterality * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:34 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:00 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h index fd3d1b0b..74ae0818 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h @@ -5,8 +5,8 @@ * * Header file for class CID247_LateralityLeftRightOnly * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:35 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:01 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h index 18c779d3..322395d0 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h @@ -5,8 +5,8 @@ * * Header file for class CID29_AcquisitionModality * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:30 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:57 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h index f95b593e..48afde06 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h @@ -5,8 +5,8 @@ * * Header file for class CID4020_PETRadionuclide * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:35 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:01 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h index af653417..f0ca8e26 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h @@ -5,8 +5,8 @@ * * Header file for class CID4021_PETRadiopharmaceutical * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:36 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:02 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h index 7d06b791..fff04f14 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h @@ -5,8 +5,8 @@ * * Header file for class CID4031_CommonAnatomicRegion * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:37 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:03 by J. Riesmeier * */ @@ -28,7 +28,7 @@ /** Implementation of DCMR Context Group: * CID 4031 - Common Anatomic Region. - * (type: extensible, version: 20210120) + * (type: extensible, version: 20220922) */ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion : public DSRContextGroup @@ -70,7 +70,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion Calcaneus, /// (122494005,SCT,"Cervical spine") CervicalSpine, - /// (297171002,SCT,"Cervico-thoracic spine") + /// (1217257000,SCT,"Cervico-thoracic spine") CervicoThoracicSpine, /// (816094009,SCT,"Chest") Chest, @@ -154,7 +154,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion LowerLimb, /// (122496007,SCT,"Lumbar spine") LumbarSpine, - /// (297173004,SCT,"Lumbo-sacral spine") + /// (1217253001,SCT,"Lumbo-sacral spine") LumboSacralSpine, /// (91609006,SCT,"Mandible") Mandible, @@ -196,7 +196,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion Patella, /// (816092008,SCT,"Pelvis") Pelvis, - /// (416631005,SCT,"Pelvis and lower extremities") + /// (1231522001,SCT,"Pelvis and lower extremities") PelvisAndLowerExtremities, /// (113681,DCM,"Phantom") Phantom, @@ -206,7 +206,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion Rectum, /// (113197003,SCT,"Rib") Rib, - /// (297174005,SCT,"Sacro-coccygeal Spine") + /// (1217254007,SCT,"Sacro-coccygeal Spine") SacroCoccygealSpine, /// (39723000,SCT,"Sacroiliac joint") SacroiliacJoint, @@ -242,7 +242,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion Thigh, /// (122495006,SCT,"Thoracic spine") ThoracicSpine, - /// (297172009,SCT,"Thoraco-lumbar spine") + /// (1217256009,SCT,"Thoraco-lumbar spine") ThoracoLumbarSpine, /// (76505004,SCT,"Thumb") Thumb, diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h index 5c6c2ba9..76689152 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h @@ -5,8 +5,8 @@ * * Header file for class CID42_NumericValueQualifier * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:31 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:57 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h index 08fed967..a0017011 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h @@ -5,8 +5,8 @@ * * Header file for class CID6147_ResponseCriteria * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:38 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:03 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h index 23520831..706fc3d8 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h @@ -5,8 +5,8 @@ * * Header file for class CID7021_MeasurementReportDocumentTitle * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:38 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:04 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h index 9f1a57af..21774be5 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h @@ -5,8 +5,8 @@ * * Header file for class CID7181_AbstractMultiDimensionalImageModelComponentUnit * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:39 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:05 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h index 8880c367..0648a742 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h @@ -5,8 +5,8 @@ * * Header file for class CID7445_DeviceParticipatingRole * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:40 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:06 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h index 3dcf691a..f33e21ba 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h @@ -5,8 +5,8 @@ * * Header file for class CID7452_OrganizationalRole * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:41 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:06 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h index 681330e5..fe318cfe 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h @@ -5,8 +5,8 @@ * * Header file for class CID7453_PerformingRole * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:41 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:07 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h index 634b0c35..92ba82c9 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h @@ -5,8 +5,8 @@ * * Header file for class CID7464_GeneralRegionOfInterestMeasurementModifier * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:42 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:08 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h index 425bb468..bc011168 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h @@ -5,8 +5,8 @@ * * Header file for class CID7469_GenericIntensityAndSizeMeasurement * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:43 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:09 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h index 5b4e86c3..e7ba5e43 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h @@ -5,8 +5,8 @@ * * Header file for class CID7551_GenericPurposeOfReferenceToImagesAndCoordinatesInMeasurement * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:44 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:10 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h index 196314cb..0ae8168b 100644 --- a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h +++ b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h @@ -5,8 +5,8 @@ * * Header file with DICOM Controlled Terminology Code Definitions (Coding Scheme "DCM", Version "01") * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:34:29 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:36:18 by J. Riesmeier * */ @@ -34,7 +34,7 @@ * code definitions * *--------------------*/ -// total number of codes: 4657 +// total number of codes: 4658 // - retired: 201 // - no name: 27 // - not unique: 17 @@ -3628,6 +3628,7 @@ #define CODE_DCM_PlaneThroughCenter DSRBasicCodedEntry("128130", "DCM", "Plane through Center") #define CODE_DCM_GeometricCenterpoint DSRBasicCodedEntry("128137", "DCM", "Geometric Centerpoint") #define CODE_DCM_CenterOfMass DSRBasicCodedEntry("128138", "DCM", "Center of Mass") +#define CODE_DCM_SeedPoint DSRBasicCodedEntry("128139", "DCM", "Seed point") #define CODE_DCM_ImpairedRenalFunction DSRBasicCodedEntry("128144", "DCM", "Impaired Renal Function") #define CODE_DCM_LaserCrossHairs DSRBasicCodedEntry("128151", "DCM", "Laser Cross-hairs") #define CODE_DCM_AcquiredVolume DSRBasicCodedEntry("128160", "DCM", "Acquired Volume") diff --git a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h index bc9f131a..75a23a90 100644 --- a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h +++ b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h @@ -5,8 +5,8 @@ * * Header file with NCI Thesaurus Code Definitions (Coding Scheme "NCIt") * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:34:32 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:36:21 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/codes/umls.h b/dcmsr/include/dcmtk/dcmsr/codes/umls.h index da66ad01..09d414e9 100644 --- a/dcmsr/include/dcmtk/dcmsr/codes/umls.h +++ b/dcmsr/include/dcmtk/dcmsr/codes/umls.h @@ -5,8 +5,8 @@ * * Header file with UMLS Code Definitions (Coding Scheme "UMLS") * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:34:32 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:36:21 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid100.cc b/dcmsr/libcmr/cid100.cc index 4d1d4fea..3296bf63 100644 --- a/dcmsr/libcmr/cid100.cc +++ b/dcmsr/libcmr/cid100.cc @@ -5,8 +5,8 @@ * * Source file for class CID100_QuantitativeDiagnosticImagingProcedure * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:32 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:58 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid10013.cc b/dcmsr/libcmr/cid10013.cc index f1002e3d..0663d1ea 100644 --- a/dcmsr/libcmr/cid10013.cc +++ b/dcmsr/libcmr/cid10013.cc @@ -5,8 +5,8 @@ * * Source file for class CID10013_CTAcquisitionType * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:45 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:11 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid10033.cc b/dcmsr/libcmr/cid10033.cc index efb25d0c..5a9bd331 100644 --- a/dcmsr/libcmr/cid10033.cc +++ b/dcmsr/libcmr/cid10033.cc @@ -5,8 +5,8 @@ * * Source file for class CID10033_CTReconstructionAlgorithm * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:45 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:12 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid11.cc b/dcmsr/libcmr/cid11.cc index 290e86b5..e1ca5223 100644 --- a/dcmsr/libcmr/cid11.cc +++ b/dcmsr/libcmr/cid11.cc @@ -5,8 +5,8 @@ * * Source file for class CID11_AdministrationRoute * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:30 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:56 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid218.cc b/dcmsr/libcmr/cid218.cc index 3b7afeef..2e35940c 100644 --- a/dcmsr/libcmr/cid218.cc +++ b/dcmsr/libcmr/cid218.cc @@ -5,8 +5,8 @@ * * Source file for class CID218_QuantitativeImageFeature * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:33 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:59 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid244.cc b/dcmsr/libcmr/cid244.cc index d9c28b78..1b787b09 100644 --- a/dcmsr/libcmr/cid244.cc +++ b/dcmsr/libcmr/cid244.cc @@ -5,8 +5,8 @@ * * Source file for class CID244_Laterality * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:34 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:00 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid247.cc b/dcmsr/libcmr/cid247.cc index 8dbf0337..e63ceba9 100644 --- a/dcmsr/libcmr/cid247.cc +++ b/dcmsr/libcmr/cid247.cc @@ -5,8 +5,8 @@ * * Source file for class CID247_LateralityLeftRightOnly * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:35 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:01 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid29.cc b/dcmsr/libcmr/cid29.cc index 417f1f4a..f1eed088 100644 --- a/dcmsr/libcmr/cid29.cc +++ b/dcmsr/libcmr/cid29.cc @@ -5,8 +5,8 @@ * * Source file for class CID29_AcquisitionModality * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:30 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:57 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid4020.cc b/dcmsr/libcmr/cid4020.cc index cb324a22..12771ac5 100644 --- a/dcmsr/libcmr/cid4020.cc +++ b/dcmsr/libcmr/cid4020.cc @@ -5,8 +5,8 @@ * * Source file for class CID4020_PETRadionuclide * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:35 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:01 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid4021.cc b/dcmsr/libcmr/cid4021.cc index 89bb5092..c06c55da 100644 --- a/dcmsr/libcmr/cid4021.cc +++ b/dcmsr/libcmr/cid4021.cc @@ -5,8 +5,8 @@ * * Source file for class CID4021_PETRadiopharmaceutical * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:36 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:02 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid4031.cc b/dcmsr/libcmr/cid4031.cc index 9aa1ffa5..9b3d0de1 100644 --- a/dcmsr/libcmr/cid4031.cc +++ b/dcmsr/libcmr/cid4031.cc @@ -5,8 +5,8 @@ * * Source file for class CID4031_CommonAnatomicRegion * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:37 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:03 by J. Riesmeier * */ @@ -18,7 +18,7 @@ // general information on CID 4031 (Common Anatomic Region) #define CONTEXT_GROUP_NUMBER "4031" -#define CONTEXT_GROUP_VERSION "20210120" +#define CONTEXT_GROUP_VERSION "20220922" #define CONTEXT_GROUP_UID "1.2.840.10008.6.1.308" #define CONTEXT_GROUP_TYPE OFTrue /* extensible */ @@ -164,7 +164,7 @@ CID4031_CommonAnatomicRegion::CodeList &CID4031_CommonAnatomicRegion::getCodes() Codes->insert(OFMake_pair(Bronchus, DSRBasicCodedEntry("955009", "SCT", "Bronchus"))); Codes->insert(OFMake_pair(Calcaneus, DSRBasicCodedEntry("80144004", "SCT", "Calcaneus"))); Codes->insert(OFMake_pair(CervicalSpine, DSRBasicCodedEntry("122494005", "SCT", "Cervical spine"))); - Codes->insert(OFMake_pair(CervicoThoracicSpine, DSRBasicCodedEntry("297171002", "SCT", "Cervico-thoracic spine"))); + Codes->insert(OFMake_pair(CervicoThoracicSpine, DSRBasicCodedEntry("1217257000", "SCT", "Cervico-thoracic spine"))); Codes->insert(OFMake_pair(Chest, DSRBasicCodedEntry("816094009", "SCT", "Chest"))); Codes->insert(OFMake_pair(ChestAndAbdomen, DSRBasicCodedEntry("416550000", "SCT", "Chest and Abdomen"))); Codes->insert(OFMake_pair(ChestAbdomenAndPelvis, DSRBasicCodedEntry("416775004", "SCT", "Chest, Abdomen and Pelvis"))); @@ -206,7 +206,7 @@ CID4031_CommonAnatomicRegion::CodeList &CID4031_CommonAnatomicRegion::getCodes() Codes->insert(OFMake_pair(LowerLeg, DSRBasicCodedEntry("30021000", "SCT", "Lower leg"))); Codes->insert(OFMake_pair(LowerLimb, DSRBasicCodedEntry("61685007", "SCT", "Lower limb"))); Codes->insert(OFMake_pair(LumbarSpine, DSRBasicCodedEntry("122496007", "SCT", "Lumbar spine"))); - Codes->insert(OFMake_pair(LumboSacralSpine, DSRBasicCodedEntry("297173004", "SCT", "Lumbo-sacral spine"))); + Codes->insert(OFMake_pair(LumboSacralSpine, DSRBasicCodedEntry("1217253001", "SCT", "Lumbo-sacral spine"))); Codes->insert(OFMake_pair(Mandible, DSRBasicCodedEntry("91609006", "SCT", "Mandible"))); Codes->insert(OFMake_pair(MastoidBone, DSRBasicCodedEntry("59066005", "SCT", "Mastoid bone"))); Codes->insert(OFMake_pair(Maxilla, DSRBasicCodedEntry("70925003", "SCT", "Maxilla"))); @@ -227,12 +227,12 @@ CID4031_CommonAnatomicRegion::CodeList &CID4031_CommonAnatomicRegion::getCodes() Codes->insert(OFMake_pair(ParotidGland, DSRBasicCodedEntry("45289007", "SCT", "Parotid gland"))); Codes->insert(OFMake_pair(Patella, DSRBasicCodedEntry("64234005", "SCT", "Patella"))); Codes->insert(OFMake_pair(Pelvis, DSRBasicCodedEntry("816092008", "SCT", "Pelvis"))); - Codes->insert(OFMake_pair(PelvisAndLowerExtremities, DSRBasicCodedEntry("416631005", "SCT", "Pelvis and lower extremities"))); + Codes->insert(OFMake_pair(PelvisAndLowerExtremities, DSRBasicCodedEntry("1231522001", "SCT", "Pelvis and lower extremities"))); Codes->insert(OFMake_pair(Phantom, DSRBasicCodedEntry("113681", "DCM", "Phantom"))); Codes->insert(OFMake_pair(Prostate, DSRBasicCodedEntry("41216001", "SCT", "Prostate"))); Codes->insert(OFMake_pair(Rectum, DSRBasicCodedEntry("34402009", "SCT", "Rectum"))); Codes->insert(OFMake_pair(Rib, DSRBasicCodedEntry("113197003", "SCT", "Rib"))); - Codes->insert(OFMake_pair(SacroCoccygealSpine, DSRBasicCodedEntry("297174005", "SCT", "Sacro-coccygeal Spine"))); + Codes->insert(OFMake_pair(SacroCoccygealSpine, DSRBasicCodedEntry("1217254007", "SCT", "Sacro-coccygeal Spine"))); Codes->insert(OFMake_pair(SacroiliacJoint, DSRBasicCodedEntry("39723000", "SCT", "Sacroiliac joint"))); Codes->insert(OFMake_pair(Sacrum, DSRBasicCodedEntry("54735007", "SCT", "Sacrum"))); Codes->insert(OFMake_pair(Scapula, DSRBasicCodedEntry("79601000", "SCT", "Scapula"))); @@ -250,7 +250,7 @@ CID4031_CommonAnatomicRegion::CodeList &CID4031_CommonAnatomicRegion::getCodes() Codes->insert(OFMake_pair(TemporomandibularJoint, DSRBasicCodedEntry("53620006", "SCT", "Temporomandibular joint"))); Codes->insert(OFMake_pair(Thigh, DSRBasicCodedEntry("68367000", "SCT", "Thigh"))); Codes->insert(OFMake_pair(ThoracicSpine, DSRBasicCodedEntry("122495006", "SCT", "Thoracic spine"))); - Codes->insert(OFMake_pair(ThoracoLumbarSpine, DSRBasicCodedEntry("297172009", "SCT", "Thoraco-lumbar spine"))); + Codes->insert(OFMake_pair(ThoracoLumbarSpine, DSRBasicCodedEntry("1217256009", "SCT", "Thoraco-lumbar spine"))); Codes->insert(OFMake_pair(Thumb, DSRBasicCodedEntry("76505004", "SCT", "Thumb"))); Codes->insert(OFMake_pair(Toe, DSRBasicCodedEntry("29707007", "SCT", "Toe"))); Codes->insert(OFMake_pair(Trachea, DSRBasicCodedEntry("44567001", "SCT", "Trachea"))); diff --git a/dcmsr/libcmr/cid42.cc b/dcmsr/libcmr/cid42.cc index 164ec96f..c2ca133a 100644 --- a/dcmsr/libcmr/cid42.cc +++ b/dcmsr/libcmr/cid42.cc @@ -5,8 +5,8 @@ * * Source file for class CID42_NumericValueQualifier * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:31 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:49:57 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid6147.cc b/dcmsr/libcmr/cid6147.cc index 0e4cbc03..be67b826 100644 --- a/dcmsr/libcmr/cid6147.cc +++ b/dcmsr/libcmr/cid6147.cc @@ -5,8 +5,8 @@ * * Source file for class CID6147_ResponseCriteria * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:38 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:03 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7021.cc b/dcmsr/libcmr/cid7021.cc index 03807b5f..3527fc3f 100644 --- a/dcmsr/libcmr/cid7021.cc +++ b/dcmsr/libcmr/cid7021.cc @@ -5,8 +5,8 @@ * * Source file for class CID7021_MeasurementReportDocumentTitle * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:38 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:04 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7181.cc b/dcmsr/libcmr/cid7181.cc index 9e9f3b49..75975410 100644 --- a/dcmsr/libcmr/cid7181.cc +++ b/dcmsr/libcmr/cid7181.cc @@ -5,8 +5,8 @@ * * Source file for class CID7181_AbstractMultiDimensionalImageModelComponentUnit * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:39 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:05 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7445.cc b/dcmsr/libcmr/cid7445.cc index 2f943e25..f78b5f96 100644 --- a/dcmsr/libcmr/cid7445.cc +++ b/dcmsr/libcmr/cid7445.cc @@ -5,8 +5,8 @@ * * Source file for class CID7445_DeviceParticipatingRole * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:40 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:06 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7452.cc b/dcmsr/libcmr/cid7452.cc index 61359337..5e96fa68 100644 --- a/dcmsr/libcmr/cid7452.cc +++ b/dcmsr/libcmr/cid7452.cc @@ -5,8 +5,8 @@ * * Source file for class CID7452_OrganizationalRole * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:41 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:06 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7453.cc b/dcmsr/libcmr/cid7453.cc index 7d67be9e..c6b0ed3c 100644 --- a/dcmsr/libcmr/cid7453.cc +++ b/dcmsr/libcmr/cid7453.cc @@ -5,8 +5,8 @@ * * Source file for class CID7453_PerformingRole * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:41 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:07 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7464.cc b/dcmsr/libcmr/cid7464.cc index 3530caf9..468c0148 100644 --- a/dcmsr/libcmr/cid7464.cc +++ b/dcmsr/libcmr/cid7464.cc @@ -5,8 +5,8 @@ * * Source file for class CID7464_GeneralRegionOfInterestMeasurementModifier * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:42 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:08 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7469.cc b/dcmsr/libcmr/cid7469.cc index 420676ae..93603705 100644 --- a/dcmsr/libcmr/cid7469.cc +++ b/dcmsr/libcmr/cid7469.cc @@ -5,8 +5,8 @@ * * Source file for class CID7469_GenericIntensityAndSizeMeasurement * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:43 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:09 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7551.cc b/dcmsr/libcmr/cid7551.cc index 4966c104..66f34c7f 100644 --- a/dcmsr/libcmr/cid7551.cc +++ b/dcmsr/libcmr/cid7551.cc @@ -5,8 +5,8 @@ * * Source file for class CID7551_GenericPurposeOfReferenceToImagesAndCoordinatesInMeasurement * - * Generated automatically from DICOM PS 3.16-2022c - * File created on 2022-07-25 09:55:44 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2022d + * File created on 2022-10-24 17:50:10 by J. Riesmeier * */ diff --git a/ofstd/libsrc/ofuuid.cc b/ofstd/libsrc/ofuuid.cc index e0c8f5a7..6b93fc4c 100644 --- a/ofstd/libsrc/ofuuid.cc +++ b/ofstd/libsrc/ofuuid.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2021, OFFIS e.V. + * Copyright (C) 2011-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -161,8 +161,7 @@ void OFUUID::generate() get_time(&system_time[0]); /* If time went backwards, increment clock sequence */ - if (system_time[0] < last_time[0] || - (system_time[0] == last_time[0] && system_time[1] < last_time[1])) + if (system_time[0] < last_time[0] || (system_time[0] == last_time[0] && system_time[1] < last_time[1])) last_clock_sequence++; clock_sequence = last_clock_sequence;