Commit 02792b5c authored by Gert Wollny's avatar Gert Wollny
Browse files

New upstream version 3.6.3

parent 65c00235
Loading
Loading
Loading
Loading
+52 −280
Original line number Diff line number Diff line
ANNOUNCEMENT

Version 3.6.2 of the OFFIS DCMTK (DICOM ToolKit) software is now available for
public release.  This release includes the following main changes over the
previous version 3.6.0:
Version 3.6.3 of the OFFIS DCMTK (DICOM ToolKit) software is now available for
public release.  This is a minor release that includes the following changes
over the previous version 3.6.2:

- DCMTK 3.6.2 builds correctly on older and up-to-date versions of GNU gcc
- DCMTK 3.6.3 builds correctly on older and up-to-date versions of GNU gcc
  (4.2.1 to 7.1.1) Clang (3.4.1 to 4.0.1),  Microsoft Visual Studio (2005 to
  2017) and SunPro CC (5.14 and 5.15).

@@ -18,308 +18,82 @@ previous version 3.6.0:
  - NetBSD on x86_64
  - OpenBSD on x86_64
  - OpenIndiana on x86
  - QNX on x86
  - Solaris on x86
  - Windows (and MinGW) on x86_64 and x86

  For a complete list of tested systems and compilers, see the INSTALL file.

- The CMake build system is now considered as mature as our GNU Autoconf
  setup.  There are even some features that are only available when using CMake,
  for example exporting the build configuration in order to easily integrate
  DCMTK into other CMake based projects.

- It is now possible to build shared libraries (Linux) resp. dynamic link
  libraries (DLLs, Windows) using CMake and the "BUILD_SHARED_LIBS" option.
  DCMTK can even be compiled into a single shared library (e.g. "dcmtk.dll")
  using the "BUILD_SINGLE_SHARED_LIBRARY" option.

- Added character set transcoding support:

  - Support for converting DICOM files, datasets and element values between
    different character sets (incl. code extension techniques).
  - Windows-specific support for converting between wide character encoding and
    e.g. UTF-8 or Latin-1.
  - Support for wide character strings (UTF-16) used for filenames by the
    Windows operating system.
  - Supports replacing the underlying character set conversion implementation as
    needed using either:
    - GNU libiconv,
    - International Components for Unicode (ICU) or
    - the iconv functions from the C standard library.
  - "dcmqrdb" allows matching queries with datasets using different character
    sets and response conversion.

- Integrated a unit test framework and added several unit tests to ensure that
  basic functionality (e.g. parsing DICOM data, network transmission) will
  never break.

- Updated CharLS to version 1.0 and log4cplus to version 1.1.0.

- Added cross compiling support for Windows and Android targets.  The Android
  emulator and Wine have been integrated into our CMake setup for running the
  run time configuration tests as required and (optionally) the unit tests.

- Refactored native STL integration:

  - Added arguments resp. variables to Autoconf and CMake replacing the old
    macros for choosing whether to use DCMTK's fallback or the native
    implementation of various STL features.  See the INSTALL file for more
    information about this.
  - Added configuration tests ensuring that the enabled STL features work as
    expected/required before actually using them.
  - Added unit tests to ensure whichever chosen implementation actually works.

- Added support for several C++11 (and newer) features and fallback
  implementations as required:

  - Added arguments resp. variables to Autoconf and CMake for enabling native
    C++11 support or DCMTK's own fallback implementations and workarounds.  See
    the INSTALL file for more information.
  - Added configuration tests that ensure that the compiler actually provides
    C++11 support before using it.
  - Added advanced memory management primitives OFunique_ptr and OFshared_ptr
    to support users in writing memory leak free code.
  - Added support for move semantics, e.g. to transfer the ownership of an
    OFunique_ptr.
  - Added OFnumeric_limits to query information about fundamental arithmetic
    types.
  - Added type traits (OFenable_if etc.) to support template meta-programing.
  - Added OFtuple as a more generic alternative to OFPair.
  - Added OFoptional to connect the state information of optional values with
    the actual value, e.g. for being used as function return value.
  - Added OFvariant, a type safe tagged union to store different objects in
    a single variable (not simultaneously) depending on runtime requirements.
  - Added unit tests to ensure all above mentioned features really work.

- Introduced platform independent defines for suppressing inappropriate compiler
  diagnostic output (i.e. "warnings").  This mechanism is used to locally
  suppress warnings that originate from the compiler misinterpreting the authors
  intention, e.g. warnings when intentionally mixing "class" and "struct" for
  template specialization to save typing "public" and "private".

- Introduced several new modules:

  - "dcmrt"    - implements support for the DICOM Radiation Therapy IODs
  - "dcmiod"   - eases IOD module composition and supports constraint checking
                 when reading and writing IODs and their modules.
  - "dcmfg"    - allows to represent Functional Groups in the source code.
  - "dcmseg"   - implements the segmentation IOD based on "dcmiod" and "dcmfg".
  - "dcmtract" - offers a dedicated API to create and read DICOM Tractography
                 Results objects (introduced in DICOM Supplement 181).
  - "dcmpmap"  - for creating, saving and loading DICOM Parametric Maps objects
                 (introduced with Supplement 172).
- GNU Autoconf has been deprecated, running 'configure' will now emit a
  warning by default.

- Further enhanced DICOM Structured Reporting (SR) module "dcmsr":

  - Added the "dcmsr/cmr" submodule implementing support for parts of the DICOM
    Content Mapping Resource (DCMR).
  - Added support for SR templates by introducing two general classes for root
    and non-root templates.
  - Also added support for CP-1031 (Support long code values) and CP-1417
    (Clarify use and declaration of private mapping resource).
  - Added support for the SR Template TID 1500 (Measurement Report) and included
    subordinated Templates (e.g. TID 1001, 1204, 1600, 1411).
  - Also added support for all required Context Groups and Code definitions, i.e.
    from DICOM, NCIt, SNOMED, UCUM, and UMLS coding scheme.
  - Added support for the new Acquisition Context SR IOD, Comprehensive 3D SR
    IOD, Implantation Plan SR Document IOD, Radiopharmaceutical Radiation Dose
    SR IOD, Simplified Adult Echo SR IOD and Spectacle Prescription Report IOD.
  - Further improved handling of incorrectly encoded DICOM SR documents.
  - Many further improvements in order to stay up-to-date with development of
    the DICOM standard and to make it easier to create, read, write, and modify
    SR documents.

- Introduced several new command line tools:

  - "getscu"   - a C-GET Service Class User.
  - "dcmsend"  - a Simple Storage Service Class User, based on new class
                 "DcmStorageSCU".
  - "dcmrecv"  - alternative to storescp with focus on easy use, based on new
                 class "DcmStorageSCP".
  - "dcm2json" - converts DICOM files to DICOM's official JSON encoding.

- Added threading functionality to DcmSCP via thread pool classes.

- Added new output format to dcm2xml: the Native DICOM Model according to
  part 19 of the DICOM standard ("Application Hosting").

- Added support for 16 bits per sample to PNG image export.
- Updated data dictionary, SOP Class and Transfer Syntax UIDs for the recently
  approved changes to the DICOM standard (i.e. Supplements and CPs), up to DICOM
  standard release DICOM 2017e.

- Significantly enhanced performance of the DICOMDIR code for reading and
  writing such files. Also added support for all new Directory Record Types.
- Updated automatically generated classes in module "dcmrt" (Radiotherapy) and
  "dcmsr" (Structured Reporting) based on DICOM 2017e.  Also updated the Code
  definitions from the supported coding schemes such as DICOM, NCIt and UMLS.

- Added support for new Return Key Attributes to the "wlmscpfs", which are
  required for the IHE Eye Care Workflow.
- Further enhanced DICOM Structured Reporting (SR) module "dcmsr":

- Introduced advanced parameterization methods for DCMTLS.
  - Added support for the Patient Radiation Dose SR IOD (Supplement 191).

- Improved data dictionary configuration options and handling.
  - Added support for further sub-templates to the existing class for TID 1500
    (Measurement Report), e.g. TID 300 (Measurement).

- Added support for new Value Representations "Other Double" (OD), "Other Long"
  (OL), "Unlimited Characters" (UC) and "Universal Resource Identifiers/Locators
  (URI/URL)" (UR).
  - Enhanced support for image entry descriptors in TID 1600 (Image Library),
    e.g. by adding a new method that allows for moving common image entry
    descriptors automatically to their respective image group.

- Added support for three new DICOS Storage SOP Classes from the DICOM-related
  DICOS (Digital Imaging and Communications in Security) standard.
  - Added new method that allows for adding extra content items to extensible
    SR templates.

- Added additional matching keys to dcmqrdb and dcmwlm: StudyDate, StudyTime and
  IssuerOfPatientID.
  - Further enhanced iterating an SR document tree, e.g. by providing a new
    filter mechanism that allows for matching document tree nodes based on a
    variety of properties like value type and concept name.

- Updated data dictionary, SOP Class and Transfer Syntax UIDs for the recently
  approved changes to the DICOM standard (i.e. Supplements and CPs), up to DICOM
  standard release DICOM 2017b.
  - Added another gotoNode() method to tree and cursor class, which searches for
    a particular tree node by its value.

- Added support for additional MPEG4 transfer syntaxes to several command line
  programs.
  - Added "equal" and "not equal" comparison operators to all document tree node
    and underlying value classes as well as to the wrapper class for "SR content
    items".

- Enhanced support for DICOM Non-Patient Objects, e.g. allow for transferring
  them using the standard networking tools.
  - Updated mapping of the Defined Terms for Body Part Examined in the class
    that implements CID 4031 (Common Anatomic Regions) based on DICOM 2017e.

- DCMTK now supports compiling with OpenSSL 1.1.x; support for some older,
  insecure TLS cipher suites has been removed.
  - Many further improvements in order to stay up-to-date with development of
    the DICOM standard and to make it easier to use this module and its classes.

- The JPEG encoder now implements DICOM CP 1447, i.e. always writes a SOF1
  marker into the JPEG bitstream in extended sequential mode.
- Added options to findscu that extract the C-FIND response datasets to XML
  files (either a single file with all responses or separate files for each
  response, similar to the existing --extract option).

- The socket timeout used for send() and recv() is now configurable (at
  runtime); further fixes and enhancements to networking basics.
- Added option --socket-timeout to echoscu (same as for e.g. storescu).

- Revised implementation of class OFCondition in order to avoid issues with
  static initialization order.
- Consistently use the default value "MEDIUM" for Priority in all DIMSE request
  messages, i.e. for C-STORE, C-FIND, C-GET and C-MOVE.

- Fixed various issues that occurred after the official 3.6.0 release.
- Fixed various issues that occurred after the official 3.6.2 release.


Many people have contributed to this new release of DCMTK, appearing here in
alphabetical order.  Thank you very much for your support!

  Alexander Haderer <alexander.haderer@loescap.de>
  Alexander Karaivanov <alexander.karaivanov@karoshealth.com>
  Andrei Terechko <andrei@vectorfabrics.com>
  Andrey Fedorov <andrey.fedorov@gmail.com>
  Anne-Gaelle Berge <anne-gaelle.berge@kereval.com>
  Bhuvan Bose <bhuvanbose86@gmail.com>
  Bill Lorensen <bill.lorensen@gmail.com>
  Brad Jascob <bjascob@msn.com>
  Bruno Milutin <bmilutin@digithurst.de>
  Carmen Avram <carmen@pixeldata.ro>
  Christian Fremgen <Christian.Fremgen@ith-icoserve.com>
  Christian Herz <cherz@bwh.harvard.edu>
  Christian Wetzel <wetzel@phoenix-pacs.de>
  Daniele Giunchi <d.giunchi@scsitaly.com>
  David Clunie <dclunie@dclunie.com>
  Detlev Hohmeier <detlev.hohmeier@meditec.zeiss.com>
  Dimitri Papadopoulos <dimitri.papadopoulos@cea.fr>
  Dr. Martin Korp <Martin.Korp@ith-icoserve.com>
  Dr. Michael Heber <mheber.aup@t-online.de>
  Eric A. Borisch <eborisch@macports.org>
  David Flade <fladedavid@gmail.com>
  Fred Stegemann <fred.stegemann@fstsoft.de>
  Fu Peng <fupeng@gmail.com>
  Gareth Sylvester-Bradley <garethsb@gmail.com>
  Gary Carter <gary.carter@eigen.com>
  Gigante <fgigante@imsitaly.com>
  Grzegorz Chlebus <grzegorz.chlebus@mevis.fraunhofer.de>
  Hanno Hugenberg <hanno.hugenberg@gkmedsys.de>
  Hans J. Johnson <hans-johnson@uiowa.edu>
  Hans Kluijtmans <hans.kluijtmans@topcon.eu>
  Hector Marco <hecmargi@upv.es>
  Heyo Spekker <spekker@icsmed.de>
  Hüseyin Kozan <posta@huseyinkozan.com.tr>
  Ing-Long Eric Kuo <draconpern@hotmail.com>
  Domen Soklic <domen.soklic@cosylab.com>
  GwanYeong Kim <gy741.kim@gmail.com>
  Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
  Jeroen Eggermont <J.Eggermont@lumc.nl>
  John Stark <jstark@therapixel.com>
  Julien Finet <julien.finet@kitware.com>
  Kent Williams <norman-k-williams@uiowa.edu>
  Kornelius Sohn <k.sohn@starc-medical.de>
  Lin Qi Ruan <rlq1969612634@gmail.com>
  Marco Nolden <m.nolden@dkfz-heidelberg.de>
  Mario Ceresa <mrceresa@gmail.com>
  Markus Konrad <markus.konrad@et-innovations.org>
  Markus Mertens <markus.mertens@evkb.de>
  Martin Wenger <Martin.Wenger@klinikum-hef.de>
  Mathieu Malaterre <mathieu.malaterre@gmail.com>
  Matt McCormick <matt.mccormick@kitware.com>
  Michael Knopke <knopkem@gmail.com>
  Michael Schinner <Michael.Schinner@ith-icoserve.com>
  Michal Spacek <tupinek@gmail.com>
  Niels Dekker <C.E.Dekker@lumc.nl>
  Paolo Marcheschi <paolo.marcheschi@ftgm.it>
  Per Inge Mathisen <perim@sonowand.com>
  Peter Hille <peter@das-system-networks.de>
  Joerg Koenig <joerg.koenig@zeiss.com>
  Michael Craggs <Michael.Craggs@ith-icoserve.com>
  Peter Klotz <Peter.Klotz@ith-icoserve.com>
  Pietro Cerutti <gahr@FreeBSD.org>
  Rasmus Christian Pedersen <zerhacken@yahoo.com>
  Richard Flay <richardf@acres.com.au>
  Robert Habrich <habrich@image-systems.biz>
  Stacy Loesch <Stacy.Loesch@varian.com>
  Takeo Satomi <takeo.satomi@gmail.com>
  Tamas Nemeth <tnemeth@erad.com>
  Thomas Puckett <puckett_thomas@hotmail.com>
  Thomas Sondergaard <thomas.sondergaard@karoshealth.com>
  Tiago D'Agostini <tiago.dagostini@pixeon.com>
  Tilman Vogel <tilman@circlecvi.com>
  Timothy Pitt <tim@vaquita.co.uk>
  Waldir Pimenta <waldir.pimenta@gmail.com>
  Wang Qiang <wq_net@163.com>
  Yves Neumann <neumann@image-systems.biz>

  Forum user "AlexanderLysenko"
  Forum user "andreasb"
  Forum user "angad"
  Forum user "aprogrammer"
  Forum user "bibble_235"
  Forum user "budric"
  Forum user "chaircrusher"
  Forum user "coach4ae"
  Forum user "dimitri"
  Forum user "flang"
  Forum user "Geof"
  Forum user "gerhardh"
  Forum user "ghleclerc"
  Forum user "HackerNeo"
  Forum user "henry"
  Forum user "Hua Cong Danh"
  Forum user "ichimura.t"
  Forum user "ionut.vaida"
  Forum user "jacobf"
  Forum user "jacobscolin"
  Forum user "jakecobb"
  Forum user "kosborn"
  Forum user "kron24"
  Forum user "lars_matthaeus"
  Forum user "Luuk"
  Forum user "maleike"
  Forum user "martinrame"
  Forum user "Matterhorn"
  Forum user "merlin"
  Forum user "michael12345"
  Forum user "nikkoara"
  Forum user "nmoraes"
  Forum user "oblivion81"
  Forum user "oxymoron"
  Forum user "Paul Groot"
  Forum user "Per"
  Forum user "poupofa"
  Forum user "psih128"
  Forum user "Rich in Soquel"

  Helmut Steiner
  Max Smolens
  Martin Strunz
  Sergei Khlutchin

  Forum user "Hafiz Rafeeq"
  Forum user "sfzhang"
  Forum user "Shaeto"
  Forum user "spasmous"
  Forum user "st80rules"
  Forum user "Tim"
  Forum user "tpalagyi"
  Forum user "vlad"
  Forum user "vsalomoni"
  Forum user "wollet88"
  Forum user "wrenashe"
  Forum user "xcoder"
  Forum user "ymartelli"
  Forum user "yueran"
  Forum user "Yves Neumann"
  Forum user "zaq"

Members of the DCMTK Team who have worked on this release are
(in alphabetical order):
@@ -333,8 +107,6 @@ Student associates:

  Nikolas Goldhammer <nikolasgoldhammer@gmail.com>
  Sebastian Grallert <Grallert.Sebastian@web.de>
  Thorben Hasenpusch <tpuschel@fastmail.com>
  Uli Schlachter <psychon@znc.in>

Also see CREDITS file for projects and companies who have been generously
supporting DCMTK.
@@ -343,4 +115,4 @@ The DCMTK software can be downloaded via:

  http://dicom.offis.de/dcmtk or http://www.dcmtk.org/

OFFIS e.V., Oldenburg, Germany, 2017-07-14
OFFIS e.V., Oldenburg, Germany, 2018-02-05
+2 −1
Original line number Diff line number Diff line
@@ -86,7 +86,8 @@ IF(WIN32 AND NOT MINGW)
      SET(OPENSSL_BINDIR "${WITH_OPENSSLINC}/bin")
      SET(OPENSSL_INCDIR "${WITH_OPENSSLINC}/include")
      SET(OPENSSL_LIBDIR "${WITH_OPENSSLINC}/lib")
      SET(OPENSSL_LIBS debug "${OPENSSL_LIBDIR}/dcmtkssl_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkssl_o.lib" debug "${OPENSSL_LIBDIR}/dcmtkcrypto_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkcrypto_o.lib")
      # starting with OpenSSL 1.1.0, the Windows crypt32 library is needed for a static link of OpenSSL.
      SET(OPENSSL_LIBS "crypt32" debug "${OPENSSL_LIBDIR}/dcmtkssl_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkssl_o.lib" debug "${OPENSSL_LIBDIR}/dcmtkcrypto_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkcrypto_o.lib")
      MESSAGE(STATUS "Info: DCMTK OPENSSL support will be enabled")
      SET(WITH_OPENSSL 1)
    ELSE(WITH_OPENSSLINC) # turn off library if library path not set
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
SET(ENV{DCMDICTPATH} "@DCMDICTPATH@")

EXECUTE_PROCESS(COMMAND
    "${DCMTK_CTEST_TESTCASE_COMMAND}" ${DCMTK_CTEST_EXTRA_ARGUMENTS} "${DCMTK_CTEST_TEST_NAME}"
    "${DCMTK_CTEST_TESTCASE_COMMAND}" $ENV{DCMTK_CTEST_EXTRA_ARGUMENTS} "${DCMTK_CTEST_TEST_NAME}"
    RESULT_VARIABLE RESULT
)

+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ SET(DCMTK_ANDROID_EMULATOR_INSTANCE "$ENV{DCMTK_ANDROID_EMULATOR_INSTANCE}")

# Run the actual testcase on the remote device
DCMTK_ANDROID_SHELL(DCMTK_ANDROID_EMULATOR_INSTANCE
    COMMAND "LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${ANDROID_TEMPORARY_FILES_LOCATION}" "DCMDICTPATH=${DCMDICTPATH}" "${DCMTK_CTEST_TESTCASE_COMMAND}" ${DCMTK_CTEST_EXTRA_ARGUMENTS} "${DCMTK_CTEST_TEST_NAME}"
    COMMAND "LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${ANDROID_TEMPORARY_FILES_LOCATION}" "DCMDICTPATH=${DCMDICTPATH}" "${DCMTK_CTEST_TESTCASE_COMMAND}" $ENV{DCMTK_CTEST_EXTRA_ARGUMENTS} "${DCMTK_CTEST_TEST_NAME}"
    WORKING_DIRECTORY "${ANDROID_TEMPORARY_FILES_LOCATION}"
    RESULT_VARIABLE RESULT
)
+1 −1
Original line number Diff line number Diff line
@@ -3,4 +3,4 @@
#

SET(ENV{DCMTK_CTEST_EXTRA_ARGUMENTS} "-x")
EXECUTE_PROCESS(COMMAND ${CMAKE_CTEST_COMMAND})
EXECUTE_PROCESS(COMMAND ${CMAKE_CTEST_COMMAND} -C "${CONFIG}")
Loading