New upstream version 3.6.8~git20221024.b8950f9
authorMathieu Malaterre <malat@debian.org>
Mon, 7 Nov 2022 15:38:33 +0000 (16:38 +0100)
committerMathieu Malaterre <malat@debian.org>
Mon, 7 Nov 2022 15:38:33 +0000 (16:38 +0100)
60 files changed:
dcmdata/data/dicom.dic
dcmdata/docs/img2dcm.man
dcmdata/include/dcmtk/dcmdata/dcdeftag.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2d.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2dbmps.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2dimgs.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2djpgs.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2doutpl.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2dplnsc.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2dplop.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2dplsc.h
dcmdata/include/dcmtk/dcmdata/libi2d/i2dplvlp.h
dcmdata/libi2d/i2djpgs.cc
dcmdata/libsrc/dcdictbi.cc
dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
dcmsr/include/dcmtk/dcmsr/cmr/cid218.h
dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
dcmsr/include/dcmtk/dcmsr/cmr/cid247.h
dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h
dcmsr/include/dcmtk/dcmsr/codes/dcm.h
dcmsr/include/dcmtk/dcmsr/codes/ncit.h
dcmsr/include/dcmtk/dcmsr/codes/umls.h
dcmsr/libcmr/cid100.cc
dcmsr/libcmr/cid10013.cc
dcmsr/libcmr/cid10033.cc
dcmsr/libcmr/cid11.cc
dcmsr/libcmr/cid218.cc
dcmsr/libcmr/cid244.cc
dcmsr/libcmr/cid247.cc
dcmsr/libcmr/cid29.cc
dcmsr/libcmr/cid4020.cc
dcmsr/libcmr/cid4021.cc
dcmsr/libcmr/cid4031.cc
dcmsr/libcmr/cid42.cc
dcmsr/libcmr/cid6147.cc
dcmsr/libcmr/cid7021.cc
dcmsr/libcmr/cid7181.cc
dcmsr/libcmr/cid7445.cc
dcmsr/libcmr/cid7452.cc
dcmsr/libcmr/cid7453.cc
dcmsr/libcmr/cid7464.cc
dcmsr/libcmr/cid7469.cc
dcmsr/libcmr/cid7551.cc
ofstd/libsrc/ofuuid.cc

index fc0378c7dcb1fcf0a2dba6aa5c82b27a9c081172..e8f575f4d555df090b829b2c4ac41cd74e36e331 100644 (file)
@@ -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:
 (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
 (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
index 46015349669e16e42d9e7031a0d10411f863a570..856c87666242a61ca0b054a67f228c631ae67a43 100644 (file)
@@ -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
+<ul>
+
+<li>JPEG Coding Process 1
+<br>Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit
+<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.50
+</li>
+
+<li>JPEG Coding Process 2 (8-bit) and 4 (12-bit)
+<br>Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit
+<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.51
+</li>
 
-\li JPEG Coding Process 2 (8-bit) and 4 (12-bit)
-    Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit
-    SOP Class = 1.2.840.10008.1.2.4.51
+<li>JPEG Coding Process 10 (8-bit) and 12 (12-bit)
+<br>Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit
+<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.55
+</li>
 
-\li JPEG Coding Process 10 (8-bit) and 12 (12-bit)
-    Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit
-    SOP Class = 1.2.840.10008.1.2.4.55
+</ul>
 
 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:
+
+<ul>
+
+<li>JPEG-LS Lossless Image Compression
+<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.80
+</li>
+
+<li>JPEG-LS Lossy (Near-Lossless) Image Compression
+<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.81
+</li>
+
+</ul>
+
+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.
 
 <li>
 img2dcm image.jpg out.dcm
-<br>Read JPEG file "image.jpg", convert to the old Secondary Capture SOP class
+<br>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.
 </li>
 
 <li>
index 0233938cb179a86d3e1d261c787cd5ab49558a67..b739f0c5d0da81b997aa2b75859b323f810143b2 100644 (file)
@@ -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
 
 #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)
 #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)
 #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)
index db6e4ed1bbd8b1db31684e7cd28a9e216c952190..e612dc75d359e09df78e7a17f1ade35f3304c556 100644 (file)
 
 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<OFString>& 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);
 
index c551340fca43b23550a82dd06c04ffef375304b3..daa6d7accbec82f9e8af5eecd0787cccdd067b28 100644 (file)
@@ -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();
 
index 83b3b555cd830974b4d4766deac887d0b0560607..881c8b67e772e47be9e5ff06688ce3a6f508cd6f 100644 (file)
@@ -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; };
 
index 9dd4bccd55daa81a3ea38187c9c225e9826f71d5..8d15f2bcd607f0d46690164734d48bfb6f38aec9 100644 (file)
@@ -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
index 24b9ca0818bc0610165c98063941888baa447057..5fe902792e3688e90416c704da2fd054d5d04c72 100644 (file)
@@ -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<OFString>& 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,
index 4b1368184dbdc48cb06db95d5ec9c6a7db7eb4d0..36b321e5edb1e5541a441555234b7413b54c2c38 100644 (file)
@@ -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<OFString>& suppSOPs);
 
index 2a9a6da9d858cb11c4f20d748f6f7ad4e69e440b..8980297914b65b0f470f2426e12d40a084158df8 100644 (file)
@@ -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<OFString>& suppSOPs);
 
index f25cc2c067aea422a9938ad20a1db5333a01c870..0a4edf58bbe5f02697c835bee61a97e9665292d5 100644 (file)
@@ -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<OFString>& suppSOPs);
 
index 799814024374910ee76c1821431e1e1771c759ad..4bbf34983eef6668a76c4b5c877e03f1e49e3bc5 100644 (file)
@@ -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<OFString>& suppSOPs);
 
index aa44b51ecd557ffb0ff01447d50b7063c13001d4..fb5baa13cbabbcf05722912b729b858421d60544 100644 (file)
@@ -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++;
     }
 }
index 65c8d3a6482ecfe7cec93007e2319dac926656b3..c0c9d5541b89d713d05b6aeae39f16ad6638464e 100644 (file)
@@ -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,
index f62e482472f95aaa6bf18e15e3b99bbb153eadcf..b92f7630d81cbf86bbfa2c958515c854e31d1603 100644 (file)
@@ -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
  *
  */
 
index ad3de6efeff5f9207aac52014e3ee0c4dd0765af..107ac986f4915c75d84b7c7f458655fed833931f 100644 (file)
@@ -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
  *
  */
 
index 871c9d1394c6987ff8041a4a9482f0e55de43732..9abbe5a928f047390c53045955e97f779e15509f 100644 (file)
@@ -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
  *
  */
 
index 1f733d92ee4d57b132dd441c692409f29cc3dd99..4bfb430f49277d6cc790549ec79813f70468e02e 100644 (file)
@@ -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
  *
  */
 
index 64c3980ed8bbcca567a8a7fac1588e5ded28c5b6..317903bea076609e1b0ddfb5209c0635eaf92ded 100644 (file)
@@ -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
  *
  */
 
index e72282b3598cbe54e8fcf40aff045b85297cb690..dabd762533e8c3ec56b17e23d075396a7dd015bb 100644 (file)
@@ -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
  *
  */
 
index fd3d1b0b130bf17778e12abac2d8f72107064f4a..74ae08181ea0942f2f6011b6f73ad26ee32cc42b 100644 (file)
@@ -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
  *
  */
 
index 18c779d395db0c0849f5588c8c1f3cdc1c765700..322395d0b12da2ac4ceb9ec07e35068b73043f6f 100644 (file)
@@ -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
  *
  */
 
index f95b593ee08465367244762ad7f9fc41c12684d2..48afde06da737fc9118edc4f21d757e8e9426523 100644 (file)
@@ -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
  *
  */
 
index af6534177fb879349a96e77eee2c64c72df4221c..f0ca8e26343c71939a69bb6412f27b481b5361c5 100644 (file)
@@ -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
  *
  */
 
index 7d06b791114d3865fda202ed0acddb9c970b85df..fff04f1432d9134d2338c32f7a100cb4cb18de22 100644 (file)
@@ -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,
index 5c6c2ba9c414afbd422223c4390b5765c88be23d..7668915249cbfb35e899607a60d1b0637a7ddc6e 100644 (file)
@@ -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
  *
  */
 
index 08fed967555063a4c2f4e86f1c8a78c89b98f155..a0017011e9fc05c9980217c8fabe0bf1077fa4a1 100644 (file)
@@ -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
  *
  */
 
index 2352083151f5de1101be09a026dcf618bb2f3c13..706fc3d8cce03dcebb3912961393787884c799af 100644 (file)
@@ -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
  *
  */
 
index 9f1a57af4af50dbae83098824d2e91fe00062b85..21774be5c8d09abf24b98f3e4a50e5055d3bc778 100644 (file)
@@ -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
  *
  */
 
index 8880c367a9d37cc575da38b84d45035e529c228d..0648a7420cb0fd0bc45f4b7acc39fe9d051944e3 100644 (file)
@@ -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
  *
  */
 
index 3dcf691aa40f35419a031738e212c4b952c8c8c8..f33e21ba64d223c53c1931b8619ae0426b02df73 100644 (file)
@@ -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
  *
  */
 
index 681330e5ea221311af55a86c5910b0300d610531..fe318cfe4ec019c611218b9be13a3afba0f2c2be 100644 (file)
@@ -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
  *
  */
 
index 634b0c35e0da898f049bc6108076fe7b9b7001de..92ba82c94a2d5e735233eed8629aa9e16b403590 100644 (file)
@@ -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
  *
  */
 
index 425bb4686bf8950e0ec0361015be07192d1118aa..bc0111687e5b65f250f6b95d23aa5da52d4aeab6 100644 (file)
@@ -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
  *
  */
 
index 5b4e86c3e60773e08d26291e78b4cf80402d1f30..e7ba5e43d13602f3213f1ed3e7a120a8a4aea194 100644 (file)
@@ -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
  *
  */
 
index 196314cbedd33ca00ba9a08385d0b28c4947341f..0ae8168bc78e4e0431b362be67fe37737ff7933d 100644 (file)
@@ -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
 #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")
index bc9f131a41c82dc5475c4e82376c040603b6bd77..75a23a90abd675c104c2442b23b120a957737bef 100644 (file)
@@ -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
  *
  */
 
index da66ad01882611d68df8e30038c6545bb18e05ac..09d414e915adb2ebda47d6ad3963f3cd12f5f1e4 100644 (file)
@@ -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
  *
  */
 
index 4d1d4feace6743878af00d6fb47b804e823dd409..3296bf638d2ab7b1333fc472aa733cfc92637d75 100644 (file)
@@ -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
  *
  */
 
index f1002e3d55689081454d887e75a68d7809242745..0663d1ea176d30101ce593ea929ea849bd7cf629 100644 (file)
@@ -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
  *
  */
 
index efb25d0cd5a6b22b9b9d53145d51cb3c5a86e1bf..5a9bd3310824a1d252aca58512069e1498e9af8c 100644 (file)
@@ -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
  *
  */
 
index 290e86b5988ebd1ea0c7e780b57179143cbc791e..e1ca5223c6c06a7eaeba7631c5f9c5659a159c1b 100644 (file)
@@ -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
  *
  */
 
index 3b7afeef1bd6dfaa86a983d544ccee0c52248eca..2e35940c0650a21293c395f03112c506dc218d07 100644 (file)
@@ -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
  *
  */
 
index d9c28b7825e0f2055874c20d39788d22c2de93eb..1b787b09bf0bc932c1eb9a4e0a1de6531e952bef 100644 (file)
@@ -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
  *
  */
 
index 8dbf0337cf530690c2e09c0e3bad23032e50dc6a..e63ceba9bb78e7460970ce97b08b17c018916780 100644 (file)
@@ -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
  *
  */
 
index 417f1f4a411a2c33bd78c90b98cd3f4cf03b1ee1..f1eed0881820c5740a318ec7a82a10a9098cabbb 100644 (file)
@@ -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
  *
  */
 
index cb324a227bb121d575f529499f1e38bb6e6dcf45..12771ac5a9b3a49a4f2e99ca3d490d5dba69f393 100644 (file)
@@ -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
  *
  */
 
index 89bb509273d7247d48eac39d7465a48f25931d43..c06c55daed7a84d242e10d69ce46a0f7d9442c7d 100644 (file)
@@ -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
  *
  */
 
index 9aa1ffa5b08cb6d336192c1c0c2a47ddc3e8e90c..9b3d0de15f6b4d0d60b0a85b21e742cbcfb96832 100644 (file)
@@ -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")));
index 164ec96fe0e03c713b437553c917d85581c49e2d..c2ca133a44e45a395fae00e8ee29d13cba063ad9 100644 (file)
@@ -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
  *
  */
 
index 0e4cbc030f9fb0273b804ad89d87ea1e5458b86e..be67b82633f545d5175a624edc08742b287d2175 100644 (file)
@@ -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
  *
  */
 
index 03807b5faff6ddee8ae8ed131276c1766c9c1b21..3527fc3f212f0ba076211cc8fb818fb4f162ab00 100644 (file)
@@ -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
  *
  */
 
index 9e9f3b492e934237c9f1e425a267b0bee141d85c..75975410a185ac0c43a9959a08e83525ae9fbfce 100644 (file)
@@ -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
  *
  */
 
index 2f943e2561ded0d6d149f04464b7a6d2ae3f7b07..f78b5f964d1d791801a3cd479cba6b076416629c 100644 (file)
@@ -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
  *
  */
 
index 61359337749b8d726a810dcb08a7212ecc1317ce..5e96fa68b43e34664f590c570b86f5bcce0d9edd 100644 (file)
@@ -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
  *
  */
 
index 7d67be9ee84367aa5d6967f3f85df121ee9e4eb3..c6b0ed3cb8c9baf2f9f285effbe5abbae47abea5 100644 (file)
@@ -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
  *
  */
 
index 3530caf93cb10e95d17c4b775d7da4f6efc1cb6b..468c01483de2cecc9d310b17e8dc40b25cdb7b07 100644 (file)
@@ -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
  *
  */
 
index 420676ae0eef207facb77c8ae31cfdec9e1416dd..936037057e03844af2f929be09f4ae31d1f0d52e 100644 (file)
@@ -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
  *
  */
 
index 4966c104aa88ca4777962b2290f7238d714adabe..66f34c7fdd08072525def3f10bb08c9c55314330 100644 (file)
@@ -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
  *
  */
 
index e0c8f5a7d7c8aea94f6d974f75a06a4146aa3174..6b93fc4c6dd90b36e2dce0b3fd462e2bf197adae 100644 (file)
@@ -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;